我需要加载一个jpeg->绘制一个半透明的矩形 - >保存jpeg文件 使用python wx包的wx.Bitmap。 但矩形看起来完全不透明。
我正在使用Windows 7和32bpp。 我检查并尝试了“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没有alpha通道,但我不想要32bpp的jpeg。 只是显示矩形与背景混合的输出。
答案 0 :(得分:0)
位图文件没有Alpha通道。您必须加载PNG文件才能使用透明度。
“与RGB数据不同,并非所有图像都有alpha通道,在使用GetAlpha之前,您应检查此图像是否包含HasAlpha的Alpha通道。请注意,目前只有从具有透明度信息的PNG文件加载的图像才会有Alpha通道。 “