• ベストアンサー

PHPでGDライブラリを使って縮小した画像を直接表示したい

PHPでGDライブラリを使って、「image.jpg」という画像(800x222のJPEGファイル)を、GETで渡した幅に縮小させたくて、次のように書きました。 -----reimage.php--------------------- <?php header("Content-Type:image/jpeg"); $old_width=800; $old_height=222; $width = htmlspecialchars($_GET['w']); $height = ($old_height / $old_width) * $width; $source = imagecreatefromjpeg("image.jpg"); $re_image = imagecreatetruecolor($width,$height); imagecopyresampled($re_image,$source, 0, 0, 0, 0,$width, $height, $old_width, $old_height); imagejpeg($re_image); imagedestroy($re_image); ?> -------------------------- 他のHTMLファイルから <img src="reimage.php?w=480"> などとすると縮小された画像が表示されるのですが、直接「reimage.php?w=480」を開くと、文字化けした文字列が並んでいるばかりで画像が表示されません。 firefoxでMIMEタイプを見てみると、「text/html」になっています。 >header("Content-Type:image/jpeg"); の部分がうまくいっていないのだと思いましたが、どう直せばいいのか分かりません。 なお、サーバーはxreaの広告免除を使っています。 まだPHPを勉強し始めて日が浅いので、見当違いなことを聞いているかも知れませんが、よろしくおねがいします。

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

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

imagedestroyはしなくても良いのではないでしょうか? 外してたら、すみません。 少し気になるのが、 header("Content-Type:image/jpeg"); ↓ header('Content-type: image/jpeg'); の方が、よいかと思います。

kyokyokk
質問者

お礼

ありがとうございます。 header('Content-type: image/jpeg');に変えて、imagedestroy($re_image);を外して試してみたのですが、やはり画像が表示されませんでした。 このままやっていても埒が明かないので、縮小した画像にランダムに名前を付けて保存し、それを呼び出すというようにしました。 ご迷惑おかけしました。

その他の回答 (1)

  • se-nabe
  • ベストアンサー率34% (31/91)
回答No.1

はじめまして、 私もこの間画像のリサイズに困り。 いろいろ探した結果こんなソースがありましたので、 参考に見てみてはいかがですか?

参考URL:
http://phpspot.org/blog/archives/2008/02/phpclassimageph.html
kyokyokk
質問者

お礼

ありがとうございます。 簡単にリサイズが出来るようで、教えていただいたことはありがたいのですが、それですと、縮小した画像ファイルに保存してからそれを読み込むことになるかと思います。 僕がやりたいことは、PHPのファイルを指定してそれを画像ファイルとしてブラウザに認識させることです。 言葉足らずだったらすみません。

関連するQ&A