• 締切済み

GD(php)での image関数 イメージ関数でブラウザ出力が出来ない

下記ソースのimage.phpというファイルを作りました。 直接http://url/image.phpでアクセスすると画像が表示されません。 <? header("Content-Type: image/png"); $image = imagecreate(120,120); $black = imagecolorallocate($image,0,0,128); $yellow = imagecolorallocate($image,255,255,0); imageline($image,10, 60, 110, 60, $yellow); imagepng($image); imagedestroy($image); ?> imagepng($image);を imagepng($image,"test.png"); に変えたら、正しく同フォルダーにtest.pngが出力され、こちらは問題ないファイルとなっています。今回の処理ではphpを画像ファイルとして扱いたいのですが、 このケースで考えられる原因教えてください。 参考までにtest.htmlに <html><head><title>test</title> <img src="image.php"></body></html> と書いても結果は同じく画像表示が出来ませんでした。 <html><head><title>test</title> <img src="test.png"></body></html> では表示出来ます。

  • PHP
  • 回答数4
  • ありがとう数4

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

お使いのサーバーは、どこでしょう? フリースペースだと広告用htmlタグが自動挿入されていたりしませんか? ブラウザへのphp出力(エラー画像状態)を、一旦画像保存して、そのファイルをテキストエディターで無理矢理開くと、広告用タグが入っていたりします。エラー文が入ってる時も画像としては表示できないので、この方法でエラー内容が解ります。 広告挿入の場合は、そのサーバーでの広告用タグ自動挿入抑止法を調べないとなりません。 サイト設置に関する説明のどこかに書いてあるはずだけど。

hiro524524
質問者

お礼

お恥ずかしながら自己解決出来ました。 原因は.HTACCESSの設定で、自動インクルードしている別のPHPがあったのですが、それの一番最後 ?> で閉じた後に改行コードが書かれていたことでした。 >?改行 改行 改行 これにより余計な改行がはき出されており結果として正しく表示がされていませんでした。 回答していただいた皆様ありがとうございました。

hiro524524
質問者

補足

サーバーは使えるネットのvpsサービスということろを使用しており、月額7000円程度です。 したがって、広告が自動挿入されていることはありません。 画像はブラウザーでは下記アイコンになっていて ┌─┐ │×│ └─┘ 右クリックを押しても保存出来ない状況です。

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

余計なヘッダーが付加されていたりとか HTTPヘッダが確認できるアドオンなどでヘッダを確認してみては Firefox なら Live HTTP Headers があります

hiro524524
質問者

補足

余計なヘッダーが保存した場合のファイルも表示出来なさそうですが、今回は保存したファイルは問題なく、 <? $image = imagecreate(120,120); header("Content-Type: image/gif"); imagegif($image); imagedestroy($image); ?> ここまで余計なのをとっても表示不可能状況です。 サーバー設定の方になにかしらの問題があるような気がしていますが。。。 >Firefox なら Live HTTP Headers があります >IEだと余計なヘッダー確認出来ないですよね?↑

noname#227352
noname#227352
回答No.2

No1です。 なんか勘違いしてました。ごめんなさい。

noname#227352
noname#227352
回答No.1

この記述だと$imageが何か判りませんよね? $image = "画像の所在パス"; この記述が無いからだと思います。 正しくは、下記のようになるかと header("Content-Type: image/png"); $image = "画像の所在パス"; $image = imagecreate(120,120);

関連するQ&A

  • GDが使えません・・・

    GDを使って、ためしに画像を作成してみたのですが、下のようなエラーが出てしまいます。 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test.php:9) in C:\xampp\htdocs\test.php on line 10 (以下、文字化けしていて読めません) test.phpのソースは <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>テスト</title> </head> <body> <?php header("Content-type: image/png"); $width = 320; $height = 240; $img = imagecreate($width, $height); imagecolorallocate($img, 0, 0, 0); imagepng($img); ?> </body> </html> 以上です。 phpinfo()で確認しましたが、ちゃんと PNG Support = enabled になっています。 どこがいけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで画像縮小

    質問します。自分は今PHPで画像の縮小をしようと思っています。 しかしうまくいきません。 コードは <htm> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>画像縮小</title> </head> <body> <?php $size = getimagesize("dl_button.png"); $image_in = imagecreatefrompng("dl_button.png"); $image_out = imagecreate( 90, 90 ); imagecopyresized( $image_out, $image_in, 0, 0, 0, 0, 90, 90, $size[ 0 ], $size[ 1 ] ); imagepng($image_out,"small.png"); imagedestroy( $image_in ); imagedestroy( $image_out ); ?> <img src = "dl_button.png" border = "0"> <img src = "small.png" border = "0"> </body> </html> となっています。 今のままだとエラーが出て、 「small.pngが見あたらない」と言われてしまいます。 ディレクトリは index.phpとdl_button.pngが同じ場所にあります。

    • ベストアンサー
    • PHP
  • PHP+GDについて

    PHPでGDを用いてPNGファイルを生成するスクリプトを作成したのですが、うまく動作しません。 <?php $filename = "G".date("Ymdhis").".png"; $im = imagecreate(550, 250) or die ("画像の作成に失敗しました"); $bg = imagecolorallocate($im, 255,255,255); $trans = imagecolortransparent($im, $bg); imageline($im, 60,0,60,140, $trans); $filedir="graph_img/".$filename; imagepng ($im,$filedir); imagedestroy($im); echo "作成完了!"; ?> このスクリプトを実行すると、PNGファイルは生成されるんですが、ファイルサイズが0で、スクリプトの実行がそこで中断されてしまいます。 何かよい解決方法はないでしょうか?よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPによる画像処理

    PHPを使ってJPG形式の画像をPNG形式に変換しようとしていますが、画像が添付のスクリーンショットのようなものになってしまいます。 以下がPHPスクリプトです。 ちゃんとPNG形式の画像を表示させるにはどうしたらよいのでしょうか。 詳しい方、どうかご教授ください。お願いします。 <?php $fpath='pictures/DSCN1458.JPG'; $scimg=imagecreatefromjpeg(realpath($fpath)); $cpimg=imagecreatetruecolor(200,150); $cl=imagecolorallocate($cpimg,255,0,0); imagecopyresized($cpimg, $scimg, 0,0,0,0,imagesx($cpimg),imagesy($cpimg), imagesx($scimg),imagesy($scimg)); header('Content-type', 'image/png'); imagepng($cpimg); imagedestroy($scimg); imagedestroy($cpimg); ?> <html> <head><title>image transform</title></head> <body > </body> </html>

    • ベストアンサー
    • PHP
  • PHP イメージ関数が正常に機能しない理由が分かりません。

    レンタルサーバー上に下記のようなPHPファイルをアップし、イメージ関数の使い勝手を簡単に試そうとしたのですが、 「画像ファイル"http;//example.com/test.php"は壊れているため、表示できませんでした。」 と表示されてしまい、上手くいきません。 コード: <?php $image = ImageCreate(250,70); ImageColorAllocate($image,0,0,0); header("Content-type: image/png"); ImagePNG($image); ?> headerの位置は、最初は先頭に置いていましたが、上手くいかないので、上記のように今のところしています。(深い意味はありません。) ネット上で色々調べたのですが、なかなかドンピシャな回答がなくて困っています。 作業環境は、winXp、dreamweaverCS3、 レンタルサーバは、xrea.com(仕様/ OS:Linux Apach:1.3.37 PHP:4.4.8) です。 ファイルの保存形式(文字コードなど?)に問題があるのでしょうか。 どなたか、アドバイスをお願いします。

    • 締切済み
    • PHP
  • レンタルサーバでPHPを動かす時

    http://tok2.com/というところで PHP(バージョン5)を動かそうとしています。 レンタルサーバで、PHPがつかえるということは Apacheや、PHPのインストールはいらず エディタなどで、test.phpなどファイルを作って サーバにあげるだけでいいのでしょうか? 単純な文字の表示などは、できるのですが 画像の生成をして表示など、できないことが多々あります。 プログラムの内容は、サンプルをそのままコピーして いるので間違ってはないと思うのですが・・・ 何か、ほかに必要なことがありましたら 教えていただけませんか? 画像の表示の内容は下記になります。 <?php header("content-type: image/png"); $image = imagecreate(100,100); $back = imagecolorallocate($image, 0, 0, 0); $red = imagecolorallocate($image, 255, 0, 0) imagepolygon( $image, array( 10, 80, 80,80, 80, 10 ), 3, $red ); imagepng($image); imagedestroy($image); ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのGD関数を用いた文字出力について

    以下の、PHPのGD関数を用いたスクリプトにおいて、「男女別表示」という 文字が出力されません。どこが間違っているのか教えていただきたいです。 ちなみに、MSゴシックのフォントは、自パソコンの中に存在しています。 <?php $im = imagecreatetruecolor(601, 801); // 1ピクセル多めなキャンバスを作る // タイトル $font = "c:\windows\fonts\msgothic.ttc"; $jstr="男女別表示"; $jstr=mb_convert_encoding($jstr, "utf-8", "auto"); $color = imagecolorallocate($im, 0, 0, 0); imagettftext($im,100,30,150,45,$color,$font,$jstr); // 出力し、メモリを開放します header('Content-type: image/png'); imagepng($im); imagedestroy($im); ?>

    • ベストアンサー
    • PHP
  • PHPのアニュアル17章をみて

    x.phpを <?php Header("Content-type:image/png"); $string=implode($argv," ");//変更場所 $im=imageCreateFromPng("x.png"); $orange=ImageColorAllocate($im,220,210, 60); $px=(imagesx($im)-7.5*strlen($string))/2; ImageString($im,3,$px,9,$string,$orange); ImagePng($im); ImageDestroy($im); ?> としx.htmlを <html><body> <img src="x.php?text"/> </body></html> とし画像x.pngとx.htmlとx.phpを /var/www/html/において 外部のPCからブラウザでx.htmlを呼び出したのですが絵が出ません $string=implode($argv," ");//変更場所 を $string="text"; に変更すれば絵が出ます このままでは引数を引き渡すことができません どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • image1.phpを表示するHTMLでイメージが表示されません。

    image1.phpを表示するHTMLでイメージが表示されません。 <!-- form1.html --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>form1</title> </head> <body> ※イメージを表示<br> <img src='image1.php' /> </body> </html> <!-- image1.php--> <?php chdir('data'); $path = 'image1.jpg'; $rpath = realpath($path); $size = filesize($rpath); $file = @fopen($rpath,'rb') or exit('ファイルが開けません。'); $img = fread($file,$size); fclose($file); header('Content-type','image/jpeg'); echo $img; ?> イメージとしてデータを送信するPHPと、そのPHPをイメージとして表示するHTMLです。 HTMLからアクセスしてイメージを表示させたいのですが、どのようにしたらいいか教えてください。

    • ベストアンサー
    • PHP
  • image関数で単色別サイズの画像を大量生成したい

    PHPのimage関数についての質問です graphディレクトリ内に、length:30px、color:(160,160,160)でwidthが異なる画像を大量生成しようと思います。 具体的にはwidth:1pxから2px、3px…と増えていき、30pxまで増えます。 ファイル名はwidth:1pxなら1graph.png、5pxなら5graph.png、などと名前を変えるものとして、以下のコードを作りました。 <?php for($i=1;$i<=30;$i++){ //画像のパスを生成 $gazou_path = "./graph/".$i."graph.png"; //画像の作成 $img = imagecreate($i, 25); //色の作成(背景色) $backcol = imagecolorallocate($img, 160, 160, 160); //背景色を塗る imagefilledrectangle($img, 0, 0,1, 25, $backcol); //画像出力 header("Content-type: image/png"); header("Cache-control: no-cache"); imagepng($img, "$gazou_path"); } ?> image関数自体、使用するのは今回が初めてで、 いろいろ調べてこのようなコードを作成してみたのですが、正常に動作いたしません。 create.phpというファイル名をつけて動作させてみましたが、 画像ファイル "http://localhost/create.php" は壊れているため、表示できませんでした。 というエラーが出てきます。 このような動作を行いたいのですが、正常に動作するコードをどなたか教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう