忙しい現代人の腰&肩のお悩み対策!

画像描画と一般の関数は同じphpファイルには書けないのでしょうか?
再びお世話になります。
phpで100以下の素数の数だけ、四角い黒い画像を横に並べて表示としています。
できれば、素数の数字の中身を画像の中に書き込めれば良いのですが、
どうしても文字化けなどしてうまくいきません。
以下のソースを打つと、黒い図形のみが表示されます。
どのように解決したらよいでしょうか?お願いいたします。

コードは以下のようになります(ご参考までに)

<?php

function draws()
{
header ("Content-type: image/png");

$image = imagecreatetruecolor(30,35);
$bcolor = imagecolorallocate($image, 255,255,255);

$fcolor = imagecolorallocate($image, 0,0,0);

imagepng($image);

imagecolordeallocate($image, $bcolor);
imagecolordeallocate($image, $fcolor);

imagedestroy($image);
}

function testprint1()
{
for ($i = 0; $i < 100; $i++)
{
printf("%d\n", $i);
}
}

function testprint2()
{
printf("333333333333333333333333333333333333");
}

draws();
testprint1();
testprint2();

?>

このQ&Aに関連する最新のQ&A

A 回答 (1件)

png画像としてデータを出力しているのでtestprint1()、testprint2()で出力している文字列も画像データとみなされます。

期待している文字列が出力されないだけでなく、期待している画像も出力されないはずです。
そもそもprintを使っても画像に文字を埋め込むことはできません。
画像に文字列を埋め込むには、imagestring()を使います。
尚、日本語を扱いたい場合はimagestring()ではなくimagettftext()を使う必要があります。
http://jp2.php.net/manual/ja/function.imagestrin …
http://jp2.php.net/manual/ja/function.imagettfte …

さらに、imagecreatetruecolor()で作成した画像の背景は元々が黒で、imagecolorallocate()の最初のコールにて背景色を設定することはできないようです。
同じ大きさの矩形で塗りつぶすか、imagecolortransparent()で初期状態における背景色(黒)を透過色に定義することで背景色を設定することができます。
http://jp2.php.net/manual/ja/function.imagecolor …
    • good
    • 0
この回答へのお礼

早速のご回答どうもありがとうございます。
画像として出力しているので、testprint1(),testprint2()が、
正常に動作しないのですね。詳しく書いていただき、誠にありがとうございました。

お礼日時:2009/11/17 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング