Предисловие
Я один из тех людей, которые часто подвержены стрессовым ситуациям. Избавиться от стресса можно разными способами. В данном топике я покажу вам, как это делаю я.
Как мне пришло это в голову
Однажды гуляя по интернету, я натолкнулся на одно удивительное изображение — на нём был сплошной черный фон, хаотически разбросанные линии и точки тепло-фиолетового цвета. Я попытался вообразить себе, что же может быть изображено на этом изображении. Изображение не несло никакой смысловой нагрузки, но смотреть на него было удивительно приятно. Я вообразил себе, что это некое графическое изображение космической тематики. Мои глазные мышцы расслабились и я почувствовал на себе загадочный эффект цветотерапии.
Немного погодя я решил попробовать воссоздать что-нибудь подобное программно. Так как мой подручный язык был Perl, то я обратился именно к нему. В моём ActiveState Perl 5.14.2 был по умолчанию установлен модуль GD и я решил что воспользуюсь именно им.
Принцип действия
Для начала нам нужен скрипт, который будет создавать нам изображения с хаотическими наложениями:
#!/usr/bin/env perl use strict; use GD; my $res = 16000; my $outres = 1000; my $format = 2.0; for my $z(0..20) { my ($c1, $c2, $c3, $c4); my $img = new GD::Image($res, $res); $img->fill($res, $res => $img->colorAllocate(0, 0, 0)); for (0..1200) { $c1 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c2 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c3 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $c4 = $img->colorAllocate(rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32, rand(0xFF-0x32)+0x32); $img->setStyle($c1, $c1, $c2, $c2, $c3, $c3, $c4, $c4, gdTransparent, gdTransparent); (rand(10)>2) ? ($img->line(rand($res), rand($res), rand($res), rand($res), gdStyled)): ((rand(10)>2) ? $img->rectangle(rand($res), rand($res), rand($res), rand($res), gdStyled): $img->ellipse(rand($res), rand($res), rand($res), rand($res), gdStyled)) if (rand(10)>2); } print "processing $z.png...\n"; my $m = new GD::Image($outres*$format, $outres); $m->copyResized($img, 0, 0, 0, 0, $outres*$format, $outres, $res, $res); open F => '>'.$z.'.png'; binmode F; print F $m->png; close F; }
- Помещаем скрипт в папку.
- Запускаем и ждём, пока скрипт создаёт нам шедевры.
- Сгенерированные изображения можно просматривать листая вручную, или используя «слайдшоу», которое не должно быть со слишком коротким интервалом.
Примеры результата


Ссылки
GD Perl Module
Цветотерапия на википедии
P.S: Картинки в примере получились 800х400, потому что их сжал хабрасторейдж. Натуральный масштаб этих изображений — 2000х1000
