22

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

4

3 に答える 3

12

最初にイメージをロードしてターゲット サイズにできるだけ近いサイズを取得するときにBitmapFactory.Options.inSampleSizeを使用Bitmap.createScaledBitmapしてから、必要な正確なサイズにスケーリングするために使用します。

この回答には、このためのコードがいくつかあります。

于 2012-02-20T12:28:31.130 に答える
6

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

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

于 2012-02-20T12:28:26.883 に答える
4

次のようなことを試すことができます:

int imageWidth, imageHeight;

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

ここで、独自の幅と高さを追加できます。bitmapPictureのオブジェクトですBitmap。これがあなたに役立つかどうか教えてください。

于 2012-02-20T12:21:25.440 に答える