2016-06-27 2 views
0

Как я могу построить растровое изображение оригинального размера из байтового массива?Растровое изображение исходного размера с использованием BitmapFactory decodeByteArray

byte[] imageAsBytes = Base64.decode(b64.getBytes(), Base64.DEFAULT); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inScaled = false; 
    options.inSampleSize = 1; 
    return BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length, options); 

Проблема заключается в том, что создается растровое изображение несколько раз меньше (примерно на 3 раза), чем оригинал ...

+0

Это выглядит очень правильно для меня, если байт [] имеет правильный формат. Поскольку вы ничего не пишете о том, что не так, на ваш вопрос нет ответа. –

+1

Я использую BitmapFactory.Options opt = new BitmapFactory.Options(); \t \t \t \t \t opt.inDensity = DisplayMetrics.DENSITY_DEFAULT; \t \t \t \t \t opt.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT; \t \t \t \t \t opt.inScaled = false; , даже если используемые вами параметры должны работать. Попробуй. Если это не поможет, ваши входные данные неверны (как в исходном размере растрового изображения). –

+0

Странный (по крайней мере для меня), но это был ключ: options.inDensity = DisplayMetrics.DENSITY_DEFAULT; Спасибо @EmanuelMoecklin. Будете ли вы отправлять ответ, чтобы я мог отметить его как правильно? – fritz

ответ

1

Использование:

BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inDensity = DisplayMetrics.DENSITY_DEFAULT; 
opt.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT; 
opt.inScaled = false; 

Согласно документации, она должна работать с неавтоматического .inScaled = false, но это Android в конце концов ... Я использую этот код уже много лет, и он отлично работает для меня.

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