我需要加載一個jpeg->繪製一個半透明的矩形 - >使用wx.Bitmap的python wx包保存jpeg文件 。 但矩形看起來完全不透明。用wx.Bitmap在jpeg文件上繪製一個半透明的矩形
我使用Windows 7 32bpp。 我檢查並試用了「Docs and Demos \ demo \ AlphaDrawing.py」wx demo,它運行良好。 它在wx.Panel上正確繪製了一個半透明的矩形。
我在互聯網上檢查了這個問題的解決方案,但沒有解決方案工作。
我創建了一個更簡單的例子,儘量減少錯誤的可能性,但仍然無法正常工作。 加載一個jpg->畫一個半透明rectangle->保存爲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)
的打印效果:假/真/真 而且還輸出它是完全不透明的矩形
我已知的jpeg沒有alpha通道,但我不想要一個32bpp的jpeg。 只是輸出顯示與背景混合的矩形。
好點!我閱讀了文檔,它與您提到的相符。 但是,現在我做了一些測試,使用Windows 7加載32bpp .png和.bmp。實際上結果是相反的。 如果我做的: 打印wimg.HasAlpha() BMP = wimg.ConvertToBitmap() 打印bmp.HasAlpha() 我得到真正的兩次上的.bmp裝載,假的巴紐 但是,這仍然沒有按解決了我的問題。 我要更新帖子,以反映真正的問題: 在jpeg文件上繪製半透明矩形 –