如何在 Android 中调整 GIF/Animated WebP 图像文件的大小

How can I resize GIF/Animated WebP image files in Android

我想调整 Android 中的 gif 和动画 webp 文件的大小。

我试过几个库,比如 ffmpeg(not have animated webp encode), ImageMagick, Sharp 但无法添加到 android 项目中,因为它们会给出各种错误,除了那些库具有足够多的功能之外不必要地增加应用程序大小。

我也尝试了 kMagick、Glide,但是 kmagick 为动画 gif 提供了混乱的输出(静态图像适用于 fina) glide 不会改变大小,而是保留原始文件(但适用于静态图像)

我问了 kmagick 和 riase 的开发者关于 glide 的问题。

PS:我一直在试验各种库以获得所需的输出。我尝试、测试了许多库,然后也在他们的回购协议中提出问题,如果某些方法来自 Stack Overflow 答案或文章,我也在那里发表评论。我很震惊地知道 gif 和 webp 动画图像文件的大小调整和它们之间的转换对于 Android 开发人员来说是如此困难,以至于没有一个库可以像我们处理静态图像那样轻松地操作 gif webp。 (网络充满了操纵 gif webp 的视图,即调整大小、适合、裁剪、翻转、旋转)。

经过大量的搜索和实验,我终于找到了解决方案。

对于 Gif:

  • 使用解码器从 gif 中提取帧
  • 调整每个位图的大小。
  • 使用编码器将它们编码成 webp 或 gif

对于 Webp:

  • (需要 Glid)使用给定的代码将帧提取为位图。
  • 调整它们的大小
  • 编码成gif/webp

(延迟也可以与编码器一起使用)

Gif编码解码器 https://github.com/waynejo/android-ndk-gif

Webp 编码器 https://github.com/b4rtaz/android-webp-encoder

使用 Glide 进行 Webp 解码:

调整大小: