1

ビットマップ ファクトリ オプション inScaled、inDensity、inTargetDensity を使用してビットマップをスケーリングしようとしました。たとえば、ビットマップ サイズが 960 X 600 の場合、サイズを 1440 X 900 に拡大したいので、denisty を 2 に、targetdensity を 3 に設定しました。最初に返されたビットマップ サイズと同じ問題が返されますデコードバイト配列関数。ビットマップは、密度係数に従ってスケーリングされません。私のコードの問題は何ですか?

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeByteArray(imageData, 0, size, options);
int bmpWidth = options.outWidth;
int bmpHeight = options.outHeight;

options.inDensity = 2;
options.inTargetDensity = 3;
options.inPurgeable = true;
options.inInputShareable = true;
options.inScaled = true;
options.inJustDecodeBounds = false;

Bitmap bitmap = BitmapFactory.decodeByteArray(imageData, 0, size, options);
int scaledBmpWidth = bitmap.getWidth();
int scaledBmpHeight = bitmap.getHeight();
4

2 に答える 2

0

その理由は、すべての decodeXXX メソッドが密度オプションを考慮しているわけではないことが考えられます。配列を ByteArrayInputStream でラップし、decodeStream メソッドを使用することができます。

例を参照してください。http://code.google.com/p/android/issues/detail?id=7538 .

于 2013-08-15T09:04:38.863 に答える
-1

結果のビットマップの outWidth と outHeight を設定します。

options.outWidth = bmpWidth * factor;
options.outHeight = bmpHeight * factor;
于 2013-05-27T14:28:12.687 に答える