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

标签 c# gdi+

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

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

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

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

你能看出这里出了什么问题吗?

米歇尔

最佳答案

PNG 使用 alpha 透明度,这意味着每个像素除了其颜色外,还包含一个表示其透明度的值(称为 alpha)。这允许 PNG 图像是半透明的。

GIF 图像使用二进制透明度,这意味着每个像素只包含一种颜色,但其中一种可能的颜色是透明

因此,PNG的透明部分会被涂成黑色,但完全透明。
当您保存 GIF 文件时,alpha 值将被忽略,从而导致黑色。

您需要遍历图像中的像素,用 Color.Transparent 替换任何 alpha 为 0 的颜色。

编辑:您需要调用 MakeTransparent

关于c# - 使用 gdi+ (C#) 将 png 转换为 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989450/

相关文章:

c# - System.Diaganostics.Process.Id 与任务管理器中显示的进程 ID 不同。为什么?

C# Mongo - Linq 按枚举过滤 -> 转换异常

c# - 将原始 RGB 字节数组转换为 JPG 编码的字符串 base64

c# - GDI 整体剪裁范围

c# - Mysql has exceeded the max_user_connections on c# website 错误

c# - ASP.Net Web 应用程序连接到主机 SQL 数据库

c# - 从 byte* 转换为 byte[]

c# - GDI+ 在基线上绘制不同大小的文本存在 off-by-1px 问题

gdi+ - System.Drawing.Image.FromFile 不关闭文件流

c# - Image.Save(..) 抛出 GDI+ 异常