文本文件艺术操作Python

时间:2016-05-31 07:34:27

标签: python

我目前正在开发一个项目,用于获取.png / .gif图像并将其转换为ASCII并将其保存为文本文件。我实现这一点的方法是获得每个像素的灰度平均值,然后通过图片的高度和宽度有2个循环,然后将所有这些都附加到二维列表中(下面的示例)。

假设它是50x50的图像:

[[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')

这给了我50x50的ASCII艺术保存到记事本而不会被扭曲,移位等等。

我现在的问题是,我希望能够打开我在Python中创建的文件,并能够操作我在文本中保存的ASCII艺术,例如在任一轴上翻转或将其旋转90度(我打开文件并读取它,在制作'variable = filename.read()'然后打印该变量后,ASCII图像在控制台中打印。我将如何使用文本文件进行这些操作?

1 个答案:

答案 0 :(得分: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