2012-05-02 2 views
4

я пытаюсь загрузить Jpeg ресурсы изображения в растровом изображение формата ARGB_8888:BitmapFactory.decodeResource() игнорирует опцию inPreferredConfig для JPG изображений

BitmapFactory.Options opts = new BitmapFactory.Options(); 
opts.inPreferredConfig = Bitmap.Config.ARGB_8888; 
Bitmap b = BitmapFactory.decodeResource(resources, resId, opts); 
Log.d("test", b.getConfig().toString()); 

Здесь RESID является идентификатором ресурса изображения JPEG. И выход «RGB_565». Пробовал это в эмуляторах Android 2.2 и 2.3.

Docs из «» inPreferredConfig говорят:

Если это не нулевой, то декодер будет пытаться декодировать в этой внутренней конфигурации. Если он равен нулю или запрос не может быть удовлетворен, декодер попытается выбрать наилучшую конфигурацию соответствия, основанную на глубине экрана системы , и характеристики исходного изображения, такие как , как если бы он имел пиксель альфа (требуется config, который также делает). Изображение загружается конфигурацией ARGB_8888 по умолчанию.

Так я ударяя случай «запрос не может быть удовлетворены»? :) Но я честно не вижу, как очень сложно декодировать RGB_565 в ARGB_8888.

Так что я подумал, что я делаю неправильно, или это ошибка в Android ...

+0

Имея тот же вопрос. Решено еще? – tofi9

+0

Нет, не решил. IIRC Мне пришлось использовать png вместо jpg ... – dimsuz

+0

Я узнал, что моя проблема была моей ошибкой. Растровое изображение не загружается в RGB_565. Он преобразуется во время, когда я пытаюсь его повернуть («Bitmap.createBitmap (растровое изображение, 0, 0, ширина, высота, матрица, истина)») – tofi9

ответ

1

При загрузке JPEG, необходимо установить альфа-канал, правда:

bitmap.setHasAlpha(true); 
1

После просматривал источника я могу только сказать, что решение следовать определенной inPreferredConfig делается в родном коде. ref: source

Я бы предположил, что jpg не может иметь альфа-канал, который декодирует его RGB_565, потому что это самая эффективная конфигурация для не альфа-изображения. Если вы действительно хотите, чтобы он был декодирован до ARGB_8888, преобразуйте изображение в png.

+0

Да. Я также проверил источник и увидел, что он передан в собственный код ... К сожалению, в настоящее время я не могу продолжать работать с png, потому что это сделает мой файл apk слишком большим - у меня есть много больших jpg-файлов, упакованных в него , но это еще одна история :) Будет ждать других ответов. Спасибо за ваше! :) – dimsuz

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