Сохранить анимированный Drawable в GIF-файл? - PullRequest
0 голосов
/ 02 июня 2018

Я пытаюсь создать клавиатуру с изображением Android Commit Content API .Чтобы реализовать это, мне нужно иметь возможность хранить файлы .png и .gif на устройстве и создавать из них файловые объекты.

В настоящее время я использую библиотеку Glide для получения изображений из Интернета.,Пример изображения, которое я мог бы получить: this .Библиотека Glide предоставляет мне drawables, которые содержат анимированные GIF-файлы.Мне нужно иметь возможность кодировать эти drawables в .gif файлы, которые могут быть сохранены в виде файлов на телефоне пользователя.

Как я могу это сделать?

Я просмотрел существующие записи, например: Как преобразовать Drawable в растровое изображение? , но они бесполезны, поскольку объект Bitmap не может хранить анимированные GIF-файлы.

Этот пост: сохранение файла gif из файла drawable в телефон sd?и удалить его из sd после использования также кажется уместным, но он не объясняет, как превратить анимированный объект Drawable в список Bitmap объектов.

Также не объясняется, как сохранить серию Bitmap объектов в 1 GIF-файл.

1 Ответ

0 голосов
/ 23 января 2019

Это способ сохранить GifDrawable из библиотеки Glide в виде файла.

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()
}
...