2017-08-01 21 views
1

PIL.ImageTk.PhotoImageをファイルに保存します。私のアプローチは、 "開いた"ファイルを作成し、 "書き込み"メソッドを呼び出すことですが、私はオブジェクトからバイト配列を取得する方法がわからないので、動作しません。PIL.ImageTk.PhotoImageをjpgとして保存するには

def store_temp_image(data, image): 
    new_file_name = data.number + ".jpg" 
    with open(os.path.join("/tmp/myapp", new_file_name), mode='wb+') as output: 
     output.write(image) 

エラーメッセージは次のとおりです:

TypeError: a bytes-like object is required, not 'PhotoImage' 

私は通常ImageTkは、他の方法でラウンドPILオブジェクトにオブジェクトではなく、変換するための方法を見つけます。ドキュメントから私はヒントも得られませんでした。

答えて

0

はあなたが含まImageオブジェクトを取得することができ、そこから

http://pillow.readthedocs.io/en/3.1.x/reference/ImageTk.html#PIL.ImageTk.PhotoImage

...これを見てください。どちらがあなたが期待している仕事を行うsave(...)メソッドを持っています。

http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.save

は、このように、この(未テスト)コードは、ジョブを実行する必要があります。

def store_temp_image(data, image): 
    new_file_name = data.number + ".jpg" 
    new_file_path = os.path.join('/tmp/myapp', new_file_name) 
    image.image.save(new_file_path) 

ホープ、この助けました!

+0

ありがとうございます。コードは機能しませんでしたが、別のクラスから正しいImage.Imageオブジェクトに到達するまで、オブジェクトチェーンを連結するだけで済むことを学びました。しかし、PhotoImageをImageオブジェクトに変換する方法はまだありませんでした。私は「新しい」方法と呼ぶ必要がありますか?どのようにオブジェクトを正しく渡すのですか? – Semo

関連する問題