我是新手,你好所以社区
我正在开发Pillow和(Tkinter,BmpImagePlugin,cStringIO,subprocess,ctype s,re .. n)模块
如果这种情况显示我是AttributeError
,我正在使用这种方式from PIL import *
我用try-except
解决了这个代码行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)
比你感兴趣。 干得好。
答案 0 :(得分:2)
你对我们说过&#34; Tkinter&#34;模块。 如果您导入Tkinter模块,如
from Tkinter import *
通常,这就像使用程序员一样。 并且使用PIL模块,我们必须知道每个模块的类名,因为它的冲突。
图像模块中的Tkinter,图像模块中的PIL。两个.open属性几乎相同。
解决,
import Tkinter as tk
如果您使用Pillow,我建议您使用
from PIL import Image, ImageDraw, ImageFont
最后,你应该引用String名称,例如
class tryAgain(object):
def __init__(self):
self.referenceName = "Hell" + "o"
def run(self):
img = Image.open(self.referenceName)
#this like