Генеративный арт

Генеративный арт

Oleh Kopyl

Меня всегда интересовало что компьютер может делать вместо дизайнера... Я не только буду рад, если машинные алгоритмы вытеснят профессию дизайнера, а еще и было бы самому круто спроектировать все эти алгоритмы.


Меня уже около двух лет привлекает язык программирования Python (а само программирование еще лет с 12).


Я постоянно записываю себе различные идеи и одна из них была – рандомное генерирование сеток для дизайна. Когда я начал свои попытки написания такой программы я понял что можно сделать пародию на ИИ Лебедева (программа, которая сама генерирует логотипы) и переключился на этот проект.


С появлением в трендах интернета веб-дизайн стиля под названием Брутализм, я его сразу полюбил. Арт, который делает моя программа немного под него косит, да.


Я сделал прогу, которая генерирует рандомные картинки (одинаковых картинок никогда не будет). И решил поделиться результатами.


Я не считал точное кол-во часов, потраченных на написание программы, но наверное это где-то около 4-6 часов.


В общем я нагенерил 100 картинок и выбрал из них лучшие (получилось 24 изображения):

Листайте еще ниже, там те же картинки, только шрифт адекватнее.

1
5
13
19
24
26
30
31
35
38
41
60
70
71
77
78
80
84
85
86
90
91
95
99



Вот как выглядит картинка в оригинале, если элементы выходят за ее рамки:

Да, кстати, шрифт в оригинале жирный. Видимо Python-библиотека, которая конвертирует SVG в PNG (а изначально все рендерится в SVG) не читает соответствующий атрибут, который делает шрифт жирным.


Если же подправить немного текст вручную, где он выходит за границы, то получится симпотнее, да. ну и вернуть шрифт.




Сейчас попробую нормально все экспортировать с жирным шрифтом (оказалось не так легко – не везде наклон шрифта сохранялся. Решил командой в Terminal на MacOS: rsvg-convert -h 1280 pic1.svg > pic1.png).

1
5
13
19
24
26
30
31
35
38
41
60
70
71
77
78
80
84
85
86
90
91
95
99

Да, я мог эти вставить в начало и избавиться от дублирования. Но вот так вот.


Кстати, текст полностью редактируемый в SVG на выходе.





Где можно такое использовать? Пока есть несколько идей:

  1. Делать принты на одежду, чехлы
  2. Менять обои на рабочем столе каждую минуту, или на джейлбрейкнутом айфоне
  3. Написать телеграм-клиент (не так и сложно) и менять аватарку каждые 10 секунд.
  4. Делать картинки для постов.
  5. Рандомно генеировать подпись (есть студии, которые рисуют подписи под заказ – типа хочет человек поменять свою подпись, но хочет чего-то особенного. В основном таким пользуются какие-то бизнесмены и люди, которые прилично работают с бумагой. Кстати, у таких студий достаточно много клиентов).
  6. Генерить идеи для логотипов, баннеров и другой графики
  7. Делать обувь


В планах:

  1. Как-то высчитать размер фигур и не позволять им выходить за границы холста изображения.
  2. Хочется понять как изменять степень плавности, потому что сейчас фигуры получаются оячень размашистыми и угловатыми. Но для этого думаю придется изучить по какой логике выстраиваются координаты SVG фигур.
  3. Сделать телеграм-бот, который бы позволил указать свои данные – текст, цвета, фигуры, степень искажения и пр и получать столько разных изображений, сколько душа пожелает. Может быть даже еще есть смысл позволять выгружать свои фигуры боту, но не уверен. В этом боте нужно еще изменять размер текста в зависимости от кол-ва букв. Так, заметочка себе на будущее.
  4. Быть может задумаюсь сделать более продвиную программу, которая будет еще работать с растровыми изображениями и делать прикольные коллажики.
  5. Зарефакторить код – убрать лишнее, возможно немного подправить логику.



Бонус:

Я ни на что не намекаю (или намекаю), но можно проследить логику в выборе подходящих вариантов, которые выглядят +- неплохо:

На скриншоте отмечены изображения, которые я отобрал.

26-е изображение выбираем + 3 пропускаем + 2 изображения подряд выбираем + 3 пропускаем + 1 выбираем. 70 и 71 изображения выбираем. 77 и 78 выбираем. 80 выбираем + 3 пропукаем. 84, 85 и 86 выбираем, 3 пропускаем, 2 следующих выбираем, опять пропускаем 3, выбираем следующее и опять пропуск 3х изображения и выбор одного. И да, я выбирал реально те, которые понравились.


Пардон, забыл еще отметить некоторы выбранные картинки. Ну и тут та же логика – 1ю выбрали, пропус 3х и 5ю выбрали.



Программирование это искусство и крутой инструмент для достижения любых целей. И когда обьединяешь 2 или более инструмента, то может получиться что-то интересное.

Я пока не совсем уверен, что понимаю в каких сферах программирования на Python я хочу развиваться. Big Data звучит здорово, автоматизация звучит очень интересно, так как можно заставить комп самому зарабатывать деньги вместо тебя, а вот этот проект показывает мне что было бы круто знать еще и работу с искусственным интеллект.


Продолжение моих стараний в телеграм-канале: https://t.me/joinchat/AAAAAFC_qC87kAn3DIM9jA .


Report Page