Довольно просто генерировать случайный шум. Вы можете сделать это довольно легко с помощью некоторых библиотек изображений 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()
. Из-за ограничений в этой комбинации функция / платформа могут развиться различимые структуры.