2013-05-27 3 views
1

Я попытался масштабировать растровое изображение с использованием опций фабрики растровых изображений inScaled, inDensity, inTargetDensity. Например, если у меня размер растрового изображения 960 X 600, я хочу увеличить размер до 1440 X 900. Таким образом, я установил denisty как 2 и targetdensity как 3. Ошибка возвращается размер растрового изображения такой же, как тот, который был возвращен в первая функция декодированияByteArray. Растровое изображение не масштабируется в соответствии с коэффициентом denisty. В чем проблема в моем коде?Битовая карта Android с использованием опций BitmapFactory

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(); 

ответ

-1

Установите outWidth и outHeight полученного растрового изображения.

options.outWidth = bmpWidth * factor; 
options.outHeight = bmpHeight * factor; 
+0

Это не работает в соответствии с вашим методом. – Keerthi

+1

'options.out *' переменные/свойства задаются, когда 'options.inJustDecodeBounds' установлен в значение' true'. Таким образом вы можете получить ширину, высоту и тип mime изображения, не загружая его в память. – croc

0

Причина может заключаться в том, что не все методы decodeXXX учитывают параметры плотности. Вы можете попытаться обернуть массив ByteArrayInputStream и использовать метод decodeStream.

См., Например. http://code.google.com/p/android/issues/detail?id=7538.

Смежные вопросы