我需要加载一个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)
打印结果是:假/真/真而且输出仍然是一个完全不透明的矩形
我知道 jpeg 没有 alpha 通道,但我不想要 32bpp jpeg。只是显示与背景混合的矩形的输出。