如何生成完全随机的图像?

时间:2012-03-10 05:10:18

标签: php image-generation

我试图生成给定大小的完全随机图像。

这是我到目前为止所做的:

<?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 个答案:

答案 0 :(得分:5)

如果你将imagecreate改为imagecreatetruecolor它应该可以工作(其他一切都是相同的,包括参数)

答案 1 :(得分:2)

通过为每个像素分配新颜色,您很快就会耗尽颜色。每行64像素的4行是256.在上腭完整后,任何新颜色都将使用上腭的最后一种颜色。

Mishu的答案使用全彩色图像,而不是索引彩色图像,这就是为什么你能够分配更多颜色。

在PHP文档http://us.php.net/manual/en/function.imagecolorallocate.php#94785

中查看此答案

答案 2 :(得分:0)

两者都使用不同的托盘创建图像。真彩色具有更多颜色范围,因此最好使用imagecreatetruecolor()