- ベストアンサー
jpeg画像を表示する方法
質問させてください。 ボタンが押されると画像が表示されるプログラムを作成したのですが、画像部分が文字化けされた文字として表示されます。 <html> <head> <title>おみくじ</title> </head> <body> <CENTER> <form method="GET" action="<?php echo $_SERVER['PHP_SELF'];?>"> <input type="submit" value="おみくじ" name="button"> </form> <?php if (isset($_GET["button"]) && $_GET["button"] !== "") { $image_in = imagecreatefromjpeg("img/omikuji.JPG"); header ( "Content-type: image/jpeg" ); imagejpeg ($image_in); imagedestroy($image_in); } ?> </CENTER> </body> </html> phpのソースを丸々別ファイルにするという方法もとったのですが、状況は変わりませんでした。 どなたかお知恵をお貸しください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
header出力の前にはソースはもちろん改行やBOMなど一切挿入できません。 php部分を前に持っていき、イメージ出力したらexitするのがよいのでは? <?php if (isset($_GET["button"]) && $_GET["button"] !== "") { $image_in = imagecreatefromjpeg("img/omikuji.JPG"); header ( "Content-type: image/jpeg" ); imagejpeg ($image_in); imagedestroy($image_in); exit; } ?> <html> <head> <title>おみくじ</title> </head> <body> <CENTER> <form method="GET" action="<?php echo $_SERVER["SCRIPT_NAME"];?>"> <input type="submit" value="おみくじ" name="button"> </form> </CENTER> </body> </html> なお、現在PHP_SELFはXSSの関係で推奨されないようです。 SCRIPT_NAMEでお試しください。
その他の回答 (2)
- BellBell
- ベストアンサー率54% (327/598)
HTML(テキストファイル)の中に、画像(バイナリファイル)が埋め込まれてしまいますのでおかしなことになります。 元のHTMLからimgタグで、おみくじ画像(たぶん凶とか大吉とか書かれた画像でしょうか?)を呼び出す形に変更します。 <html> <head> <title>おみくじ</title> </head> <body> <CENTER> <form method="GET" action="<?php echo $_SERVER['PHP_SELF'];?>"> <input type="submit" value="おみくじ" name="button"> </form> <?php //ボタンが押されたので、おみくじ画像を読み込むためのimgタグを出力する if (isset($_GET["button"]) && $_GET["button"] !== "") { //画像へのリンクを出力する echo "<img src=\"./omikuji_gazou.php\" />"; } ?> </CENTER> </body> </html> omikuji_gazou.php-----新規に作成するphp <?PHP //実際にはランダムで複数のJPEGファイルを選択する? $image_in = imagecreatefromjpeg("img/omikuji.JPG"); header ( "Content-type: image/jpeg" ); imagejpeg ($image_in); imagedestroy($image_in); ?> パスは適当なので、適切な形に合わせてください。
お礼
ありがとうございました。 こちらを参考にさせていただきました。
前半のHTML部分 <html> <head> ~ </form> が余計です。削除してください。 header("Content-type: image/jpeg"); はhttp通信の冒頭に置くものですので。
お礼
わかりました。 ありがとうございました。
お礼
わかりました。そういう仕様だったのですね。 ありがとうございました。