产生随机噪声非常简单.您可以很容易地完成这一点,其中包括一些PHP的图像库,包括
GD functions.我相信在ImageMagick中将是类似的.
如果要产生完全随机的噪点,则可以为每个颜色和每个像素使用随机值. GD可能看起来像这样:
//random colored noise
$x = 150;
$y = 150;
$im = imagecreatetruecolor($x,$y);
for($i = 0; $i < $x; $i++) {
for($j = 0; $j < $y; $j++) {
$color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($im, $i, $j, $color);
}
}
header('Content-Type: image/png');
imagepng($im);
生成这个:
但是,您清楚发布的示例图像看起来不像完全随机的颜色噪声.它似乎更像是两种颜色之一的任意选择,一种有点灰色的像素或一个有点色的像素.你可以这样做:
//two-color random noise
$x = 150;
$y = 150;
$im = imagecreatetruecolor($x,$y);
$color1 = imagecolorallocate($im, 200, 240, 242);
$color2 = imagecolorallocate($im,220,220,220);
imagefill($im,0,0,$color1);
for($i = 0; $i < $x; $i++) {
for($j = 0; $j < $y; $j++) {
if (mt_rand(0,1) == 1) imagesetpixel($im, $i, $j, $color2);
}
}
header('Content-Type: image/png');
imagepng($im);
生成这个:
您的示例似乎还有点复杂,像素似乎出现在小组中,从而产生更为复杂的外观.您可以通过调整循环逻辑(如果需要)或着色小方块而不是单个像素来模拟.
关于这种类型的一代的一个有趣的事情是,如果您使用它代替mt_rand(),您可以在Windows平台上实际看到rand()函数的故障. Discernible patterns can develop由于该功能/平台组合的限制而引起的噪音.