Как создать абсолютно случайное изображение? - PullRequest
6 голосов
/ 10 марта 2012

Я пытаюсь сгенерировать совершенно случайное изображение заданного размера.

Вот что у меня есть:

<?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 строк он останавливаетсябыть случайным и заполняется сплошным цветом, как этоSample of problem

Ответы [ 3 ]

5 голосов
/ 10 марта 2012

если вы измените imagecreate на imagecreatetruecolor, оно должно работать (все остальное тоже самое, включая параметры)

2 голосов
/ 10 марта 2012

Назначая новый цвет для каждого пикселя, вы быстро исчерпываете цветовой вкус.4 строки по 64 пикселя на строку - 256. После заполнения неба любой новый цвет будет использовать последний цвет неба.

Для ответа Мишу используется полноцветное изображение, а не индексированное цветное изображениевот почему вы можете выделить больше цветов.

См. этот ответ в документации PHP http://us.php.net/manual/en/function.imagecolorallocate.php#94785

0 голосов
/ 10 марта 2012

Оба создают изображения с разных поддонов. True color имеет больше цветовых диапазонов, поэтому лучше использовать imagecreatetruecolor ()

...