我需要下载GIF并将其保存到外部存储,以便我可以通过MMS发送。消息限制为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像素。
答案 0 :(得分:0)
您也可以压缩该文件,然后存储在数据库中 此链接将帮助您。在第一次转换.gif到.png然后使用它。 Android - Best way to convert .gif to .png
答案 1 :(得分:0)
在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();