1

我尝试使用位图工厂选项 inScaled、inDensity、inTargetDensity 来缩放位图。例如,如果我的位图大小为 960 X 600,我想放大到 1440 X 900 的大小。所以我将密度设置为 2,目标密度设置为 3。返回的位图大小与第一个返回的大小相同decodeByteArray 函数。位图未根据密度因子进行缩放。我的代码有什么问题?

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 回答