GDでPNG画像の合成を試みているのですが、imagedestroyを
GDでPNG画像の合成を試みているのですが、imagedestroyを使用しても画像がメモリから解放されていないのか
一度表示したPNG画像と同じファイル名で表示すると最初に表示した画像内容が表示されてしまいます。
例)最初の表示(表示ファイル名:test_img.png) → 一旦別の画面に遷移する。→同じファイル(test_img.png)の内容を更新→2度目の表示(表示ファイル名:test_img.png)で最初の画像内容で表示されてしまう。
2度目の表示をした際にキーボードのF5(更新)キーを押すと更新されたtest_img.pngが表示されます。
F5(更新)キーを押さずに同じファイル名であっても最新のファイルの内容を表示したいのですが、原因が全く分かりません。
分かる方がいましたら、お知恵を貸して下さい。
ちなみに画像を合成する処理のソースを抜粋して少し手を加えたものが下記のものです。下記のソース(sample.php)を使って次のようなテストを行いました。
最初の処理では下記のソースを実行します。次に下記のソースの
$img2 = imagecreatefrompng("http://beauty-program.com/base_hair.png");の行の指定ファイルをtest3.pngに変更して実行します。
表示内容は変わりませんが、F5(更新)キーを押すと表示内容が最新のものとなり変わります。
※下記のソースを実行して思うのは、単純にF5(更新)キーを押さないと処理が再実行されないのではないかと思いました。
しかし、実際に動かすソースについては、ファイル作成後、画面を遷移して同じファイル名を表示するので、
下記のソースでのテストのようにF5(更新)キーを押さなければ最新のファイル内容で再実行されないとは考えにくいです。
実際に動かすソースは、次のような順番で画像の合成や表示をしますが、更新したファイル内容で画面に表示するには、F5(更新)キーを押す必要があります。
(1)下記のような画像の合成処理でファイルを作り、一旦別の画面を経由してから、作成したファイルを画面に表示する。
(2)別の画像を合成して同じファイル名で内容を更新し、一旦別の画面を経由してから、作成したファイルを画面に表示する。
(3)表示するファイル名が同じであると、なぜか最初(上記(1)で表示したもの)の内容が表示される。
(4)F5(更新)キーを押すと表示内容が最新のもの(上記(2)で更新したファイルの内容)となり変わる。
ソース
http://beauty-program.com/sample.txt
※ソースを見る場合は、上記リンクをクリックすると実行結果が表示されますが、画像が表示された画面で「右クリック→ソースを表示」でご覧下さい。
■環境
windows vista
xampp/apache 2.2.4
PHP Version 5.2.3
お礼
お礼が遅くなり申し訳ありません。 参考にさせていただきます。