Предисловие
Я один из тех людей, которые часто подвержены стрессовым ситуациям. Избавиться от стресса можно разными способами. В данном топике я покажу вам, как это делаю я.
Как мне пришло это в голову
Однажды гуляя по интернету, я натолкнулся на одно удивительное изображение — на нём был сплошной черный фон, хаотически разбросанные линии и точки тепло-фиолетового цвета. Я попытался вообразить себе, что же может быть изображено на этом изображении. Изображение не несло никакой смысловой нагрузки, но смотреть на него было удивительно приятно. Я вообразил себе, что это некое графическое изображение космической тематики. Мои глазные мышцы расслабились и я почувствовал на себе загадочный эффект цветотерапии.
Немного погодя я решил попробовать воссоздать что-нибудь подобное программно. Так как мой подручный язык был 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