我目前正在开发一个项目,用于获取.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图像在控制台中打印。我将如何使用文本文件进行这些操作?
答案 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