2009-08-25 7 views
1

私はUbuntuサーバーとPHP5、PHPスクリプトファイルを持っており、すべての出力はUTF-8です。 私は、出力ストリームに画像を送信しようとしているが、ちょうど化け漢字は出力に表示さ:PHP 5:utf-8バイナリデータを書き込む方法 - イメージ - 出力するには?

$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);

任意の提案を?

+0

テキストデータとその画像を同じスクリプトで出力しようとしていますか?それは可能ではありません。テキストデータとイメージの両方が異なるリソースであるため、異なるファイルでなければなりません。 – Gumbo

+0

いいえ、画像だけです。前/後には何も書き込まれません。 – balint

答えて

0

あなたのコードでは、私のマシン上で完全に正常に動作します:あなたはそのコードの前または後にをoutputingされていないことを確認

<?php 
$im = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 
imagedestroy($im); 

die; 
?> 

ていますか?どのような種類の空白が問題の原因になるでしょう。

あなたのスクリプトはどこか他の何かをやっていますか?


それはまだimagestringで使用されるものよりも「より良い」/より完全なフォントを使用するように、多分imagettftextにしようと、動作しない場合に役立つかもしれませんか?

$font = '/usr/share/fonts/truetype/msttcorefonts/arial.ttf'; 
imagettftext($im, 20, 0, 10, 20, $text_color, $font, 'A Simple éléphant String'); 


をところで、あなたはそれらの行せずにしようとしなかった:

header('Content-type: image/jpeg'); 
imagejpeg($im); 
imagedestroy($im); 

エラー/警告/通知がある場合は、それらの行を削除例えば、このようなものを使用して

それらを見るのを助けるかもしれません。


また、一部のテキストを含む画像にJPEGを使用すると、一般的に大きな結果は得られません.JPEGは破壊的な圧縮メカニズムです。このような状況でPNGを使用すると、より良い結果が得られるかもしれません;-)

+0

おそらく、私はまだ何も見つかりませんでした。 16個のインクルードファイルがあります...私のコードではありません。悲しいことに、いくつかのものを修正する必要があります。 – balint

+0

Ergh :-(あまりうまくいきません;;最初は、サーバーがアプリケーションの外部にイメージを生成できるかどうかを判断するためにできる最小限のコードをテストしてから、3行を削除します画像を出力するとエラーメッセージが出るのを助けるかもしれません... –

+0

私はそれをスタンドアローンファイルに移動しました。 – balint

0

UTF-8バイトオーダーマークがJPEG画像の内容の前に付加されて無効になるため、UTF-8バイトオーダーマークを削除してみます。

+0

まず、それは本当です!ただし、ダウンロードしたファイルの最初の3バイトを削除した後も、無効な画像です。 – balint

関連する問題