[NameError]未定义全局名称"ImageDraw"
嗨伙计们,
我正在开发Pillow和(Tkinter,BmpImagePlugin,cStringIO,子进程,Ctype s,re.N)个模块
如果这种情况告诉我,我会用这种方式
属性错误
选择 | 换行 | 行号
- from PIL import *
我用Try-Expect解决了这个代码行
选择 | 换行 | 行号
- try:
- from PIL import *
- except AttributeError: #module has no attribute ImageN
- import Image
- import ImageDraw
- import ImageFont
我的原始代码部分
选择 | 换行 | 行号
- class capsGen(object):
- def __init__(self):
- pass
- def videoGen(self,path):
- iv = InputVideoStream()
- iv.open(path)
- self.videoHead(path)
- print self.topDuration
- frameDiff = list(enumerate(iv.readframe())) #bmp -> [io][1]
- self.totalFrame = frameDiff [-1][0]
- #16 imgs
- self.genImgs = []
- curImg = 0
- while True:
- if curImg < 16:
- self.genImgs.append(randint(1,self.totalFrame))
- curImg = curImg + 1
- else:
- break
- try:
- src = PIL.Image.open("src.png")
- ciz = PIL.ImageDraw.draw(src)
- ft = PIL.ImageFont.truetype("arial.ttf",32)
- ciz.text((190,15),self.fileName,font=ft) #fileName
- src.save("1.png")
- #print frameDiff[5][0]
- for i in self.genImgs:
- imj = PIL.Image.open(StringIO.StringIO(frameDiff[i][1])) #base io -> [capsNo][1]
- imj.save("%s.png"%i)
- except NameError:
- src = Image.open("src.png")
- ciz = ImageDraw.draw(src)
- ft = ImageFont.truetype("arial.ttf",32)
- ciz.text((190,15),self.fileName,font=ft) #fileName
- src.save("1.png")
- #print frameDiff[5][0]
- for i in self.genImgs:
- imj = Image.open(StringIO.StringIO(frameDiff[i][1])) #base -> [io][1]
- imj.save("%s.png"%i)
我的错误,
选择 | 换行 | 行号
- Traceback (most recent call last):
- File "o.py", line 275, in (module)
- run = capsGen()
- File "o.py", line 42, in __init__
- self.videoGen() #for developers
- File "o.py", line 157, in videoGen
- ciz = ImageDraw.draw(src)
- NameError: global name 'ImageDraw' is not defined
但我安装了Pillow模块,并且我在导入PIL或Image..N模块时创建了空的PYTHON文件。它不仅仅是在处理my_project(o.py)
而不是你的利息。
干得好。