android - Glide - 下载 GIF 并调整其大小到文件中

标签 android android-glide

我需要下载 GIF 并将其保存到外部存储,以便通过彩信发送。消息的大小限制为 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();

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

最佳答案

在 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();

关于android - Glide - 下载 GIF 并调整其大小到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129543/

相关文章:

android - 在不使用 google play 商店的情况下在 android 设备上安装 Sencha Touch 2 应用程序

android - 使用 Glide 从 URL 加载占位符以在加载 GIF 时显示 (Android)

android - 使用 Glide 时如何设置 ImageView 的最小高度并保持 "wrap_content"作为高度

android - 在 Android 上动态添加 imageViews

android - Glide with android RecyclerView 显示 OutOfMemory 错误 (OOM)

Android 图像在不同手机中的颜色变化

android - 当图像折叠时,NestedScrollView 内的 RecyclerView 不会向上滚动

android - 损坏的缓存异常 : Corrupted IndexBlock 298298 found in cache '/Users/macuser/.gradle/caches/journal-1/file-access.bin'

iphone - Zong、Paypal 和 Boku 等应用内购买提供商是否违反 iPhone 和 Android 条款和条件?

java - 用随机数填充数组android/java