我有一个必须转换为gif文件的png文件。 其中有一个透明的部分,当我保存时,透明部分是黑色而不是透明的。 这是我的代码:
FileStream imgStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write);
Image.FromFile(imageInput).Save(imgStream, ImageFormat.Gif);
这里,imageinput是我的png的完整路径,输出文件是扩展名为.gif的filefullpath。
你能看到这里有什么问题吗?米歇尔
答案 0 :(得分:5)
PNG使用alpha透明度,这意味着每个像素除了颜色外,还包含一个表示透明度的值(称为alpha
)。这允许PNG图像是半透明的。
GIF图像使用二进制透明度,这意味着每个像素只包含一种颜色,但可能的颜色之一是Transparent
。
因此,PNG的透明部分将为黑色,但完全透明 保存GIF文件时,将忽略Alpha值,导致黑色。
你需要遍历图像中的像素,用 Color.Transparent
替换任何颜色为0的颜色。
编辑:您需要致电MakeTransparent
答案 1 :(得分:3)
正如其他海报所指出的那样,GIF不支持Alpha透明度 - 但GIF中的单色可以设置为完全透明。您可以将PNG转换为256色调色板位图,并将任何完全透明(A = 255)替换为Colors.Transparent
,然后将新图像另存为GIF。
有关详细信息,请参阅ImageAttributes
和ColorMap
。
答案 2 :(得分:2)