PHP GD创建图像错误

时间:2013-09-10 09:07:49

标签: php gd

我正在尝试使用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);
?>

但是我需要为每个不同的像素设置随机颜色,但我不知道为什么循环停止在15当我设置120px的宽度和高度时

问题是什么?

1 个答案:

答案 0 :(得分:2)

这是因为在某些时候imagecolorallocate会返回false或其他负值。

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

  

警告此函数可能返回布尔值FALSE,但也可能返回a   非布尔值,其值为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));
        }
    }
}

enter image description here