2

PHPGDで画像を生成するPHPスクリプトがあります。画像を生成した後、それを保存し、Ajaxによって呼び出されたときにこの出力を送信します。

imagejpeg($img_data, 'filename.jpg');
echo '<img src="/filename.jpg.jpg">';

その後、画像がページに表示され、すべてが正常になります。でも、毎回イメージを作りたくはありません。Ajaxのみ$raw_dataの文字列で戻って画像を表示する方法はありますか?私はこのように試しました:

echo $img_data;

しかし、運が悪い、返されるのはほんの少しですか?

これが私のjQueryAjaxコードです:

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

3 に答える 3

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);
    })....
于 2012-08-27T14:57:58.437 に答える
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);
}
于 2012-08-27T16:19:23.687 に答える
0

を行う前にヘッダーを変更する必要がありますecho $img_data;

header("Content-Type: image/jpeg");
header("Content-Length: " .sizeof($img_data));
于 2012-08-27T15:01:44.143 に答える