2017-05-01 9 views
1

PILを使用してこのスレッドの後にグレースケールpngでテキストを書き込もうとしています。それはかなり簡単なようですが、私は何が間違っているのか分かりません。PILとpythonを使用してグレースケールPNGにテキストを書き込むことができません2.7

しかし

Add Text on Image using PIL

、私はそれがdraw.text機能に死ぬやろう:

from PIL import Image, ImageDraw, ImageFont 
img = Image.open("test.png") 
draw = ImageDraw.Draw(img) 
font = ImageFont.truetype("open-sans/OpenSans-Regular.ttf", 8) 
# crashes on the line below: 
draw.text((0, 0), "Sample Text", (255, 255, 255), font=font) 
img.save('test_out.png') 

これは、エラーログです:

"C:\Python27\lib\site-packages\PIL\ImageDraw.py", line 109, in _getink 
ink = self.draw.draw_ink(ink, self.mode) 
TypeError: function takes exactly 1 argument (3 given) 

誰もが問題を私を指摘することができます?

+0

私は 'IMG = Image.new( "RGB" をやったが、それは、MacOSでのPython 2.7.13と4.1.0枕で私の作品も:)で、 (300,300)) 'を使用します。完全なトレースバックは何ですか?どのようなバージョンの枕を使用していますか? – Hugo

+0

@Hugo私の答えを見てください。私はいくつかのハッキングをしなければならなかった:) – gmmo

答えて

3

問題は、pngが8ビットのグレースケールであることです。 8ビットイメージの上に描画するには、draw.text呼び出しで単一の色を使用する必要があります。言い換えれば:

# this works only for colored images 
draw.text((0, 0), "Sample Text", (255, 255, 255), font=font) 

# 8-bit gray scale , just pass one value for the color 
# 0 = full black, 255 = full white 
draw.text((0, 0), "Sample Text", (255), font=font) 

これは

関連する問題