Androidで大きなビットマップファイルのサイズを変更して出力ファイルをスケーリングする
ファイルに大きなビットマップ(3888x2592など)があります。次に、そのビットマップのサイズを800x533に変更して、別のファイルに保存します。通常、Bitmap.createBitmapメソッドを呼び出してビットマップをスケーリングしますが、最初の引数としてソースビットマップが必要です。元の画像をBitmapオブジェクトに読み込むとメモリが不足するため、これを指定することはできません(たとえば、こちらを参照)。 また、ビットマップを正確な幅と高さにサイズ変更したいのでBitmapFactory.decodeFile(file, options)、たとえばを指定してビットマップを読み取ることもできませんBitmapFactory.Options.inSampleSize。を使用inSampleSizeすると、ビットマップのサイズが972x648(使用する場合inSampleSize=4)または778x518(使用する場合inSampleSize=5、2の累乗すらありません)にサイズ変更されます。 また、最初のステップで972x648などのinSampleSizeを使用して画像を読み取り、2番目のステップで正確に800x533にサイズ変更することも避けたいです。 私の質問を要約すると、10MP以上の大きな画像ファイルを読み取り、それを新しい画像ファイルに保存し、OutOfMemory例外を発生させずに特定の新しい幅と高さにサイズ変更する方法はありますか? またBitmapFactory.decodeFile(file, options)、Options.outHeightとOptions.outWidthの値を手動で800と533に設定してみましたが、そのようには動作しません。