• 締切済み

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
  • 回答数1
  • ありがとう数2

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

ヘッダーを送っていません。 スクリプトの一番上に↓を挿入してください。 header("Content-type:image/png");

関連するQ&A

  • 画像合成について

    PHP4で画像の合成を行ないたいのですが、イマイチよくわかりません。具体的には、以下のような画像を作成して、その上に、数字の1を表示させる方法を検討しています。一応予め「1.png」という数字の1の画像を用意して下記で作成した画像の上に表示したいです。 よろしくお願いします。 $im = imagecreate(200,200) or die("error!\n"); $bg = imagecolorallocate($im , 70, 130, 180); $fg = imagecolorallocate($im , 255, 255, 255); //四角形を描く imagerectangle($im , 0, 0,200, 200, $fg) or die("error!\n"); mb_http_output("pass"); header("Content-Type: image/png"); imagepng($im); imagecolordeallocate($im, $bg); imagecolordeallocate($im, $fg); imagedestroy($im);

    • ベストアンサー
    • PHP
  • 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
  • レンタルサーバで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
  • PHPで半透明画像を作りたい

    半透明の画像(全てのピクセルのalphaが50の画像)を作りたいのですがうまくいきません。 元画像を$imとして、透明の背景($bg)を作成し、その上に alpha=50でコピーすれば、半透明になるか・・・と思ったのですが、 黒っぽい画像になってしまいます。 ($bgが透明ではなく、黒画像になっているようです。) 半透明の画像を作りたいときは、どのようにすれば作成できますでしょうか? $bg = imagecreatetruecolor(100, 100); imagefill($bg,0,0,imagecolorallocatealpha($bg,0,0,0,127)); imagecopymerge($bg, $im, 0, 0, 0, 0, 100, 100, 50); imagealphablending($bg, false); imagesavealpha($bg, true); header('Content-type: image/png'); imagepng($bg);

    • 締切済み
    • PHP
  • 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 header("Content-Type: image/png"); ?> <?php // 画像のサイズ $im = imagecreate(200,200); // キャンパスの大きさ $ix = 100; // 中心のx座標 $iy = 100; // 中心のy座標 $iw = 200; // 画像の横幅 $ih = 200; // 画像の縦幅 $rs = 270; // 開始角度(上:270) // データ $data[0] = 80; $data[1] = 50; $data[2] = 30; $data[3] = 20; $data[4] = 10; // 色の定義(データの数だけ必要) $white = imagecolorallocate($im,255,255,255); $red = imagecolorallocate($im,255,0,0); $yellow = imagecolorallocate($im,255,255,0); $lime = imagecolorallocate($im,0,255,0); $cyan = imagecolorallocate($im,0,255,255); $blue = imagecolorallocate($im,0,0,255); $cd = array($red,$yellow,$lime,$cyan,$blue); // 合計値の計算 $length = count($data); $m=0; for($i=0; $i<=$length; $i++) { $m += $data[$i]; } // 画像の描画 for($i=0; $i<$length; $i++) { $st = $rs; $rs += $data[$i] / $m * 360; if($rs >= 360) $rs -= 360; imagefilledarc($im,$ix,$iy,$iw,$ih,$st,$rs,$cd[$i],4); } imagepng($im); ?>

    • 締切済み
    • PHP
  • 「imagejpeg」(GD)で作成した画像を保存できない

    <?php // 空の画像を作成し、テキストを追加します $im = imagecreatetruecolor(120, 20); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); // content type ヘッダを、ここでは image/jpeg と設定します header('Content-type: image/jpeg'); // 画像を出力します imagejpeg($im); // メモリを開放します imagedestroy($im); ?> http://www.php.net/manual/ja/function.imagejpeg.php を参照して(そのまま利用して)、画像を作成して表示させてみました。 すると、これはその通り、うまく画像が表示されました。 しかし、 <?php // 空の画像を作成し、テキストを追加します $im = imagecreatetruecolor(120, 20); $text_color = imagecolorallocate($im, 233, 14, 91); imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); // 【追加分】: 画像を保存する imagejpeg($im, 'new.jpg'); // content type ヘッダを、ここでは image/jpeg と設定します header('Content-type: image/jpeg'); // 画像を出力します imagejpeg($im); // メモリを開放します imagedestroy($im); ?> のように imagejpeg($im, 'new.jpg'); を挿入して、その画像を保存しようとしているのですが、うまくいきません。(何も起こりません。) ちなみに、保存するためのディレクトリのパーミッションはその親ディレクトリを含め、(7,7,7)です。 「new.jpg(相対パス)」を「/www/.../new.jpg」のように絶対パスを使ってやっても結果は同じでうまくいきませんでした。 どのようにすれば、新しく作成した画像を保存できるのでしょうか? ちなみに、OSはLinux(Fedora10)です。もちろん、GDは先のテストで証明される通り、動作していると思います。 よろしくお願い致します。

    • 締切済み
    • 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

専門家に質問してみよう