我在使用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