徹底的な検索にもかかわらず、まだ尋ねられていないように見える質問を受けたのはこれが初めてです.
Bitmap.createScaledBitmap()
入力の構成に関係なく、結果のスケーリングされたビットマップが常にであるという問題がARGB_8888
あります。当然、これは限られたメモリで作業する場合の問題です。
InputStream is;
try {
is = mAssets.open("test.png");
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Config.ARGB_4444;
Bitmap originalBitmap = BitmapFactory.decodeStream(is, null, opts);
System.out.println("Original Config: " + originalBitmap.getConfig());
mScale = (float) mHeight / originalBitmap.getHeight();
mBitmapScaled = Bitmap.createScaledBitmap(originalBitmap, (int)(mScale*(float)originalBitmap.getWidth()),
(int)(mScale*(float)originalBitmap.getHeight()), true);
System.out.println("Scaled: " + mBitmapScaled.getConfig());
originalBitmap.recycle();
is.close();
} catch (IOException e) {
// Do something.
}
上記のコードは出力を返します。
元のビットマップ: ARGB_4444
スケーリング: ARGB_8888
このBitmap.createScaledBitmap()
メソッドは Config を使用しないため、これを防ぐ方法はないようです。何か案は?