枕を使用して画像にテキストを追加する画像エディタを作成しようとしています。私の問題は、編集した画像を保存して、ユーザーが保存ダイアログを開くことで保存ファイルの名前を選択できるようにすることです。他の質問と回答を見ると、私はこの思い付いた:tkinterとPythonのPilのファイルダイアログを使用して編集した画像(png)を保存する方法
def onOpen(self):
im = Image.open(askopenfilename())
caption = simpledialog.askstring("Label", "What would you like the label on your picture to say?")
fontsize = 15
if im.mode != "RGB":
im = im.convert("RGB")
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("arial.ttf", fontsize)
draw.text((0, 0),str(caption),(255,0,0),font=font)
file = filedialog.asksaveasfile(mode='w', defaultextension=".png")
if file:
file.write(im)
file.close()
それを実行している場合しかし、私は次のエラーを取得する:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Renee\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
File "C:\Users\Renee\AppData\Local\Programs\Python\Python35-32\tkinterguitest.py", line 52, in onOpen
file.write(im)
TypeError: write() argument must be str, not Image
私は問題が書き込みのみで使用することができることを知っています文字列なので、file.writeのようなコマンドがありますが、イメージはありますか? ありがとう!
ありがとうございました!残念ながら私はまだエラーが発生しています。これはエラーです: 'TypeError:write()引数は、書き込み引数を取り除いたので、奇妙なバイトではありません.' – Renee
特に、エラーは' onOpenで39行目です。 im = Image.open (askopenfilename()) 'と' line 52、onOpen im.save(file)#は画像を入力ファイル名に保存します。 ' – Renee
問題がこの行にあることを知りました: 'file = filedialog.asksaveasfile私がwbで開くと、mode = 'w'、defaultextension = ".png"、filetypes =(( "PNGファイル"、 "* .png")、( "All Files"、 "*。*"))) ' wの代わりにそれを保存しますが、テキストは表示されませんでした。 – Renee