2013-08-20 91 views
0

我需要加載一個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。 只是輸出顯示與背景混合的矩形。

回答

0

位圖文件沒有Alpha通道。您必須加載PNG文件才能使用透明度。 「

」與RGB數據不同,並非所有圖像都有Alpha通道,在使用GetAlpha之前,您應該檢查此圖像是否包含HasAlpha的Alpha通道請注意,目前只有從PNG文件加載透明度信息的圖像纔會有Alpha通道「。

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

+0

好點!我閱讀了文檔,它與您提到的相符。 但是,現在我做了一些測試,使用Windows 7加載32bpp .png和.bmp。實際上結果是相反的。 如果我做的: 打印wimg.HasAlpha() BMP = wimg.ConvertToBitmap() 打印bmp.HasAlpha() 我得到真正的兩次上的.bmp裝載,假的巴紐 但是,這仍然沒有按解決了我的問題。 我要更新帖子,以反映真正的問題: 在jpeg文件上繪製半透明矩形 –

相關問題