1

我的简单代码将我从这个 PNG在此处输入图像描述带到这个 GIF 在此处输入图像描述,这是不可接受的。我知道 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# 指出我的愚蠢,那就太好了,谢谢。

4

2 回答 2

4

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

这里有一篇很棒的文章(包含代码)可以做到这一点。抓住OctreeQuantizer然后它就像示例代码一样简单:

   var quantizer = new OctreeQuantizer(255, 8);
   using (var quantized = quantizer.Quantize(image))
   {
       quantized.Save(target, ImageFormat.Gif);
   }
于 2013-02-12T11:17:17.037 回答
2

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

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

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

于 2013-02-12T11:17:04.903 回答