<?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);
?>
从代码中,有什么我做错了吗?谢谢!!! :))
答案 0 :(得分:8)
JSON MIME类型为application/json
,因此您无法发送image/jpeg
。
我认为将路径发送到图片会更容易,并让您的JavaScript向图像发出请求。
否则,我不确定你将如何在客户端重新创建它。建议将日期URI设置为base64编码,因此如果您坚持这样做,请首先致电base64_encode()
。
答案 1 :(得分:2)
$media = json_decode($_POST['media']);
您是如何将图像发送到此脚本的? PHP中的文件上传放在$ _FILES数组中,而不是$ _POST。除非你的客户端脚本做了一些时髦的事情,否则从client-&gt; php发送的文件永远不会出现在_POST中。
imagejpeg($image, '', 90);
此行会立即将图像输出为.jpg内容,而不会将其保存到文件中。然后你做
echo json_encode($response);
这将是一小段JSON数据。但是,您已经使用imagejpeg()
调用输出了图像的二进制数据,因此现在您将一些垃圾附加到您发送的文件中。
此外,$image
不是图像的二进制数据。它是GD系统的一个手柄,它是一种资源。在它上面做json_encode不会给你一个json'd .jpg,它会给你一个json'd某种PHP对象。
答案 2 :(得分:-1)
也许在构建和发送json响应之后使用imagedestroy()而不是之前
答案 3 :(得分:-1)
我使用这种方法从我的服务器获取图像:Get images from PHP server to Android