我有同樣的問題,當升級枕頭從2.8.1
到4.1.0
。
下面是一段示例代碼,將產生異常運行Pillow==4.1.0
時:
from PIL import Image
img = Image.new('RGBA', [100,100])
# An empty mask is created to later overlay the original image (img)
mask = Image.new('L', img.size, 255)
# Get transparency (mask) layer pixels, they will be changed!
data = mask.load()
# The function used later
def foo(x,y): return round(1.0*x/(y+1))
# Update all pixels in the mask according to some function (foo)
for x in range(img.size[0]):
for y in range(img.size[1]):
data[x,y] = foo(x,y)
輸出:
Traceback (most recent call last):
File "x.py", line 12, in <module>
data[x,y] = foo(x,y)
SystemError: new style getargs format but argument is not a tuple
實際的錯誤在這裏有什麼做什麼說明在例外。它實際上是分配給數據的數據的類型是錯誤的。在2.8.1
都int
和float
是有效的,所以像data[x,y]=1.0
是有效的,而在4.1.0
你需要使用整數像任何這樣:
data[x,y]=1
data[x,y]=int(1.0)
因此在上面foo
的例子可以被重新定義爲以下在這兩個2.8.1
和4.1.0
工作:
def foo(x,y): return int(round(1.0*x/(y+1)))
(2,2)不起作用它需要的東西,分模1 –