存储后android图像文件大小增加

时间:2016-09-20 11:01:56

标签: android image download local-storage

我使用Android-Universal-Image-Loader使用 .loadImageSync(imageURL)方法从我的服务器下载图像文件。

然后我需要将该位图保存到用户设备外部存储器。

  

文件file = new File(mContext.getExternalFilesDir(null)+ directoryIntermediatePath,fileName);   FileOutputStream fileOutputStream = new FileOutputStream(file);   bitmap.compress(Bitmap.CompressFormat.PNG,100,fileOutputStream);

     

fileOutputStream.flush();

     

fileOutputStream.close();

我的问题是我的服务器上的.png文件,大小约为200KB,在Android设备存储上执行此过程后将变为大约700KB。

2 个答案:

答案 0 :(得分:0)

您不应将加载的图像保存到磁盘。相反,您应该使用已下载的文件。

如果我做对了,Android-Universal-Image-Loader库会使用磁盘缓存。

如果在构建ImageLoaderConfiguration时设置特定的DiskCache实现,您应该可以稍后访问此DiskCache并稍后通过以下方式检索它:

File f = DiskCacheUtils.findInCache(imageURL, diskCache);

然后您只需要在byte[]级别复制文件。

答案 1 :(得分:-1)

您可以尝试将bitmap.compress中的质量参数降低到小于100的值。但是,对于 PNG 图像,这是一种无损格式,< strong>位图将忽略质量参数。因此,一个选项是转换为JPEG以减小尺寸。例如,使用以下行:

bitmap.compress(Bitmap.CompressFormat.JPEG, 60, fileOutputStream);

有关bitmap.compress的详细信息,请查看here

如果您想使用PNG缩小到特定尺寸,则必须重新缩放图像; this SO链接可能有用。