java - 将动画 Drawable 保存为 GIF 文件?

标签 java kotlin gif android-drawable android-glide

我正在尝试使用 Android Commit Content API 制作图像键盘。为了实现这一点,我需要能够在设备上存储 .png.gif 文件并从中创建文件对象。

目前,我正在使用 Glide 库从互联网上获取图像。我可能获取的示例图像是 this 。 Glide 库为我提供了包含动画 GIF 的 drawables。我需要能够将这些可绘制对象编码为 .gif 文件,这些文件可以保存为用户手机上的文件。

我该怎么做?

我查看了现有的帖子,例如:How to convert a Drawable to a Bitmap? ,但它们没有帮助,因为 Bitmap 对象无法存储动画 GIF。

这篇文章:saving gif file from drawable into phone sd? and remove it from sd after usage似乎也相关,但是,它没有解释如何将动画 Drawable 对象转换为 Bitmap 对象列表。

此外,它也没有解释如何将一系列 Bitmap 对象保存为 1 个 GIF 文件。

最佳答案

这就是如何将 Glide 库中的 GifDrawable 保存为文件。

private fun gifDrawableToFile(gifDrawable: GifDrawable, gifFile: File) {
    val byteBuffer = gifDrawable.buffer
    val output = FileOutputStream(gifFile)
    val bytes = ByteArray(byteBuffer.capacity())
    (byteBuffer.duplicate().clear() as ByteBuffer).get(bytes)
    output.write(bytes, 0, bytes.size)
    output.close()
}

关于java - 将动画 Drawable 保存为 GIF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50660612/

相关文章:

java - 在几个JLabel中设置相同的gif作为图标

java - XtextDocumentProvider 的依赖注入(inject)配置

java - 对象存储 - 无法访问区域 "London"中的容器

java - 为什么当我的结果集类型是 forward only 时我可以使用 first() 方法?

java - 无法在Java中一起打印字符串和 boolean 值

generics - kotlin - 删除类属性中的可为空性

java - 我什么时候可以在 AlertView 中编辑 View

java - MediaPlayer - setAudioAttributes 无法正常工作

python - PIL 在 gif 中显示所有之前的帧

c++ - 带图像的FLTK按钮