连接到PIL库的替代方法?

时间:2014-02-10 08:52:59

标签: python python-3.x tkinter python-imaging-library

通常库PIL连接如下:

from PIL import ImageTk, Image 

我想以这种方式连接它:

import PIL

但我的版本不起作用。这是代码:

import os, sys
import tkinter
import PIL

main = tkinter.Tk()

catalogImg1 = 'imgs'
nameImg1 = 'n.jpg'
pathImg1 = os.path.join(catalogImg1, nameImg1)

openImg = PIL.Image.open(pathImg1)

renderImg = PIL.ImageTk.PhotoImage(openImg)
tkinter.Label(main, image=renderImg).pack()

main.mainloop()

错误消息是:

  

Traceback(最近一次调用最后一次):文件   “C:\ Python33 \ projects \ PIL_IMAGETK \ ImageTK_photoimage - копия.py”,line   11,在       openImg = PIL.Image.open(pathImg1)AttributeError:'module'对象没有属性'Image'

2 个答案:

答案 0 :(得分:2)

导入包(PIL)不会自动导入子包,子模块(PIL.ImagePIL.ImageTk)。 (除非包装本身这样做)。

明确导入子模块。

替换以下行:

import PIL

使用:

import PIL.Image
import PIL.ImageTk

答案 1 :(得分:1)

这是因为Image是PIL包中的子模块,即它不是函数或类。导入包不会自动导入其子模块。

如果要使用PIL命名空间,可以按如下方式导入模块:

import PIL.Image
openImg = PIL.Image.open(pathImg1)

如果要导入PIL的所有子模块,可以执行以下操作

from PIL import *
openImg = Image.open(pathImg1)