【问题标题】:Saving PNG as GIF with .NET looks horribly speckled使用 .NET 将 PNG 保存为 GIF 看起来有可怕的斑点
【发布时间】:2013-01-27 16:11:24
【问题描述】:

我的简单代码将我从这个 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# 指出我的愚蠢,那就太好了,谢谢。

【问题讨论】:

  • 不确定它是否会有所帮助,但也许(尽可能早地)放大图像可以改善结果?

标签: .net image png gif


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。写一个 GIF 需要 200 行代码,而 BMP、JPG、PNG 只需要 2 行,真是太神奇了!
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2014-03-27
    • 2023-03-12
    • 2021-02-23
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多