Glide - 下载并调整 GIF 文件大小

Glide - download and resize GIF into a file

我需要下载一个 GIF 并将其保存到外部存储,以便我可以通过 MMS.Messages 发送它有 300kb 的限制,大多数 GIF 都太大了,所以我需要调整它们的大小。

我在项目的其余部分使用 Glide,Glide 有一个漂亮的功能,理论上应该可以下载调整大小的图像。但事实并非如此。

简而言之,这是我在后台线程中调用的代码:

byte[] bytes = Glide.with(context)
                    .load(url)
                    .asGif()
                    .toBytes()
                    .into(250, 250)
                    .get();
file = new File(fileName);

FileOutputStream fileWriter = new FileOutputStream(file);
fileWriter.write(bytes);
fileWriter.flush();
fileWriter.close();

下载的文件仍保持其原始大小,即超过 300kb 的 MMS 限制,而它们应为 250x250 像素。

您也可以压缩该文件,然后存储在数据库中 这个 link 会对你有所帮助。在此首先将 .gif 转换为 .png 然后使用它。 Android - Best way to convert .gif to .png

在 Glide Github 上问了同样的问题并在那里得到了答案。显然 Glide 只会调整大于 500 x 500 的图像,除非使用 fitCenter()(或任何其他)转换。

因此,要调整 .gif 文件的大小,请使用此代码:

byte[] bytes = Glide.with(context)
                        .load(url)
                        .asGif()
                        .toBytes()
                        .transform(new GifDrawableTransformation(new CenterCrop(context), Glide.get(context).getBitmapPool()))
                        .into(250, 250)
                        .get();