Как указать формат растрового изображения (например, RGBA_8888) с помощью BitmapFactory.decode *()?

Я делаю несколько вызовов BitmapFactory.decodeFile() и BitmapFactory.decodeResource(), и я хотел бы указать формат, который раскодированные декодируются, например RGB_565 или RGBA_8888.

В настоящее время формат декодированного растрового изображения, по-видимому, зависит от входящего изображения. Альтернативно, есть ли способ конвертировать существующее растровое изображение в определенный формат?

Причина в том, что при попытке декодирования изображения с помощью jnigraphics некоторые изображения возвращают AndroidBitmapFormat типа ANDROID_BITMAP_FORMAT_NONE, который я считаю бесполезным. Кто-нибудь знает больше о том, почему формат не будет ни одним из известных значений? Когда это происходит, встроенный сборщик изображений правильно отображает изображения, декодированные таким образом, поэтому я предполагаю, что должен быть способ справиться с ними.

Спасибо за ваш вклад!

Ответ 1

Это может быть то, что вы ищете:

BitmapFactory.Options op = new BitmapFactory.Options();
op.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeFile(path, op);