• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GDでPNG画像の合成を試みているのですが、imagedestroyを)

GDでPNG画像の合成で表示内容が更新されない問題の原因と解決方法

このQ&Aのポイント
  • GDでPNG画像の合成を試みている際に、imagedestroyを使用しても画像がメモリから解放されていないため、表示内容が更新されない問題が発生しています。
  • 画像を合成する処理において、表示ファイル名が同じであっても最新のファイル内容を表示するには、F5キーを押す必要があります。
  • この問題の原因は、処理が再実行されないことによるものではなく、imagedestroy関数の不適切な使用によるものです。適切に画像をメモリから解放するためには、imagedestroy関数を使用する際には注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

単純にブラウザのキャッシュです。 画像出力のプログラムのヘッダー関数にキャッシュさせないHTTPヘッダをふかするか、 呼び出し先のimgタグの呼び出し方を、 <img src="sample.php?<?php echo uniqid();?>"> 等と言うように常にユニークで意味を持たないクエリを付加するとIEでも毎回出力が更新されます

yanagihk
質問者

お礼

ご回答ありがとうございます。 ヘッダー関数にキャッシュさせない指定を次のようにしてみましたが、 改善されませんでした。 header("Cache-Control: no-cache"); header("Pragma: no-cache"); ですので、次にimgタグの呼び出し方を <img src="sample.php?<?php echo uniqid();?>"> として、phpのソース部分だけを抜き取ってsample.phpのファイルとしました。 残るHTMLタグは、test.phpというファイル名にして、このファイルを実行することで sample.phpを呼び出す処理をしてみました。 結果は、画像表示部分が×印になったので、imgタグの呼び出し部分を <img src="test_img.png?<?php echo uniqid();?>"> に変えて実行したら画像が表示されましたが、 右クリック→ソースを表示では<img src="test_img.png?<?php echo uniqid();?>">のまま なので画像の内容を更新して表示すると更新前の表示となります。 この状態でソースの表示をしてみると<img src="test_img.png?<?php echo uniqid();?>">のまま なので同じファイル名と認識されたのかな?と思ってます。 いただいたアドバイス通りにできていないのでしょうか?

関連するQ&A

専門家に質問してみよう