首页 > 解决方案 > 如何使用 Magick.NET (imagemagick) 和 C# 将 APNG 转换为 WEBP?

问题描述

我试过这样但是APNG动画丢失了

我也在寻找无损但最大压缩的设置。我不关心 CPU 时间速度等。我需要无损和最大压缩。如何做到这一点?

所以我有很多PNG文件和一些APNG文件

我会把它们都变成WEBP文件

但是我仍然想保留 APNG 动画

这里要测试的示例 APNG:https ://static.pokemonpets.com/images/npcTrainers/trainer15125down.png

     using (var image = new MagickImage(@"path\Debug\a.png"))
        {
            image.Quality = 100;
            image.Settings.SetDefine(MagickFormat.WebP, "lossless", true);
            image.Settings.SetDefine(MagickFormat.WebP, "method", "6");
            image.Write("a.webp");
        }

C# .net 框架 4.8,Magick.NET-Q16-AnyCPU,7.24.1.0

标签: c#imagemagickimagemagick-convertapngimagemagick.net

解决方案


如果要读取包含多个帧的图像,则需要使用MagickImageCollection

using (var images = new MagickImageCollection(@"apng:path\Debug\a.png"))
{
    var defines = new WebPWriteDefines
    {
        Lossless = true,
        Method = 6,
    };

    images.Write("a.webp", defines);
}

如果您想阅读动画 PNG 文件,您需要ffmpeg.exe%PATH%. 这是读取动画 PNG 文件所必需的。您还需要添加apng:以确保 ImageMagick 知道它是一个动画 PNG 文件。


推荐阅读