新しく質問する

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

役に立った:1件
  • 質問者:kyokyokk
  • 投稿日時:2008/08/11 23:58
  • 困り度:困ってます

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を勉強し始めて日が浅いので、見当違いなことを聞いているかも知れませんが、よろしくおねがいします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)
  • 参考になった:0件

No.2ベストアンサー20pt

imagedestroyはしなくても良いのではないでしょうか?
外してたら、すみません。

少し気になるのが、
header("Content-Type:image/jpeg");

header('Content-type: image/jpeg');
の方が、よいかと思います。

通報する

この回答へのお礼

ありがとうございます。
header('Content-type: image/jpeg');に変えて、imagedestroy($re_image);を外して試してみたのですが、やはり画像が表示されませんでした。

このままやっていても埒が明かないので、縮小した画像にランダムに名前を付けて保存し、それを呼び出すというようにしました。
ご迷惑おかけしました。

  • 参考になった:0件

No.1ベストアンサー10pt

  • 回答者:se-nabe
  • 回答日時:2008/08/12 16:47

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

通報する

この回答へのお礼

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

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ