在Magick .NET集合中设置图像选项

时间:2014-10-10 17:18:44

标签: c# magick.net

我正在尝试减少我正在导出的GIF动画的文件大小,我已经阅读了如何做到这一点。另一个线程建议降低质量,增加压缩并略微模糊图片,这就是我正在尝试做的事情:

using (MagickImageCollection col = new MagickImageCollection(@"C:/PathToGif"))
        {
            for (int i = 0; i < col.Count; i++)
            {
                col[i].Quality = 85;
                col[i].CompressionMethod = CompressionMethod.LZW;
                col[i].Strip();
            }

            col.Write(@"C:/Path/To/Outputh");
        }

代码运行但设置似乎被忽略,而设置AnimationDelay的方式相同。我通过检查输出的质量和文件大小来验证它,这似乎与我不使用任何设置时相同。即使将quality设置为20,也会得到相同的结果。

我还尝试使用QuantizeSettings255的值传递给colors属性。这似乎只是锁定我的应用程序,同时使用50%的CPU。 (我强行关闭申请前约5分钟给了它)

我的应用程序处理大约950 kB的.GIF并将其转换为5.3 mB,这是不可接受的。 (免责声明:我在.GIF上添加了大约20 +帧,并在其上绘制了一个叠加层。)

有兴趣使用Magick .NET库的人能否告诉我,我做错了什么并指出了我这样做的正确方向?我无法找到应用这些设置的不同方式。

1 个答案:

答案 0 :(得分:2)

GIF编码器不使用质量设置,CompressionMethod将始终为CompressionMethod.LZW。如果要优化输出文件,则应执行以下操作:

using (MagickImageCollection col = new MagickImageCollection(@"C:/PathToGif"))
{
  col.Coalesce();

  AddOtherImages(col);

  col.Optimize();
  col.OptimizeTransparency();

  col.Write(@"C:/Path/To/Output");
}

确保升级到最新版本,先前版本中的Optimize / OptimizeTransparency方法存在漏洞。

相关问题