我正在尝试使用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的宽度和高度时
问题是什么?
答案 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));
}
}
}