【问题标题】:Save Animated Drawable to GIF File?将动画 Drawable 保存到 GIF 文件?
【发布时间】:2018-11-12 14:38:49
【问题描述】:

我正在尝试使用 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 文件。

【问题讨论】:

  • 你能解决这个问题吗?
  • @sHOLE。是的,我找到了答案。我会发布它。

标签: java kotlin gif android-drawable android-glide


【解决方案1】:

这是您可以将 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版本!
  • 你能解释一下为什么我们需要duplicate()吗?我删除它,它仍然有效。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 2021-06-24
  • 2020-09-15
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2018-11-13
  • 2014-09-01
相关资源
最近更新 更多