使用.NET将PNG保存为GIF看起来非常有斑点

时间:2013-02-12 11:08:08

标签: .net image png gif

我的简单代码将我从此PNG enter image description here转到此GIF enter image description here,这是不可接受的。我知道GIF并不是最好的格式,但我必须适应当前的情况。

Imports System.Drawing
Dim oImage As Image = Image.FromFile("c:\whatever\temp.png")
oImage.Save("c:\whatever\temp.gif", Imaging.ImageFormat.Gif)

我还想调整图像大小(缩小一点),但看起来更糟。我假设我需要用调色板,编码器,P模式和RGBA做一些事情......但是我的Google-fu看起来很弱,我什么都没发现!

如果有人能用一些方便的VB.NET或C#指出我的愚蠢,那就太棒了,谢谢。

2 个答案:

答案 0 :(得分:4)

基本上你需要做的是自适应地生成256色调色板,让你尽可能忠实地再现原始图像。

有一篇优秀的文章(包含代码)来执行此操作here。抓住OctreeQuantizer,然后就像示例代码一样简单:

   var quantizer = new OctreeQuantizer(255, 8);
   using (var quantized = quantizer.Quantize(image))
   {
       quantized.Save(target, ImageFormat.Gif);
   }

答案 1 :(得分:2)

您必须为输入图像找到优化的图像调色板。

看看这里:http://msdn.microsoft.com/en-us/library/aa479306.aspx

注意:我知道您正在寻找基于.NET的答案,但查看ImageMagic可能仍然值得。它为您提供了很多对转换选项的控制。甚至还有一个.NET包装器,虽然我没有亲自使用它:http://imagemagick.codeplex.com/