У меня есть большой файл изображения на 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);