[PHP-users 14148] Re: phpのバグ?( ライン描画 forループ)

Mishiki Sakana php-users@php.gr.jp
2003年 3月 21日 (金) 03:35:57 JST


未識と申します。

> 私にとって php自体のバグとしか 考えられませんが

まぁお気持ちも分かりますが、こういう風に思う場合の99.9999%以上は自分のソースコー
ドに問題があるものです。

> <?php
>   $im = @ImageCreate (300, 300)  or die ("Error");
>   $color = ImageColorAllocate ($im, 0,0,0); //black
> 
> //このfor文の 数値を変えると、表示されるようになりますが
> //数値を変えただけで 動きが変わるのはなぜでしょう???
>   for ($y=0; $y<=300; $y++) { //文字が消えてしまう。
> //for ($y=0; $y<=253; $y++) { //文字の色指定が正しくない。
> //for ($y=0; $y<=252; $y++) { //文字が正しく表示される。
>     $col_gra = ImageColorAllocate($im, 255, 0, 0); //red
>     ImageLine($im, 0, $y, 300, $y, $col_gra);
>   }

256回近辺で挙動が代わる辺りで何かひらめきませんか?

ImageCreateは、「パレットを使用する新規画像」を作成します。
for文の中でImageColorAllocateを繰り返せば当然パレットは足りなくなります。

解決策としては、色数を減らす、ImageCreateTrueColorでイメージを作成する、などがあ
るでしょう。

グラデーションを作りたいのならば、ImageCreateTrueColorを使う方が良いでしょうね。

-- 
未識さかな (Mishiki Sakana)
mailto:osakana@ofo.jp
http://ofo.jp




PHP-users メーリングリストの案内