所以我在运行这个循环函数时遇到错误,我无法弄清楚我做错了什么。
该脚本只是通过缩放字体大小来尝试将文本放入图像中,直到它足够小。第一次运行是正确的,输入if tSize,但是当它具有正确的字体大小时,它会崩溃。
def calculateFontSize(scale, width, height, quoteL, fontsPath):
fontSize = int(height*scale)
if fonts:
fnt = ImageFont.truetype(os.path.join(fontsPath,fonts[randint(0,len(fonts)-1)]),fontSize)
else:
fnt = ImageFont.truetype(wd+'\\fonts\\IndieFlower.ttf',fontSize) # Selected font
tSize = [d.textsize(quoteL[0],font = fnt),d.textsize(quoteL[1],font = fnt)]
if tSize[0][0] > width or tSize[1][0] > width:
scale = scale - 0.005
calculateFontSize(scale, width, height, quoteL, fontsPath)
else:
return tSize, int(fontSize), fnt
tSize, fontSize, fnt = calculateFontSize(scale, width, height, quoteL, fontsPath)
这是我得到的错误:
Traceback (most recent call last):
File "C:\script.py", line 286, in <m
odule>
main()
File "C:\script.py", line 275, in ma
in
image = writeOnImage(picture,quoteL)
File "C:\script.py", line 188, in wr
iteOnImage
tSize, fontSize, fnt = calculateFontSize(scale, width, height, quoteL, fonts
Path)
TypeError: 'NoneType' object is not iterable
我做错了什么?
已解决:当我在内部调用它时,我应该返回函数。
答案 0 :(得分:0)
calculateFontSize
未在函数的第二个None
分支中返回任何内容(因此它将隐式返回if
)。