C# 设置Magick.NET集合中图像的选项

C# 设置Magick.NET集合中图像的选项,c#,magick.net,C#,Magick.net,我正在尝试减少我正在导出的GIF动画的文件大小,我已经阅读了如何做到这一点。另一个线程建议降低质量,增加压缩并稍微模糊图片,这正是我想要做的: using (MagickImageCollection col = new MagickImageCollection(@"C:/PathToGif")) { for (int i = 0; i < col.Count; i++) { col[i].Q

我正在尝试减少我正在导出的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");
        }
使用(MagickImageCollection col=new MagickImageCollection(@“C:/PathToGif”))
{
for(int i=0;i
代码运行时,设置似乎被忽略,而设置
AnimationDelay
的方法也同样有效。我通过检查输出的质量和文件大小来验证它,这似乎与我不使用任何设置时相同。即使将
quality
设置为20,也会得到相同的结果

我还尝试使用
QuantizeSettings
255
的值传递给
colors
属性。这似乎锁定了我的应用程序,同时使用了50%的CPU。(在强制关闭应用程序之前,我给了它大约5分钟的时间)

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


有使用Magick.NET库经验的人能告诉我我是否做错了什么,并为我指出正确的方向吗?我找不到应用这些设置的其他方法。

GIF编码器不使用质量设置,压缩方法将始终为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方法存在错误