1

我正在尝试减少我正在导出的 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,也会得到相同的结果。

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

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

有使用 Magick .NET 库经验的人可以告诉我我是否做错了什么,并指出我做这件事的正确方向吗?我无法找到应用这些设置的不同方式。

4

1 回答 1

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 方法在以前的版本中存在错误。

于 2014-10-13T19:09:20.370 回答