我有一个用PHP GD生成图像的PHP脚本。生成映像后,它会保存它,并在Ajax调用时发送此输出:
imagejpeg($img_data, 'filename.jpg');
echo '<img src="/filename.jpg.jpg">';
然后,图像显示在页面上,一切都很好。但是,我不想每次都创建一个图像。有没有什么方法可以通过Ajax返回$raw_data
字符串并显示图像?我试过这样:
echo $img_data;
但没有运气,只返回的东西是少数?
这是我的jQuery Ajax代码:
$.ajax({
type: 'POST',
data: {
action: 'update_image',
//some instructions for creating the image
},
url: 'script.php',
success: function(msg) {
$('#somediv').append(msg);
}
});
答案 0 :(得分:4)
base64对图像进行编码并返回该图像,然后您可以执行<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA......." />
在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);
})....
答案 1 :(得分:1)
这是解决方案:
PHP代码:
ob_start();
imagejpeg($im);
$outputBuffer = ob_get_clean();
$base64 = base64_encode($outputBuffer);
echo '<img src="data:image/jpeg;base64,'.$base64.'" />';
在用户端(在JQuery中):
success: function(data) {
$('#somediv').append(data);
}
答案 2 :(得分:0)
您应该在执行echo $img_data;
header("Content-Type: image/jpeg");
header("Content-Length: " .sizeof($img_data));