Скрипт для генерации уникальных изображений?

Здравствуйте. Подскажите существуют ли инструменты, с помощью которых можно создать подобный набор картинок? Один рисунок с разными уникальными комбинациями цветом.

604df9d898e41665651555.png
  • Вопрос задан
  • 865 просмотров
Решения вопроса 1
MinTnt
@MinTnt
Думаю тут и PIL сгодится. Сначала задав код для рисования по пиксельно нужного изображения. А дальше создать список с разными цветами, с которого потом через random выбирать нужный цвет.

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

Update: я пока лишь так, быстро просмотрел PIL, написал пусть и не до конца идеальный, но для начала сойдёт - мини-код. Он берёт из папки уже существующее входное изображение, а на выходе изменённое со случайными цветами.
from PIL import Image, ImageDraw 
from random import randint
import time

image = Image.open('enter-image.png')
pix = image.load()
width = image.size[0]
height = image.size[1]
draw = ImageDraw.Draw(image)

pixel_id = []
print(f'Через 3 секунды начнётся анализ картинки. Размеры {width}x{height}')
time.sleep(3)
start_time = time.time()

for x in range(width):
	for y in range(height):
		print(x, y)
		if not pix[x,y] in [i[0] for i in pixel_id]:
			pixel_id.append([pix[x,y], []])
		pixel_id[[i[0] for i in pixel_id].index(pix[x,y])][1].append((x,y))

for a in pixel_id:
	color = (randint(0, 255), randint(0, 255) , randint(0, 255))
	for draw_zone in a[1]:
		draw.point(draw_zone, color)

print('Проработка изменённой картинки завершена. Начинается сохранение.')
image.save("output-image.png")
print(f'Сохранение завершено за {time.time()-start_time}.')

Если же нужно чтоб какие-то цвета не брало в счёт, можно приделать такую проверку.
if pix[x,y] not in [(0, 0, 0, 255), (255,255,255, 255)]:
			if not pix[x,y] in [i[0] for i in pixel_id]:
				pixel_id.append([pix[x,y], []])
			pixel_id[[i[0] for i in pixel_id].index(pix[x,y])][1].append((x,y))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы