Ajax并返回由PHP GD创建的图像

我有一个PHP脚本,用PHP GD生成一个图像。 生成映像后,它会保存它,并在Ajax调用时发送此输出:

imagejpeg($img_data, 'filename.jpg'); echo ''; 

之后,图像显示在页面上,一切都很好。 但是,我不想每次都创建一个图像。 有没有什么方法可以通过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); } }); 

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); }).... 

这是解决方案:

PHP代码:

 ob_start(); imagejpeg($im); $outputBuffer = ob_get_clean(); $base64 = base64_encode($outputBuffer); echo ''; 

在用户端(在JQuery中):

 success: function(data) { $('#somediv').append(data); } 

你应该在做echo $img_data;之前修改标题echo $img_data;

 header("Content-Type: image/jpeg"); header("Content-Length: " .sizeof($img_data));