2012-04-26 45 views
3

我在写一个简单的图片编辑器。它使用PPM文件。从我所知道的,我觉得我的代码应该工作。不过,我得到这个错误无法识别PPM文件数据

Traceback (most recent call last): 
    File "/home/zach/Downloads/piceditor (1).py", line 84, in <module> 
    main() 
    File "/home/zach/Downloads/piceditor (1).py", line 69, in main 
    image = Image(Point(100,100), filename) 
    File "/home/zach/Downloads/graphics.py", line 770, in __init__ 
    self.img = tk.PhotoImage(file=pixmap[0], master=_root) 
    File "/usr/lib/python3.1/tkinter/__init__.py", line 3272, in __init__ 
    Image.__init__(self, 'photo', name, cnf, master, **kw) 
    File "/usr/lib/python3.1/tkinter/__init__.py", line 3228, in __init__ 
    self.tk.call(('image', 'create', imgtype, name,) + options) 
_tkinter.TclError: couldn't recognize data in image file "pig.ppm" 

我的代码看起来像这样

def main(): 
print("Image Editor") 
print() 
filename = input("name of image file: ") 
print() 

with open(filename) as f: 
    formatind = f.readline() 
    width, height = [int(x) for x in f.readline().split()] 
    colordepth = f.readline() 
    array = [] 
    for line in f: 
     array.append([int(x) for x in line.split()]) 

win = GraphWin("Image Editor!", width, height) 

image = Image(Point(100,100), filename) 

Display(image, array, width, height, win) 

inf.close() 
win.getMouse() 
win.close() 

main() 

我的显示功能看起来像这样

def Display(image, array, width, height, win): 

for i in range(width): 
    for j in range(0, height, 3): 
     colors = color_rgb(array[i][j], array[i][j+1], array[i][j+2]) 
     image.setPixel(i, j, colors) 
     image.draw(win) 

return 

这是PPM文件我使用

P3 
6 8 
255 
249 249 249 255 255 255 250 250 250 255 255 255 250 250 250 250 250 250 254 255 255 251 255 255 
249 251 255 253 249 255 255 248 255 255 234 255 255 242 255 255 245 253 255 246 243 255 253 241 
255 255 237 255 255 237 252 255 241 249 255 246 249 255 253 254 255 255 255 252 255 255 248 241 
255 251 239 254 247 241 252 254 253 252 255 255 251 255 255 242 242 242 255 255 255 241 241 241 
0 0 0 0 0 0 4 4 4 20 20 20 236 236 236 252 252 252 254 255 253 248 255 250 
0 0 0 0 0 0 4 4 4 20 20 20 236 236 236 252 252 252 254 255 253 248 255 250 

我不能t他的生活找出为什么它不会识别文件中的数据。

任何帮助将是伟大的。谢谢

+0

你是否确定你的.ppm文件实际上是一个合适的.ppm文件?你可以发布数据吗? – 2012-04-26 20:37:42

+0

这里是我正在使用的文件 – zburns12 2012-04-26 20:42:44

+0

你的文件说它是6x8,但它的布局是8x6。 – 2012-04-26 21:39:31

回答

0

为什么不使用PIL库?在文件中它声称它可以与PPM文件一起使用。但是我不熟悉用PIL处理PPM文件。

Example:打开一个PPM文件,从文件中创建一个对象,然后用它来编辑该文件。