• ベストアンサー

リサイズした後の画像の表示ができません

お世話になっています。 登録画面でアップロードした画像を確認画面でサイズを小さくしてから Mysqlに保存するようなものを作っています。 アップロードした画像を縮小せずそのままなら表示、登録することはできましたが、 縮小したあとの画像が確認画面で表示できません。 画像の名前を変更し、フォルダに移動しています。 $smlwidth = 200; $smlheight = 150; $smlphotofile =""; $imagefile = substr($mictime, 11) . substr($mictime,2,6) . ".jpg"; $infimgfile = getimagesize($uploadfile); $srcimgfile = imagecreatefromjpeg($uploadfile); $newimgfile = imagecreatetruecolor($smlwidth, $smlheight); imagecopyresampled($newimgfile, $srcimgfile,0, 0, 0, 0, $smlwidth, $smlheight,$infimgfile[0], $infimgfile[1]); if (!move_uploaded_file($newimgfile, "$PHOTOTMP$imagefile")) { $errmsg .= "写真ファイルのアップロードに失敗しました。<BR>";} 省略 print"<IMG src='$PHOTOTMP$imagefile' >"; 確認画面では「×」となっています。画像のプロパティを見ると、 フォルダへの移動はうまくいっているようなのですが、 種類やサイズが使用不可となっています。 どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

$newimgfileはメモリ上に構築されたGDイメージ(のリソースID)なのでファイルではありません。 imagejpeg($newimgfile, $PHOTOTMP.$imagefile);でファイルに書き出す必要があります。

99Micchi
質問者

お礼

php504さん、ご回答ありがとうございました。 >imagejpeg($newimgfile, $PHOTOTMP.$imagefile); を追加したところ表示できました! ファイルに書き出すの意味もわかりました。 本当にありがとうございます!

その他の回答 (1)

  • angband
  • ベストアンサー率51% (86/168)
回答No.1

タイミングの問題だと思います。 $newimgfile = imagecreatetruecolor($smlwidth, $smlheight); の中でファイルに書き込んだとしても実際には即座に書き込みが 完了するわけではないですよね。そのためにsyncコマンドやPHPにも flush関数があるわけです。書き込みよりも早くprintがなされて いるのではないかと思います。

99Micchi
質問者

お礼

angbandさん、ご回答ありがとうございました。 syncコマンドというのは初めて聞いたので調べてみます。 >実際には即座に書き込みが完了するわけではないですよね。 というのはわかっていませんでした・・・ きちんと理解しなければ!と思いました。

関連するQ&A