Генеративный арт
Oleh KopylМеня всегда интересовало что компьютер может делать вместо дизайнера... Я не только буду рад, если машинные алгоритмы вытеснят профессию дизайнера, а еще и было бы самому круто спроектировать все эти алгоритмы.
Меня уже около двух лет привлекает язык программирования Python (а само программирование еще лет с 12).
Я постоянно записываю себе различные идеи и одна из них была – рандомное генерирование сеток для дизайна. Когда я начал свои попытки написания такой программы я понял что можно сделать пародию на ИИ Лебедева (программа, которая сама генерирует логотипы) и переключился на этот проект.
С появлением в трендах интернета веб-дизайн стиля под названием Брутализм, я его сразу полюбил. Арт, который делает моя программа немного под него косит, да.
Я сделал прогу, которая генерирует рандомные картинки (одинаковых картинок никогда не будет). И решил поделиться результатами.
Я не считал точное кол-во часов, потраченных на написание программы, но наверное это где-то около 4-6 часов.
В общем я нагенерил 100 картинок и выбрал из них лучшие (получилось 24 изображения):
Листайте еще ниже, там те же картинки, только шрифт адекватнее.
























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

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

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
























Да, я мог эти вставить в начало и избавиться от дублирования. Но вот так вот.
Кстати, текст полностью редактируемый в SVG на выходе.
Где можно такое использовать? Пока есть несколько идей:
- Делать принты на одежду, чехлы
- Менять обои на рабочем столе каждую минуту, или на джейлбрейкнутом айфоне
- Написать телеграм-клиент (не так и сложно) и менять аватарку каждые 10 секунд.
- Делать картинки для постов.
- Рандомно генеировать подпись (есть студии, которые рисуют подписи под заказ – типа хочет человек поменять свою подпись, но хочет чего-то особенного. В основном таким пользуются какие-то бизнесмены и люди, которые прилично работают с бумагой. Кстати, у таких студий достаточно много клиентов).
- Генерить идеи для логотипов, баннеров и другой графики
- Делать обувь
В планах:
- Как-то высчитать размер фигур и не позволять им выходить за границы холста изображения.
- Хочется понять как изменять степень плавности, потому что сейчас фигуры получаются оячень размашистыми и угловатыми. Но для этого думаю придется изучить по какой логике выстраиваются координаты SVG фигур.
- Сделать телеграм-бот, который бы позволил указать свои данные – текст, цвета, фигуры, степень искажения и пр и получать столько разных изображений, сколько душа пожелает. Может быть даже еще есть смысл позволять выгружать свои фигуры боту, но не уверен. В этом боте нужно еще изменять размер текста в зависимости от кол-ва букв. Так, заметочка себе на будущее.
- Быть может задумаюсь сделать более продвиную программу, которая будет еще работать с растровыми изображениями и делать прикольные коллажики.
- Зарефакторить код – убрать лишнее, возможно немного подправить логику.
Бонус:
Я ни на что не намекаю (или намекаю), но можно проследить логику в выборе подходящих вариантов, которые выглядят +- неплохо:

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

Программирование это искусство и крутой инструмент для достижения любых целей. И когда обьединяешь 2 или более инструмента, то может получиться что-то интересное.
Я пока не совсем уверен, что понимаю в каких сферах программирования на Python я хочу развиваться. Big Data звучит здорово, автоматизация звучит очень интересно, так как можно заставить комп самому зарабатывать деньги вместо тебя, а вот этот проект показывает мне что было бы круто знать еще и работу с искусственным интеллект.
Продолжение моих стараний в телеграм-канале: https://t.me/joinchat/AAAAAFC_qC87kAn3DIM9jA .