Отправка изображения на сервер
Добавлено: 02 мар 2015, 21:22
Стоит задача: из приложения отправлять на сервер изображения. Все сделано "по науке", на сервере возникает ошибка:
Warning: imagecreatefromstring() [function.imagecreatefromstring]: gd-jpeg: JPEG library reports unrecoverable error: in
Реализация в андроид клиенте:
На сервере скрипт принимает так:
* Ошибка в указанной строке: Warning: imagecreatefromstring() [function.imagecreatefromstring]: gd-jpeg: JPEG library reports unrecoverable error: in
Итак ругается, что не может из полученных данных собрать изображение.
В ходе исследований выяснил следующее:
1)Данные, которые отправляет клиент в encodedImage в полном объеме прилетают в $_img, без искажений.
2)Если изображение подвергнуть подобной обработке на сервере imagecreatefromstring прекрасно справляется со своей задачей. Изображение собирает назад без ошибок. Т.е. на сервере все в порядке.
3)неприятное, но вполне объяснимое наблюдение, если на сервере картинку преобразовать в строку(как в клиенте) то длина результата в два раза меньше.
Длина $data в два раза меньше чем encodedImage(он же $_img)
Народ! Выручай!
Что не так? или готовый код как отправить с клиента и принять на сервере?
Warning: imagecreatefromstring() [function.imagecreatefromstring]: gd-jpeg: JPEG library reports unrecoverable error: in
Реализация в андроид клиенте:
Код: Выделить всё
String query ="";
Bitmap bitmap;
//тут картинку подгружаю из галереи
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
query=query+"&img="+encodedImage;
//далее POSTом отправляю скрипту
Код: Выделить всё
$_img = $_POST['img'];
if($_img)
{
$imageData = base64_decode($_img);
file_put_contents ('test2.txt',$imageData);
$photo = imagecreatefromstring($imageData); // *тут возникает ошибка !!!!
imagejpeg($photo,'my.jpg',100);
}Итак ругается, что не может из полученных данных собрать изображение.
В ходе исследований выяснил следующее:
1)Данные, которые отправляет клиент в encodedImage в полном объеме прилетают в $_img, без искажений.
2)Если изображение подвергнуть подобной обработке на сервере imagecreatefromstring прекрасно справляется со своей задачей. Изображение собирает назад без ошибок. Т.е. на сервере все в порядке.
3)неприятное, но вполне объяснимое наблюдение, если на сервере картинку преобразовать в строку(как в клиенте) то длина результата в два раза меньше.
Длина $data в два раза меньше чем encodedImage(он же $_img)
Код: Выделить всё
$imagedata = file_get_contents("cover.jpg");
$data = base64_encode($imagedata);
Что не так? или готовый код как отправить с клиента и принять на сервере?