問題のコード
from PIL import Image,ImageDraw,ImageFont
img=Image.open('透明.png')#透明.pngは全部透明の画像
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(font = 'ヒラギノ丸ゴ ProN W4.ttc', size = 30)
draw.text((10,10), "TEXT" ,(255,255,255),font=font)
img.show()
エラーコード
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImagePalette.py", line 99, in getcolor
return self.colors[color]
KeyError: (255, 255, 255)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Volumes/USB1/真面目/python/ゴミ/カーソルの位置返す.py", line 8, in <module>
draw.text((10,10), "TEXT" ,(255,255,255),font=font)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 455, in text
ink = getink(fill)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 403, in getink
ink, fill = self._getink(fill)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 111, in _getink
ink = self.palette.getcolor(ink)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImagePalette.py", line 109, in getcolor
self.palette[index + 256] = color[1]
IndexError: bytearray index out of range
試した事
img=Image.open('透明.png')の部分を
img = Image.new("RGB",(300,300),"red")にしてみると
普通に動きました。
透明.pngの拡張子をjpgやgifにしても変わりませんでした。
画像を黒.png(全部黒の画像)に変えると以下のエラーコードが出てきました。
↓↓↓
Traceback (most recent call last):
File "/Volumes/USB1/真面目/python/ゴミ/カーソルの位置返す.py", line 8, in <module>
draw.text((10,10), "TEXT" ,(255,255,255),font=font)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 455, in text
ink = getink(fill)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 403, in getink
ink, fill = self._getink(fill)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/ImageDraw.py", line 112, in _getink
ink = self.draw.draw_ink(ink)
TypeError: function takes exactly 1 argument (3 given)

回答1件
あなたの回答
tips
プレビュー