0

PHPとGDライブラリで画像を作成しようとしています

このコードを書いたとき、エラーは見つかりませんでした

<?php
header("Content-Type: image/png");
$im = @imagecreate(120,120) or die("Cannot Initialize new GD image stream");
for ($i =0; $i<120; $i++) {
    for ($j = 0; $j<120; $j++) {
        $color = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
               imagesetpixel($im, $i,$j,$color);              
}
}
imagepng($im);
imagedestroy($im2);
?>

しかし、異なるピクセルごとにランダムな色を設定する必要がありますが、幅と高さを120pxに設定するとループが15で停止する理由がわかりません

何が問題ですか?

4

1 に答える 1

2

これは、ある時点でimagecolorallocatefalse または別の負の値を返すためです。

http://www.php.net/manual/en/function.imagecolorallocate.php

警告この関数は、ブール値の FALSE を返す場合がありますが、FALSE と評価されるブール値以外の値を返す場合もあります。詳細については、ブール値のセクションを参照してください。この関数の戻り値をテストするには、=== 演算子を使用します。

実際には、画像に同じ色を何度も作成しようとします。したがって、ループでランダムな色を既に割り当て/作成している可能性があると単純に考えてください。

for ($i=0; $i<120; $i++) {
    for ($j = 0; $j<120; $j++) {
        $color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255)); 
        if ($color) {
            imagesetpixel($im, $i, $j, $color);
        } else {
            imagesetpixel($im, $i, $j, rand(0, 255));
        }
    }
}

ここに画像の説明を入力

于 2013-09-10T10:10:12.083 に答える