2016-05-31 2 views
0

В настоящее время я работаю над проектом для получения изображений .png/.gif и превращения их в ASCII и сохранения его в текстовый файл. То, как я достиг этого, было, получив среднее значение шкалы серого для каждого пикселя, затем имеет 2 для циклов, проходящих через высоты и ширину изображений, а затем добавляет все это в двумерный список (пример ниже).Text File Art Manipulation Python

Предполагая, что это был 50х50 изображение:

[[Y1], [X1, X2, X3, X4, X5 ..., X50]]

[[Y2], [X1, X2 , X3, X4, X5 ..., X50]]

[[Y3], [X1, X2, X3, X4, X5 ..., X50]]

...

[[Y50], [X1, X2, X3, X4, X5 ..., X50]]

Затем я использую небольшую петлю так, чтобы записать его в блокнот:

for z in range(0, len(yList)): 
    for q in yList[z]: 
     filename123.write(q) 
    filename123.write('\n') 

Это дал мне мой 50х50 ASCII искусство сохраненное в блокнот без искажаются, сдвинут, и т.д ...

Вопрос теперь в том, что я хочу, чтобы иметь возможность открывать файл, который я создал на Python, и иметь возможность манипулировать искусством ASCII, которое я сохранил в тексте, делая такие вещи, как переворачивание его на любую ось или поворот на 90 градусов (Я открыл файл и прочитал его, изображение ASCII печатает на консоли после создания 'variable = filename.read()', а затем печатает эту переменную). Как я мог бы делать такие манипуляции с текстовым файлом?

ответ

1

В теории, это довольно просто переворачивать и вращать; читайте значения изображения x, y в разных порядках. Я настоятельно рекомендую комбинируя преобразования, чтобы создать какое-то запись, которая содержит следующую информацию:

x/y first? 
first or last first for x? 
first or last for y? 

Вычислить эту информацию пути объединения вращения/зеркальное преобразование, а затем использовать его для перебора изображения.

Ваш трубопровод будет выглядеть примерно так:

image -> mirroring notation -> rotation notation 
-> mirroring + rotation = transformation -> iterate through image 
-> spit out ASCII 
+0

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

+1

В этом случае просто примените преобразование в текстовом файле :) – Aaron3468