LINUX.ORG.RU

php - залить рандомно каждый пиксель

 


0

1

Тут кто-то про аватар тему создавал, где написал что не знает что бы поставить. Так вот, я там предложил каждый пиксель аватара залить рандомным цветом. Решил реализовать, но гхм, взорвал мозг над алгоритмом, залить одну строчку понятно как:

<?php
$width = 150;
$height = 150;
$avatar = imageCreate(150, 150);

for ($i = 0; $i < $width; $i++) {
$color = imageColorAllocate($avatar, rand(0, 255), rand(0, 255), rand(0, 255));
imageSetPixel($avatar, $i, 0, $color);
}

Header("Content-type: image/png");
imagePng($avatar);
imageDestroy($avatar);
?>
но не могу придумать ка залить по обоим векторам всю картинку...


каждый пиксель аватара залить рандомным цветом
взорвал мозг над алгоритмом

Это тонкий стёб над пхп-истами, или ты действительно настолько туп?

for ($x = 0; $x < $width; $x++) {
    for ($y = 0; $y < $height; $y++) {
        $color = imageColorAllocate($avatar, rand(0, 255), rand(0, 255), rand(0, 255));
        imageSetPixel($avatar, $x, $y, $color);
    }
}

Dragon59 ★★
()
Ответ на: комментарий от Dragon59

Это тонкий стёб над пхп-истами

Тогда надо было бы сразу уточнять, мол, вопрос к профессионалам в пхп. )

orm-i-auga ★★★★★
()
Ответ на: комментарий от makeB

Nope, выйдет хорошо. Ну и поняша прав, ты же тонкий и юморной.

anonymous
()

взорвал мозг над алгоритмом
мозг
алгоритм

Ох лол. Неудивительно, что ты в одном треде отрицал эволюцию.

anonymous
()
Ответ на: комментарий от anonymous

Покажи класс на деле, а не языком молоти. Все что тут предложили, нихера не работает.

makeB
() автор топика
Ответ на: комментарий от makeB
~# cat test.php          
<?php
$width = 150;
$height = 150;
$avatar = imageCreateTrueColor($width, $height);

for ($x = 0; $x < $width; $x++) {
    for ($y = 0; $y < $height; $y++) {
        $color = imageColorAllocate($avatar, rand(0, 255), rand(0, 255), rand(0, 255));
        imageSetPixel($avatar, $x, $y, $color);
    }
}

Header("Content-type: image/png");
imagePng($avatar);
imageDestroy($avatar);
?>
~# php test.php > img.png

Итог: http://itmages.ru/image/view/882849/cd71fc90

Обрати внимание на imageCreateTrueColor()

Dragon59 ★★
()
Последнее исправление: Dragon59 (всего исправлений: 1)
Ответ на: комментарий от Dragon59

Обрати внимание, на imageCreateTrueColor()

Угу, теперь да, работает. Только не понятно почему так, если и то и другое, создает изображение заданного размера, только в случае imagecreate оно пустое...

makeB
() автор топика

Залей всё серым. </thread>

anonymous
()

в пхп нет вложеных циклов о_О ?

nanoolinux ★★★★
()
Ответ на: комментарий от makeB

Пустое или из двух строк пикселей?

Попробуйте проверять результат imagecolorallocate и подумать, что значит ″palette based image″.

mky ★★★★★
()
Ответ на: комментарий от mky

Пустое или из двух строк пикселей?

Нет, я вообще не про это, imageCreate создает пустое изображение, imageCreateTrueColor создает заполненное черным цветом. В случае с imageCreate код заливает только две строчки рандомными пикселями, а с imageCreateTrueColor все как надо. В чем фокус не понятно.

makeB
() автор топика
Ответ на: комментарий от anonymous

Прости, что лишаю тебя куска хлеба, но http://i.imgur.com/my88DT5.png

А то я не знал про гимп. Тебе в голову не приходило почему я именно на php решил писать? Подсказываю, большинство сайтов в качестве аватара позволяют использовать ссылку и себе на сервер картинку по этой ссылке не качают.

makeB
() автор топика

Устанавливать цвет попиксельно - неспортивно. Делаем готовый заголовок bmp, затем массив random байт нужного размера. Отсылаем так или пережимаем в памяти в приличный формат.

Suigintou ★★★★★
()
Ответ на: комментарий от makeB

В чем фокус не понятно.

Повторяю ещё раз. Поменяйте программу и сделайте в ней проверку ″imagecolorallocate()″ в случае с ″imageCreate()″. Потом посчитайте сколько у вас было удачных вызовов ″imagecolorallocate()″...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.