7

与えられたサイズの完全にランダムな画像を生成しようとしています。

これが私がこれまでに持っているものです:

<?php
$Width = 64;
$Height = 32;

$Image = imagecreate($Width, $Height);
for($Row = 1; $Row <= $Height; $Row++) {
    for($Column = 1; $Column <= $Width; $Column++) {
        $Red = mt_rand(0,255);
        $Green = mt_rand(0,255);
        $Blue = mt_rand(0,255);
        $Colour = imagecolorallocate ($Image, $Red , $Green, $Blue);
        imagesetpixel($Image,$Column - 1 , $Row - 1, $Colour);
    }
}

header('Content-type: image/png');
imagepng($Image);
?>

問題は、4行が経過するとランダムでなくなり、このように単色で塗りつぶされることです。
問題のサンプル

4

3 に答える 3

7

imagecreate を imagecreatetruecolor に変更すると、動作するはずです (パラメーターを含め、他のすべては同じです)。

于 2012-03-10T05:22:28.643 に答える
3

各ピクセルに新しい色を割り当てると、すぐに色味を使い果たしてしまいます。1 行あたり 64 ピクセルの 4 行は 256 です。口蓋がいっぱいになると、新しい色は口蓋の最後の色を使用します。

Mishu の回答では、インデックス付きカラー イメージではなくフルカラー イメージを使用しているため、より多くの色を割り当てることができます。

PHPドキュメントhttp://us.php.net/manual/en/function.imagecolorallocate.php#94785でこの回答を参照してください

于 2012-03-10T05:28:12.130 に答える
0

どちらも異なるパレットで画像を作成します。True Color にはより多くの色範囲があるため、imagecreatetruecolor() を使用することをお勧めします。

于 2012-03-10T05:28:59.207 に答える