3

PHP GD Libraryを使用してPNG画像を作成し、ユーザー入力に基づいてテキストを追加しました。保存する代わりに、ユーザーが変更をコミットするまで表示したいと思います。

彼らはいくつかの単語を追加したり、フォントを変更したりするので、変更を表示する必要があります。これを機能させる唯一の方法は、画像をサーバーに保存することですが、ユーザーが行ったわずかな変更の数十に対して、数十の画像を保存します。ファイルを上書きするか、適切な場合は以下の方法を実行する必要があります。アイデアは、操作する一時ファイルを作成することです。

では、処理した他の変数と同じように、それを「成功コールバック」に送信するにはどうすればよいですか?使い方を読んだob_get_contents()のですが、どういうわけか一時的に画像を保存することになっていると思います。これはどのように機能しますか?

フォームページ(処理中のPHPページではない)に画像を表示するにはどうすればよいですか?これは、ユーザーがコミットするまでサーバーに保存されないようにするための良い計画ですか?

// more image manipulation code above

ob_start();
imagepng( $my_img );
$imageData = ob_get_contents();
ob_clean(); 

$results = array(
'price' => $_GET['priceX'],
'imageprocessed' => base64_encode($imageData) <<<  EDIT change based on answer.
);

$json = json_encode($results);
echo $json;
?>

編集:これは、base64_encodeを受信するための成功コールバックで使用されるJavaScriptです。

<script type="text/javascript">
function doGen(){
var priceX = $('#couponprice').val();

$.get('processimage.php',
{priceX:priceX}, 
function(data) {
var imgFldr = '/images/';                   
data = $.parseJSON(data);
$('.price-placeholder').html(data.price);
var imageCallback = (data.couponnamecall);
$('#couponbuilt img').attr('src', 'data:image/jpeg;base64,' + imageCallback);
// ...
});
return false;
};
</script>   
4

2 に答える 2

10

できbase64encode($imageData)ます。

クライアント側では、base64 でエンコードされたデータからデータ URL を作成し、それをイメージ タグの src 属性に渡すだけです。

私はそれをテストしました:

PHP コード

ob_start();
imagepng($my_img);
$imageData = ob_get_contents();
ob_clean(); 

$results = array(
  'price' => $_GET['priceX'],
  'image' => base64_encode($imageData)
);

$json = json_encode($results);
echo $json;

Javascript コード:

$.getJSON("/ajax-script.php", function(data) {
  $("#element").append($("<img />").attr('src', 'data:image/png;charset=utf8;base64,' + data.image));
});
于 2012-07-30T13:12:51.190 に答える
0

そのためにjsonやXHR(「ajax」)は必要ありません。

最も簡単な方法は、オンザフライでイメージを作成し、オンザフライでイメージを生成する PHP ファイルにイメージの src を変更して新しいイメージを要求することです。

これはいくつかの方法で行うことができます。最も簡単な方法は次のとおりです。フォームのデータがそれほど多くない場合 (キロバイトのテキストがない場合など)、プレビュー画像の src を PNG 生成スクリプトの URL に設定するだけです。したがって、img src は PHP スクリプトであり、保存された静的 png ファイルではありません。

受信 PHP スクリプトが正しいヘッダー (image/png) を送信していることを確認してください。これで準備完了です。URL を組み立てて、それを img src に入れるには、JavaScript が必要です。

画像を永続的にしたい場合は、storepermanent=yes のように、名前と値のペアを URL に追加するだけです。

于 2012-07-30T13:24:33.310 に答える