如何使用C#调整动画gif图像的大小?

Jai*_*res 5 c# image gif animated-gif

有没有一种方法可以使用C#创建动画gif图像的副本?

我想要的是使用用户提供的高度和宽度参数生成给定gif图像的副本.我已经尝试了几个小时来完成此操作但是生成的图像不能保留原始动画.

Tom*_*len 5

花了我一段时间找到这个,但终于找到了解决方案:

通过NuGet 安装Magick.NET,可以在以下位置找到许可证:https : //magick.codeplex.com/license

示例代码:

var newWidth = 100;
using (var collection = new MagickImageCollection(new FileInfo(@"C:\test.gif")))
{
    collection.Coalesce();
    foreach (var image in collection)
    {
        image.Resize(newWidth, 0);
    }
    collection.Write(@"c:\resized.gif");
}
Run Code Online (Sandbox Code Playgroud)

根据我的测试,这适用于alpha通道和变化的帧速率。似乎是完美的!

  • 我必须删除对 Coalesce() 的调用才能使其正常工作。另外,如果您想在本地调整大小,请将 Write() 替换为 ToBitmap(ImageFormate.Gif)。而且,这**极其**慢。不建议用于需要速度的实时应用程序。 (2认同)

Big*_*ump 4

您需要循环浏览 GIF 动画中的帧并调整每一帧的大小。

可能还想看看GifLib