在项目上需要一点帮助/指导。我们的任务是获取一个.ppm文件(需要进行测试的文件位于http://beastie.cs.ua.edu/cs250/projects/asciiart/tux.ppm),并使用ASCII字符将其重新打印在屏幕上。我们需要将像素转换为灰度。这真的是我所困。无法弄清楚如何读取每三个元素(因为每三个元素在PPM文件中为一个像素),将它们转换为灰度并继续前进。同样,不允许使用PIL。关于阅读内容的任何帮助或链接都很棒!

最佳答案

PPM并不难解析。

标头:

P3
50 50
255



P3表示图像是ASCII像素图(彩色)。
50 50是宽度和高度。
255是最大颜色值。


身体:

254 254 252 254 254 252 254 254 252 254 254 252 254 254 252 254 254 252
254 254 252 254 254 252 254 254 252 254 254 252 254 254 252 254 254 252
254 254 252 254 254 252 254 254 252 253 255 250 239 244 237 251 255 248
234 236 231 255 255 251 252 251 249 255 254 251 253 248 242 255 255 244
...


只需删除所有换行符:

body.replace('\n', ' ')


并将其解析为三胞胎(不太优雅):

raw = body.split(' ')

for i in range(0, len(raw), 3):
  red = raw[i]
  green = raw[i + 1]
  blue = raw[i + 2]

关于python - 使用PPM文件在python中将图像转换为ASCII。不允许PIL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7369756/

10-09 07:27