using (var bmp = new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb))
using (var g = Graphics.FromImage(bmp))
{
g.Clear(Color.Transparent);
g.DrawImage(image, 0, 0);
bmp.Save("image.bmp", ImageFormat.Bmp);
}
问题应该是明确的:为什么保存到 BMP 会将透明度转换为黑色,同时保存为 PNG 保持它 ?
只是为了澄清: 图片 采用 Format8bppIndexed 格式,其调色板确实包含透明色(例如,它正确地绘制到表单/图片框上)
编辑:我的不好, Bitmap.Save()实际上以 Format32bppRgb 格式保存BMP,即使位图格式为的 Format32bppArgb 的
答案 0 :(得分:6)
这是因为默认情况下 bmp 文件格式不支持 png 文件格式的透明度。
如果你想要透明度,你将不得不使用png。压缩算法是无损的,因此您不会在图像中获得伪像。该文件在磁盘上占用的空间也会减少。