Glide-下载GIF并将其调整为文件大小 [英] Glide - download and resize GIF into a file

查看:477
本文介绍了Glide-下载GIF并将其调整为文件大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要下载GIF并将其保存到外部存储中,以便可以通过彩信发送.邮件的限制为300kb,并且大多数GIF太大,因此我需要调整它们的大小.

I need to download a GIF and save it to external storage so I can send it via MMS.Messages have a limit 300kb and most of the GIFs are too large so I need to resize them.

我在项目的其余部分中使用了Glide,因此Glide具有漂亮的功能,从理论上讲,它应该下载经过调整大小的图像.但事实并非如此.

I am using Glide in rest of my project and Glide has a nifty function which should, in theory, download a resized image. But it doesn't.

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

In short, here's the code I'm calling inside a background thread:

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像素.

Downloaded files still keep their original size which is above the MMS limit of 300kb whereas they should be 250x250 pixels.

推荐答案

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

Asked the same question on Glide Github and got the answer there. Apparently Glide will only resize images that are larger than 500 x 500, unless a fitCenter() (or any other) transformation is used.

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

So, to resize the .gif file, use this code:

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

这篇关于Glide-下载GIF并将其调整为文件大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆