отправить изображение и вернуть его с помощью json? - PullRequest
5 голосов
/ 28 февраля 2011

Я пытаюсь отправить изображение на веб-сервис в php, используя json, но клиент не может прочитать изображение .. когда я верну его обратно !!

<?php

//recieve the image

$media = json_decode($_POST['media']);

header('content-type: image/jpeg');
$image = imagecreatefromjpeg($media);
imagefilter($image,IMG_FILTER_GRAYSCALE);
imagefilter($image,IMG_FILTER_COLORIZE,100,50,0);
imagejpeg($image, '', 90);
imagedestroy($image);

//return image

$response = array(  
         'image' => $image
     );  
     echo json_encode($response);

?>

из кода, что-то я делаю не так?Спасибо!!!:))

Ответы [ 4 ]

8 голосов
/ 28 февраля 2011

Тип JSON MIME application/json, поэтому вы не можете отправить image/jpeg.

Я думаю, что было бы проще отправить путь к изображению, и ваш JavaScript сделал запрос к изображению.

В противном случае, я не уверен, как вы собираетесь воссоздать это на клиенте. Дата URI рекомендуется кодировать в base64, поэтому, если вы настаиваете на том, чтобы делать это так, сначала наберите base64_encode().

2 голосов
/ 28 февраля 2011
$media = json_decode($_POST['media']);

Как именно вы отправляете свое изображение в этот скрипт?Загрузка файлов в PHP помещается в массив $ _FILES, а не в $ _POST.Если ваш клиентский скрипт не делает что-то интересное, файл, отправленный с client-> php, никогда не будет отображаться в _POST.

imagejpeg($image, '', 90);

Эта строка будет выводить изображение в виде содержимого .jpg немедленно, без сохраненияв файл.Затем вы делаете

 echo json_encode($response);

, который будет небольшим фрагментом данных JSON.Однако вы уже вывели двоичные данные изображения с помощью вызова imagejpeg(), так что теперь вы добавляете некоторую часть мусора в файл, который вы отправляете.

Кроме того, $image не является двоичными данными изображения.Это дескриптор системы GD, которая является ресурсом.Выполнение json_encode не даст вам json'd .jpg, это даст вам какой-то объект json'd PHP.

0 голосов
/ 17 мая 2011

Я использовал этот подход для получения изображения с моего сервера: Получение изображений с сервера PHP на Android

0 голосов
/ 28 февраля 2011

Возможно, используйте imagedestroy () после сборки и отправки ответа json вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...