枕头:使用Draw.rectang的奇怪行为

2024-05-15 22:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用枕头画一个环形的长方形。这在我的台式电脑上有效,但在我的笔记本电脑上却抛出了一个奇怪的异常。

这是代码(简称):

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)

我不明白,为什么这段代码失败了:在Pillow自己的documentationPIL.ImageDraw.Draw.rectangle中用这些参数定义了rectangle(xy, fill=None, outline=None)

既然文档显式地列出了可选参数filloutline,枕头为什么抱怨它只需要一个参数?

pip freeze说枕头的版本是3.3.1


Tags: 代码imageselfnoneimg参数pilfill