* EDIT * ありません、私は(実際には透明透明ビットで。)ただ単にPNGをロードし、Tkのキャンバスに、それをレンダリングする.BMP を変換しようとしていないのですPython 3.5 + PillowではRGBA PNGがサポートされていませんか?
目標: 何透明性とPNGファイルをロードしてのpython3(およびPILのサポートのための枕を使用)とのTkinterのキャンバス
問題でそれらをレンダリングする: をRGBAとしてロードされると、彼らはキャンバスに描画するのに失敗します。それらをRGBに変換するとレンダリングされますが、もちろん透明性はありません。
環境: マックOSX、Pythonの3.5がインストールされ、枕は
ノート 3.5のパスにある検証: CuriosityRover.pngは確かにRGBA、print文を確認し、ファインダーで確認しています灰色の背景とPhotoshopの透明性を備えたWebを保存しています。
私はこのような単なるアルファ層を抽出しようとしている:
alpha = img.convert('RGBA').split()[-1]
呼び出すalpha.showは()実際にプレビューでアルファ層を私に示していますが、それは、キャンバスウィジェットでレンダリングするために失敗しました。
私が作成しようとしているIもImageOps.invert(アルファ) 用いアルファ層を反転しようとした(反転を適用した後(.SHOW呼び出しを介して、確認済み)を、私はプレビューで逆アルファ層を参照。)
transparent_area =(0、0、300、300) マスク= Image.new( 'L'、curosity.size、color = 255) 描画= ImageDraw.Draw(マスク) draw.rectangle (transparent_area、fill = 0) img.putalpha(mask)
そして、は透明な矩形領域を作成するため、canvas.create_image はが透明で問題なく動作しているようですが、何らかの形で透明度データが正しいPhotoImageを作成できません。
私は非常に多くのスタックオーバーフロータブを持っていますが、私はこれを理解できないほど恥ずかしく思っています。
これは世界で最も単純なもののようです。私は間違って何をしていますか?
import tkinter as tk
from PIL import Image, ImageTk
img = Image.open("./Assets/CuriosityRover.png")
img2 = Image.open("./Assets/CuriosityRover.png").convert('RGB')
img.show() # Shows the image just fine in preview
print(img.format, img.size, img.mode)
root = tk.Tk()
photo = ImageTk.PhotoImage(img) # img fails render, img2 works but no alpha
canvas = tk.Canvas(root, width=600, height=600, bg="black")
canvas.create_image((300, 300), image=photo)
canvas.grid(row=0, column=0)
root.mainloop()
[PILとロードRGBAビットマップ]の可能な重複(http://stackoverflow.com/questions/10453604/load-rgba-bitmap-with-pil) –
いいえ、私はロードしないのです.BMP、私はPNGをロードしています –
"レンダリングに失敗しました"とはどういう意味ですか?エラーメッセージが表示されますか?私はそれがLinux上で動作するとしか言えないので、問題はMac上でしかない。ところで:あなたは1つの画像だけで試しましたか? – furas