针对PIL中ImageDraw.py报错的解决方案

时间:2023-03-09 00:39:33
针对PIL中ImageDraw.py报错的解决方案

linux mint 13开始就发现这个问题了,一直不知道怎么解决,今天突然发现了解决方案,来分享给大家

下面是修改对比,自己根据修改,这个是系统文件,需要root权限,路径/usr/lib/python2.7/dist-packages/PIL/ImageDraw.py

 +import numbers
+
from PIL import Image, ImageColor try:
@@ -98,7 +100,7 @@ def setink(self, ink):
)
if Image.isStringType(ink):
ink = ImageColor.getcolor(ink, self.mode)
- if self.palette and not Image.isNumberType(ink):
+ if self.palette and not isinstance(ink, numbers.Number):
ink = self.palette.getcolor(ink)
self.ink = self.draw.draw_ink(ink, self.mode) @@ -141,13 +143,13 @@ def _getink(self, ink, fill=None):
if ink is not None:
if Image.isStringType(ink):
ink = ImageColor.getcolor(ink, self.mode)
- if self.palette and not Image.isNumberType(ink):
+ if self.palette and not isinstance(ink, numbers.Number):
ink = self.palette.getcolor(ink)
ink = self.draw.draw_ink(ink, self.mode)
if fill is not None:
if Image.isStringType(fill):
fill = ImageColor.getcolor(fill, self.mode)
- if self.palette and not Image.isNumberType(fill):
+ if self.palette and not isinstance(fill, numbers.Number):
fill = self.palette.getcolor(fill)
fill = self.draw.draw_ink(fill, self.mode)
return ink, fill

修改完之后就不会报错了

  File "/usr/lib/python2.7/dist-packages/PIL/ImageDraw.py", line 256, in text
ink, fill = self._getink(fill)
File "/usr/lib/python2.7/dist-packages/PIL/ImageDraw.py", line 144, in _getink
if self.palette and not Image.isNumberType(ink):
AttributeError: 'module' object has no attribute 'isNumberType'