无需读入内存即可压缩图像

时间:2017-03-28 18:22:24

标签: android android-bitmap image-compression

我在SD卡上有一个大图像文件,我想在上传到服务器之前压缩它。但是要使用Bitmap.compress(CompressFormat format, int quality, OutputStream stream)压缩图像,我们需要将图像读入内存并保存压缩版本。 有没有办法生成图像的压缩版本而无需将位图读入内存。

我正在使用以下代码进行压缩。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;

Bitmap finalBitmap = BitmapFactory.decodeFile(originalFile.getAbsolutePath(), options);    

File local = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),  "/my_images");
local.mkdirs();
File compressedFile = new File(local, "test.jpg");
FileOutputStream out = new FileOutputStream(compressedFile);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 70, out);

1 个答案:

答案 0 :(得分:0)

BitmapFactory可以在从磁盘读取时调整图像文件的大小。你最终得到一个小位图。然后将该位图压缩为文件并上传该文件。