由PHP GD创建的Ajax和返回图像
我有一个PHP脚本,它使用PHP GD生成一个图像。生成图像后,保存图像,并在Ajax调用时发送此输出:由PHP GD创建的Ajax和返回图像,php,ajax,jquery,php-gd,Php,Ajax,Jquery,Php Gd,我有一个PHP脚本,它使用PHP GD生成一个图像。生成图像后,保存图像,并在Ajax调用时发送此输出: imagejpeg($img_data, 'filename.jpg'); echo '<img src="/filename.jpg.jpg">'; 但运气不好,唯一能得到的就是一些 以下是我的jQuery Ajax代码: $.ajax({ type: 'POST', data: { action: 'update_image', //some ins
imagejpeg($img_data, 'filename.jpg');
echo '<img src="/filename.jpg.jpg">';
但运气不好,唯一能得到的就是一些
以下是我的jQuery Ajax代码:
$.ajax({
type: 'POST',
data: {
action: 'update_image',
//some instructions for creating the image
},
url: 'script.php',
success: function(msg) {
$('#somediv').append(msg);
}
});
base64对图像进行编码并返回,然后您可以执行
在PHP方面
$image = base64_encode($imageGDRender);
echo json_encode(array('image'=>$image));
这将把json返回到jquery
然后在ajax方面
$.ajax({
...
success: function(data) {
var base64Image = data.image;
...now put it in your image
$('#image').attr('src','data:image...'+base64Image);
})....
在执行
echo$img_数据之前,您应该修改标题代码>
header("Content-Type: image/jpeg");
header("Content-Length: " .sizeof($img_data));
以下是解决方案:
PHP代码:
ob_start();
imagejpeg($im);
$outputBuffer = ob_get_clean();
$base64 = base64_encode($outputBuffer);
echo '<img src="data:image/jpeg;base64,'.$base64.'" />';
当我这样做时,结果是一样的,没有任何变化。我不确定如何实现这一点?我可以在谷歌上搜索这个,我需要一些“json编码”来实现这个或类似的功能?Tnx,但我得到的仍然是“未定义”的图像数据,而不是图像数据。但这帮我找到了正确的地方。我将解决方案放在下面的答案中。请注意,您将丢失缓存
ob_start();
imagejpeg($im);
$outputBuffer = ob_get_clean();
$base64 = base64_encode($outputBuffer);
echo '<img src="data:image/jpeg;base64,'.$base64.'" />';
success: function(data) {
$('#somediv').append(data);
}