用gdi +(C#)将png转换为gif

时间:2010-01-01 19:58:19

标签: c# gdi+

我有一个必须转换为gif文件的png文件。 其中有一个透明的部分,当我保存时,透明部分是黑色而不是透明的。 这是我的代码:

FileStream imgStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write);

Image.FromFile(imageInput).Save(imgStream, ImageFormat.Gif);

这里,imageinput是我的png的完整路径,输出文件是扩展名为.gif的filefullpath。

你能看到这里有什么问题吗?

米歇尔

3 个答案:

答案 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。

有关详细信息,请参阅ImageAttributesColorMap

答案 2 :(得分:2)

GIF图像格式不支持Alpha透明度。

  • GIF支持24位RGB。
  • PNG支持32位RGBA。

A用于指定透明度和 我想这个转换器会忽略A值。

PNG

GIF