Как создать совершенно случайное изображение?
Я пытаюсь создать совершенно случайное изображение заданного размера.
Вот что у меня так далеко:
<?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 строк он перестает быть случайным и заполняется таким же цветом, как этот
3 ответа
Если вы измените imagecreate на imagecreatetruecolor, он должен работать (все остальное тоже самое, включая параметры)
Назначая новый цвет для каждого пикселя, вы быстро исчерпываете цветовой вкус. 4 строки по 64 пикселя на строку - 256. После заполнения неба любой новый цвет будет использовать последний цвет во вкусе.
В ответе Мишу используется полноцветное изображение, а не индексированное цветное изображение, поэтому вы можете выделить больше цветов.
Посмотрите этот ответ в документации PHP http://us.php.net/manual/en/function.imagecolorallocate.php
Оба создают изображения с разных поддонов. True color имеет больше цветовых диапазонов, поэтому лучше использовать imagecreatetruecolor()