Я надеюсь делать изображение, это - просто шум, возможно, что-то вроде этого:
(источник: loriswebs.com)
Идеально я хотел бы смочь изменить цвет также. Какие-либо идеи о том, как генерировать это?
Сгенерировать случайный шум довольно просто. Вы можете легко сделать это с помощью некоторых библиотек изображений 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);
Генерирует это:
Ваш пример кажется еще немного более сложным, с пикселями, кажущимися небольшими группами, чтобы создать более блочный вид. Вы можете эмулировать это, настраивая логику цикла, если хотите, или раскрашивая маленькие квадраты вместо отдельных пикселей.
Интересным в этом типе генерации является то, что вы действительно можете увидеть разбивку функции rand ()
на платформах Windows, если вы используете ее вместо mt_rand ()
. Различимые шаблоны могут развиваться в шуме из-за ограничений в этой комбинации функции / платформы.
Да, вам нужно использовать:
ImageCreate [True] Color ()
для
циклов rand ()
или mt_rand ()
ImageColorAllocate ()
ImageSetPixel
Похоже на рецепт, смеется. Сообщите мне, если вам понадобится дополнительная помощь.
Извините за краткость, что-то пришлось сделать, вот пример кода:
<?php
$im = ImageCreateTrueColor(200, 300);
if (is_resource($im)) {
$blue = array_map('hexdec', str_split('0000FF', 2));
$white = array_map('hexdec', str_split('FFFFFF', 2));
$blue = ImageColorAllocate($im, $blue[0], $blue[1], $blue[2]);
$white = ImageColorAllocate($im, $white[0], $white[1], $white[2]);
for ($w = 1; $w <= 200; $w++) {
for ($h = 1; $h <= 300; $h++) {
if (mt_rand(1, 100) >= 50)
ImageSetPixel($im, $w, $h, $blue);
else
ImageSetPixel($im, $w, $h, $white);
}
}
}
header('Content-type: image/png');
ImagePNG($im, null, 9);
ImageDestroy($im);
?>