0

jpeg をロードする必要があります-> 半透明の四角形を描画します-> python wx パッケージの wx.Bitmap を使用して jpeg ファイルを保存します。しかし、長方形は完全に不透明に見えます。

32bpp の Windows 7 を使用しています。「Docs and Demos\demo\AlphaDrawing.py」wx デモを確認して試してみたところ、うまくいきました。wx.Panel に半透明の長方形を正しく描画します。

この問題の解決策をインターネットで確認しましたが、解決策はどれも機能しませんでした。

エラーの可能性を最小限に抑えるために、より単純な例を作成しましたが、それでも機能しませんでした。jpgを読み込む→半透明の長方形を描く→jpgファイルとして保存

wimg = wx.Image(r"N:\Images\Wallpapers\Processed\a.jpg", wx.BITMAP_TYPE_JPEG)
print wimg.HasAlpha()
wimg.InitAlpha()
print wimg.HasAlpha()
bmp = wimg.ConvertToBitmap()
print bmp.HasAlpha()
dc = wx.MemoryDC(bmp)
r, g, b = (34,  34,  34)
dc.SetPen(wx.Pen(wx.Colour(r, g, b, wx.ALPHA_OPAQUE)))
dc.SetBrush(wx.Brush(wx.Colour(r, g, b, 128)))
dc.DrawRectangle(100, 300, 200, 200)
bmp.SaveFile(r"N:\Images\Wallpapers\Processed\b.jpg", wx.BITMAP_TYPE_JPEG)

印刷結果は次のとおりです: False/True/True それでも出力は完全に不透明な長方形です

jpeg にアルファ チャネルがないことはわかっていましたが、32bpp jpeg は必要ありません。背景とブレンドされた長方形を表示する出力のみ。

4

1 に答える 1

0

ビットマップ ファイルにはアルファ チャネルがありません。透明度を使用するには、PNG ファイルをロードする必要があります。

「RGB データとは異なり、すべての画像にアルファ チャネルがあるわけではありません。GetAlpha を使用する前に、この画像に HasAlpha のアルファ チャネルが含まれているかどうかを確認する必要があります。現在、透明度情報を含む PNG ファイルから読み込まれた画像のみがアルファ チャネルを持つことに注意してください。」

http://www.wxpython.org/docs/api/wx.Image-class.html

于 2013-08-20T16:35:19.960 に答える