web-dev-qa-db-ja.com

Android BitmapFactoryオプションで画像を拡大縮小する方法

BitmapFactory.decodeFile(path、options)でSDカードから画像をデコードしたい。
また、2048x2048ピクセルより大きい画像を最大2048x2048に縮小したい(比率を維持)。
ビットマップを取得した後、これを手動で実行できますが、そのためには、すでに割り当てられているバイトに加えて、大量のバイトを割り当てる必要があります。
その効果を得るには、BitmapFactory.Optionsオブジェクトをどのように設定すればよいですか?
ありがとう

18
saarraz1

最初に画像をロードするときに BitmapFactory.Options.inSampleSize を使用して、可能な限りターゲットサイズに近いサイズを取得し、次にBitmap.createScaledBitmapを使用して希望する正確なサイズにスケーリングします。

this answer にこのためのコードがいくつかあります。

10
jbowes

inJustDecodeBoundstrueOptionsに設定することから始めます。これにより、画像データをロードせずに画像のサイズを取得できます。
画像サイズが最大サイズよりも小さい場合は、通常どおりにロードします。
一方、大きすぎる場合は、 inSampleSize を使用して小さなビットマップを読み取ります。

注:inSampleSizeを使用すると、デコードでフィルタリングが行われないため、詳細が失われる可能性がありますが、画像サイズが大きい(2048ピクセル)これで問題が発生することはないと思います。

5
Jave

あなたはこのようなことを試すことができます:

int imageWidth, imageHeight;

Bitmap result = Bitmap.createScaledBitmap(bitmapPicture,
                        imageWidth, imageHeight, false);

ここで、独自の幅と高さを追加できます。 bitmapPictureBitmapのオブジェクトです。これがあなたの助けになるかどうか私に知らせてください。

3
Shishir Shetty