我在使用Pillow的for-loop中绘制矩形。这在我的台式电脑上工作,但在我的笔记本电脑上抛出一个奇怪的例外。枕头:使用Draw.rectangle的奇怪行为
这是代码(缩短):
from PIL import Image, ImageDraw
(...)
img = Image.open(sys.argv[1])
rimg = img.copy()
rimg_draw = ImageDraw.Draw(rimg)
(...)
(for-loop)
rimg_draw.rectangle((x1, y1, x2, y2), fill=None, outline=(255, 0, 0))
这引发以下异常:
rimg_draw.rectangle((x1, y1, x2, y2), fill=None, outline=(255, 0, 0))
File "/home/daniel/tensorflow2.7/lib/python2.7/site-packages/PIL/ImageDraw.py", line 203, in rectangle
ink, fill = self._getink(outline, fill)
File "/home/daniel/tensorflow2.7/lib/python2.7/site-packages/PIL/ImageDraw.py", line 124, in _getink
ink = self.draw.draw_ink(ink, self.mode)
TypeError: function takes exactly 1 argument (3 given)
我不明白,为什么这个代码失败:在枕头的自己documentationPIL.ImageDraw.Draw.rectangle
定义与这些参数:rectangle(xy, fill=None, outline=None)
。
由于文档明确列出了可选参数fill
和outline
,为什么枕头抱怨它只需要1个参数?
pip freeze
说枕头版本是3.3.1
。
不,我在两者上都使用Python 2.7,包括3.3.1虚拟环境中的Python。即使是操作系统也是如此(Manjaro,Arch-Fork)。然而,我能够“修复”这个异常:我刚刚完全删除了Pillow +依赖关系并重新安装了它......这很奇怪,因为Python异常表明实际上某些方法的用法是错误的。 .. – daniel451