Ответ 1
Это довольно простой способ генерировать случайный шум. Вы можете сделать это довольно легко с некоторыми библиотеками изображений PHP, включая функции GD. Я уверен, что это будет похоже на 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);
Генерирует это:
Ваш пример кажется еще более сложным, так как пиксели кажутся появляющимися небольшими группами, чтобы создать более яркий вид. Вы могли бы эмулировать это путем настройки логики цикла, если хотите, или окрашивания небольших квадратов вместо отдельных пикселей.
Интересной особенностью такого типа генерации является то, что вы можете увидеть разбивку функции rand()
на платформах Windows, если вы используете ее вместо mt_rand()
. Заметные шаблоны могут развиваться в шуме из-за ограничений в этой комбинации функций/платформ.