由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

我有一个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 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);
}