gpt4 book ai didi

python - NameError 全局名称 'ImageDraw' 未定义

转载 作者:行者123 更新时间:2023-12-01 05:16:02 26 4
gpt4 key购买 nike

我是新人,你好so社区

我正在使用 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 模块,并且在 import PIL 或 Image..N 模块中创建了空 python 文件,它们正在工作。它不仅仅适用于 my_project (o.py)

比你的兴趣。干得好。

最佳答案

您对我们说“Tkinter”模块。如果您像这样导入 Tkinter 模块

from Tkinter import *

一般来说,这就像使用程序员一样。而使用PIL模块,我们必须知道每个模块的类名,因为它的类名是冲突的。

图像模块中的 Tkinter,图像模块中的 PIL。两者.open属性几乎相同。

解决,

import Tkinter as tk

无论你是否使用 Pillow,我建议你,像这样使用它

from PIL import Image, ImageDraw, ImageFont

最后,您应该引用字符串名称,例如,

class tryAgain(object):
def __init__(self):
self.referenceName = "Hell" + "o"

def run(self):
img = Image.open(self.referenceName)
#this like

关于python - NameError 全局名称 'ImageDraw' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23213228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com