2

ヘイ、私はこのコードを使用して画像を生成し、それを灰色で塗りつぶしています。

$canvas = imagecreatetruecolor(100, 100);
$gray = imagecolorallocate($canvas, 0xEE, 0xEE, 0xEE);
imagefill($canvas, 0, 0, $gray);    
imagegif($canvas);

これは正常に機能しますが、キャンバスサイズを「長い」画像に変更すると、塗りつぶしに失敗します。

$canvas = imagecreatetruecolor(1, 100);

これは一般的なバグですか?または、他のオプションが必要ですか?キャンバス全体を塗りつぶすにはどうすればよいですか?

4

1 に答える 1

1

バグのようです。同じ動作を確認します。幅を1に指定すると、上部の2ピクセルのみが塗りつぶされます。2または3の場合も同様です。4は魔法の値のように見えます。そこで機能し始めます。

一方、高さ1ピクセルの画像を使用した場合、このバグは表示されないようです。つまり、これを試してみたところ、期待どおりに機能しました。

$canvas = imagecreatetruecolor(100, 1);                                                                                                                 
$red = imagecolorallocate($canvas, 0xEE, 0, 0);                                                                                                         
imagefill($canvas, 0, 0, $red);                                                                                                                     
imagegif($canvas, "output.png");  

したがって、これは一種の回避策になる可能性があります。

于 2011-03-11T21:51:21.840 に答える