GDで生成した画像が文字列として表示される!

このQ&Aのポイント
  • PHP初心者の質問です。GDで生成したはずの画像が文字列として表示されてしまいます。解決策を教えてください。
  • さくらインターネットの共用サーバーでPHPを使っています。imagejpeg()で画像を生成したつもりなのですが、文字列として表示されてしまいます。どうすれば解決できるでしょうか。
  • ソースコードは、Header関数を使ってContent-typeをimage/jpegに指定し、imagecreate()で画像を生成しています。なぜか画像が文字列として表示されてしまいます。
回答を見る
  • ベストアンサー

GDで生成したはずの画像が文字列として表示される!

PHP初心者です。いろいろ調べたのですが解決策が見つかりません。なんとか解決策を教えてください。よろしくお願いします。 imagejpeg()で画像を生成したつもりなのですが、文字列として下のように表示されてしまいます。 ・・ JFIF ・>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality 棧C $.' ",# (7),01444 '9=82<.342棧C 2! !2222222 画像データがそのまま文字で打ち出されているようです。 こちらの環境は、 ・さくらインターネットの共用サーバー ・php.iniはデフォルトのまま ・文字コードは、euc-jp ソースは以下の通りです。 <?php Header ("Content-type: image/jpeg"); $test = imagecreate(200, 200); $bcolor = imagecolorallocate($test, 0, 0, 0); imagejpeg($test); imagecolordeallocate ($test,$bcolor); imagedestroy($test); ?>

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

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 <?php の前に、空白、改行を含む、なんらかの文字が入ってたりしませんか? ファイルの先頭から、1文字でもなにか入っていると、そのまま「Content-type: text/html」のヘッダが自動的に出力されてしまうので。 まずはそこからチェックされることをお勧めいたします。

sei8886
質問者

お礼

がるさん、ありがとうございます! ご指摘の通りでした。 自分で丸一日いろいろ調べても、解決できなかったのが、あっという間に解決してしまいました。 本当にありがとうございます。

関連するQ&A

  • 「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 Header("Content-type: image/gif"); $im = imagecreate(400,30); $black = ImageColorAllocate($im, 0,0,0); $white = ImageColorAllocate($im, 255,255,255); ImageTTFText($im, 20, 0, 10, 20, $white, "/path/arial.ttf", "Testing... Omega: Ω"); ImageGif($im); ImageDestroy($im); ?> --- 元々用意した画像に文字を入力して出力させる事は可能でしょうか?

    • ベストアンサー
    • PHP
  • [PHP]GDを利用した画像リサイズについて

    [PHP]GDを利用した画像リサイズについて GDを利用した画像リサイズ処理を行うクラスを作ったのですが、 以下のようなエラー(文字化け)が出てしまい画像出力することができません。 有識者の方、どうか知恵をお貸しください。宜しくお願い致します。 ????JFIF??;CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), quality = 75 ??C    $.' ",#(7),01444'9=82<.342??C  2!!22222222222222222222222222222222222222222222222222??II"?? ???}!1AQa"q2???#B??R??$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????? ???w!1AQaq"2?B???? #3R?br? -------- 以下省略 ---------- ◆作成したPHPファイル ・test.php <?php require_once 'Image.php'; $path = './400x300.jpg'; $r = new Image($path, 75); $r->resize(75); ?> ・Images.php <?php class Image{ var $new_width; var $path; function Image($path, $new_width){ @header("Content-type: image/jpeg"); $this->path = $path; $this->new_width = $new_width; } function resize(){ global $new_width; global $path; // 画像パス $image = imagecreatefromjpeg($this->path); // 画像のサイズを取得 $width = 150; $height = 150; $rate = $this->new_width / $width; $new_height = $rate * $height; $thumb = imagecreatetruecolor($this->new_width, $new_height); imagecopyresized($thumb, $image, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); // imagecopyresampled($thumb, $image_path, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); imagejpeg($thumb, null, 75); imagedestroy($image); } } ?> ◆環境と状況 ・サーバ:WindowsXP(XAMPPを利用してローカル環境を構築) ・phpinfo()にて、GD Support=enabled、JPEG Support=enabledを確認 ・ステップ実行(デバック)にてimagejpeg($thumb, null, 75);まで問題なく実行可能。  ※imagejpeg($thumb, null, 75);実行後上記文字列が出力される。 ・コメントアウト個所のimagecopyresampledでも動作結果は同じ。 ・参考にしたサイト  http://goodjob.boy.jp/chirashinoura/id/79.html 恐れ入りますが、ご回答お願い致します。

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

    • ベストアンサー
    • 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による画像の生成による色の変化

    お世話になっております。 PHPでアップロードしたjpg画像を縮小して生成しているのですが、色がおかしくなってしまいます。 (全ての画像が荘ではないのですが、変わるものは元の画像とはまったく違った青の強い色になってしまう。) ソースはこんな感じなのですが、何かおかしい部分があったらお教えいただけますでしょうか。 また、何か画像処理を加えてあるものを使用するとこのような経験がある方いらっしゃいましたらよろしくお願いいたします。 version 4.3.8です。 ******************** function imgjpg($_val1,$_val2,$_val3) { $size=GetImageSize("$_val1"); $image_in = ImageCreateFromJpeg("$_val1"); //縦長か横長か計算 $ratio = $size[0] / $size[1]; if($ratio > 1){ //横長の場合 $image_out = ImageCreate($_val3,$_val3 / $ratio); imagecopyresized($image_out,$image_in,0,0,0,0,$_val3,$_val3 / $ratio,$size[0],$size[1]); } else {//縦長の場合 $image_out = ImageCreate($_val3 * $ratio,$_val3); imagecopyresized($image_out,$image_in,0,0,0,0,$_val3 * $ratio,$_val3,$size[0],$size[1]); } ImageJPEG($image_out,$_val2); ImageDestroy($image_in); ImageDestroy($image_out); ********************

    • ベストアンサー
    • PHP
  • ImageTTFTextで保存すると文字が表示されない

    指定した画像(jpeg)に文字を埋め込みをして 出力は出来たのですが、 保存をすると文字が無い状態で保存してしまいます。 以下のようにソースは書いております。 <?php Header ("Content-type: image/jpeg"); $image=imagecreatefromjpeg("aaa.jpg"); $txt = mb_convert_encoding($_POST["moji"], "UTF-8", "SJIS"); ImageTTFText ($image, 9, 0, 60, 45, 0, "HGRSGU.TTC",$txt); //jpeg画像作成 imagejpeg($image); //画像リソースの開放 imagedestroy($image); ?> おかしいと思われるところ等御座いましたらご教授願います。

    • ベストアンサー
    • PHP
  • 文字を画像として出力したい

    サイト上の情報などを頼りに、下記のようなコードを書きました。 <?php header("Content-Type: image/gif"); $size = 14; $text = "テスト"; $text = mb_convert_encoding($text, "UTF-8", "EUC"); $font = "/home/kymsweb/www/modx/assets/files/fonts/hgrsmp.ttf"; $bbox = ImageTTFBBox($size, 0, $font, $text); $h = $bbox[1] - $bbox[7] + 8; //縦 $w = $bbox[2] - $bbox[0] + 8; //横 $im = ImageCreate($w, $h); ImageColorAllocateAlpha($im, 155, 255, 255, 127); $chars = ImageColorAllocate($im, 155, 0, 255); ImageTTFText($im, $size, 0, 1, $h - 8, $chars, $font, $text); ImageGIF($im); ImageDestroy($im); exit; ?> これをそのままphpファイルとして保存し、サーバ上に転送し アクセスすると「テスト」という文字が画像として表示されます。 ここまでは分かったのですが。 これをさらに応用し、任意のhtmlファイル(正確には拡張子phpのファイルですが)の 中にこのコードを埋め込んで表示したいと考えていますが、当然ながら htmlソースにバイナリを同梱してしまうようなことはできません。 具体的には、CMSのプラグインを自前で作りたいと考えています。 たとえばタイトル画像を任意のフォントを使って画像として リアルタイムに書き出すような使い方です。 このような場合、どのような仕組みを考えるといいのか アドバイスをいただきたいです。

    • 締切済み
    • PHP
  • GDで画像表示

    GDのimagejpeg()などでJPGバイナリをブラウザに送信することができますが、<img scr= のような所に画像を表示できませんか? やりたいことは、xx.jpgを640,480にリサイズしてyy.phpが出力するHTMLタグの<img srcの部分に640,480のサイズで画像を表示することです。 xx.jpgはユーザが適当なサイズでアップロードする画像です。 640,480にリサイズした画像を保存してから<img srcで表示するなら、それは可能だということが分かりますが、メモリ上で解決したいと思っています。

    • ベストアンサー
    • PHP
  • phpでテキストを返す

    html側で <img src="./image.php" /> php側で header("content-type: image/jpeg"); imagejpeg($image); imagedestroy($image); とすると、画像が表示されますが、 これを画像ではなく、テキストで返すにはどのようにしたらいいでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう