c# - 如何使用 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
解决方案
如果要读取包含多个帧的图像,则需要使用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 文件。
推荐阅读
- angular - 一旦我将组件留在 Angular 中,就停止调用连续函数
- php - 如何删除单行txt文件的行尾符号(使用sed/awk)?
- authentication - 在 ASP.NET Core 中进行社交登录后,禁止用户并将用户重定向到不同的页面
- javascript - 使用 pug 构建 express.js 应用程序时出错
- ios - 如何触发ipa安装完成事件?
- rust - 如何简化重复功能逻辑
- javascript - 使用 Reactstrap 从 API 填充下拉列表
- firebase - Firebase 的 GA | 在漏斗的哪一步使用“present_offer”事件
- javascript - 如何通过单击html表格中的按钮来设置类
- reactjs - React-Typescript:JSX 元素类型“组件”没有任何构造或调用签名