私はサーバにアップロードする前に圧縮したい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);
ビットマップをディスクに保存し、ファイルを圧縮します。 –
イメージはすでにディスクに保存されており、サイズは約100MBです。だから私はOOMを引き起こすので、メモリにビットマップをロードしたくありません。私が必要とするのは、ファイルの圧縮バージョンを作成し、アップロード時間を最適化することです。 – Ammar
どの形式で画像をアップロードしていますか? –