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

Som*_*neS 2 php ajax jquery php-gd

我有一个 PHP 脚本,可以使用 PHP GD 生成图像。生成图像后,将其保存,并在 Ajax 调用时发送以下输出:

imagejpeg($img_data, 'filename.jpg');
echo '<img src="/filename.jpg.jpg">';
Run Code Online (Sandbox Code Playgroud)

之后,图像显示在页面上,一切都很好。但是,我不想每次都创建一个图像。有什么方法可以让我仅通过 Ajax$raw_data字符串返回并显示图像吗?我尝试这样:

echo $img_data;
Run Code Online (Sandbox Code Playgroud)

但运气不好,返回的只是一些?。

这是我的 jQuery Ajax 代码:

$.ajax({
  type: 'POST',
  data: {
    action: 'update_image',
    //some instructions for creating the image
  },
  url: 'script.php',
  success: function(msg) {
    $('#somediv').append(msg);
  }
});
Run Code Online (Sandbox Code Playgroud)

rom*_*omo 5

对图像进行 base64 编码并返回,然后您可以执行以下操作<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA......." />

在 PHP 方面

$image = base64_encode($imageGDRender);
echo json_encode(array('image'=>$image));
Run Code Online (Sandbox Code Playgroud)

这会将你的 json 返回到你的 jquery

然后在ajax端

$.ajax({
    ...
    success: function(data) {
        var base64Image = data.image;
        ...now put it in your image
        $('#image').attr('src','data:image...'+base64Image);
    })....
Run Code Online (Sandbox Code Playgroud)