C# 将透明GIF保存在GDI+;或WPF
我试图在GDI+中保存一个透明的GIF,但它似乎重用了颜色表中的第一种颜色-这是GDI的一个错误吗 即使我手动设置颜色并将gif重新保存为gif,我也无法让它将透明gif输出到文件:C# 将透明GIF保存在GDI+;或WPF,c#,wpf,transparency,gdi+,gif,C#,Wpf,Transparency,Gdi+,Gif,我试图在GDI+中保存一个透明的GIF,但它似乎重用了颜色表中的第一种颜色-这是GDI的一个错误吗 即使我手动设置颜色并将gif重新保存为gif,我也无法让它将透明gif输出到文件: Bitmap b = new Bitmap("c:\\temp\\source.gif"); Bitmap canvas = new Bitmap(b.Width, b.Height); Graphics g = Graphics.FromImage(canvas); g.Clear(Color.Transpa
Bitmap b = new Bitmap("c:\\temp\\source.gif");
Bitmap canvas = new Bitmap(b.Width, b.Height);
Graphics g = Graphics.FromImage(canvas);
g.Clear(Color.Transparent);
// Draw image
g.DrawImage(b, 0, 0);
canvas.MakeTransparent(Color.Black);
canvas.Save("c:\\temp\\output.gif", System.Drawing.Imaging.ImageFormat.Gif);
在输出图像中,黑色永远不会设置为透明度颜色
或者,在WPF中有没有这样做的方法?我建议您看看这个图像处理库ImageMagick 然后使用此命令将保存的gif转换为具有透明背景的gif
convert orig.gif -transparent black transp.gif
这可能不会产生完美的结果,但值得一试。如果不想通过运行控制台命令来实现这一点,您可能还想看看ImageMagick的.NET包装器。我建议您看看这个图像处理库ImageMagick 然后使用此命令将保存的gif转换为具有透明背景的gif
convert orig.gif -transparent black transp.gif
这可能不会产生完美的结果,但值得一试。如果不想通过运行控制台命令来实现这一点,您可能还想看看ImageMagick的.NET包装器。这只是一种笨拙的旧图像格式,附带了太多专利问题。微软选择为它提供糟糕的支持:)对于这样的代码,仍然使用它是没有意义的。请改用PNG。如果问题出在GIF部分本身,那么下面是一个例子。额外好处:直接链接到Thank已经看到了这一点,但这只会在C#中重新加载时修复图像,我实际上需要GDI+的“符合标准”输出,这样我就可以在另一个程序中透明地查看GIF,或者确认GDI+无法做到这一点。我需要的“修复”是图像保存,而不是图像加载。它只是一种笨拙的旧图像格式,附带了太多的专利问题。微软选择为它提供糟糕的支持:)对于这样的代码,仍然使用它是没有意义的。请改用PNG。如果问题出在GIF部分本身,那么下面是一个例子。额外好处:直接链接到Thank已经看到了这一点,但这只会在C#中重新加载时修复图像,我实际上需要GDI+的“符合标准”输出,这样我就可以在另一个程序中透明地查看GIF,或者确认GDI+无法做到这一点。我需要的“修复”将在图像保存上,而不是图像加载上。