2012-02-27 18 views
0

PHPで画像を生成して書き出す際に問題があります。私はその後、などのデータベースからのデータを、彼らと仕事、とのロードstatic_dragon関数の内部PHP画像出力の問題

header('Content-type: image/jpeg'); 
header('Content-Disposition: inline; filename=WHATEVER.jpg'); 
$dragon = self::static_dragon($numbers,$avatars,$new_name,$filepath); 

だから私はこれを持って

imagejpeg($canvas,'',60); 
imagedestroy($canvas); 
return true; 

私は何を達成したいことであるならば、私
<のIMG SRC = "http://www.domain.com/dragon.php &幅= 100高さ= & 100" />

を書きます

それは私にイメージを与えるでしょう。 すべて正常に動作し、データベース接続、サーバー上の最終的なjpgファイルを保存するだけで問題はブラウザが私に画像を表示しないことです。おそらくヘッダーに問題があると思いますか? スクリプトが(...私はそうするであろう任意のコマンドを参照してくださいいけないにも関わらず)ヘッダがすでに送信されたことを私に語ってところで、私は関数の後にヘッダを実行することはできません

ヘルプ

+0

ヘッダーを設定する前に何かをエコーし​​ますか?あなたの '<?php'の前に空白があっても何か? – Crinsane

+0

いいえ、何も、ヘッダーがオンラインで送信されたことを私に伝えている "header already sent"エラーはありません。$ handler = imagecreatefromjpeg($ picture);それは私には意味がありません – Tom

+0

エラーメッセージや警告メッセージが生成されていないことを確認しましたか? – Svish

答えて

2

uが同じことをやっている:

header('Content-type: image/jpeg'); 
header('Content-Disposition: inline; filename=WHATEVER.jpg'); 

$im = imagecreatefromjpeg('download.jpg') or or die('Cannot Initialize new GD image stream'); // this will let u know whether the creation of image resource was a failure 

imagestring($im, 3, 40, 20, 'GD Library', 0xFFBA00); //just a add on 

imagejpeg($im); 
imagedestroy($canvas); 
return true; 

上記のコードがブラウザで正常に動作しています。エラーはありますか?

@Tomあなたが言ったように、エラーが発生します:imagecreatefromjpegの "ヘッダは既に送信されました"。 imagecreatefromjpeg()がイメージのリソースを提供するので、まずエラーを解決してください。リソースに障害が発生している場合、イメージは表示されません。あなたのphpファイルの先頭部分で

$this->getResponse()->setContent($canvas)

は、@imagecreatefromjpeg()

+0

ああ、今それについて考えているよ、はい、それは私にイメージリソースのエラーを与えてくれて、それは "すでに送られたエラー"かもしれない。imagecreatefromjpeg()と@imagecreatefromjpeg()との違いは何ですか?私はエラーなしで試してみます、関数imagestring()は何ですか?ありがとうございました! – Tom

+0

それでは、私は必要なところにヘッダーを置くことができますが、イメージはまだ表示されません。 Firefoxではちょうど壊れた画像で、Firefoxではメッセージが表示されます:「http://domain.com/?request=request&width=300&height=300」という画像にはエラーが含まれているため表示できません。それ以上のアドバイスは?ありがとうございます – Tom

+0

関数の前に@ operatonを置くと、ユーザーのブラウザにエラーメッセージが表示されなくなります。ハンドラでコードを更新しました。 –

1

のための多くのおかげではなかったですあなたは追加することを忘れました

echo $dragon 

オブジェクトは、このPHPファイルのコンテンツですか? :) は、あなたのPHPファイルの末尾に次の行を追加します

echo $dragon 

see

+0

私も同じだと思ったけど、それでも助けにならなかったよ – Tom

1

ので、代わりのエコー-INGの$キャンバスを使用、これを使って試してみて。

(私は$キャンバスは、DBからロードされたオブジェクトであると仮定)

あなたは、PHPファイル内の他のものを印刷していないことを確認してください。