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

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

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

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

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

Ответы [ 2 ]

22 голосов
/ 26 апреля 2012

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

BitmapFactory.Options op = new BitmapFactory.Options();
op.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeFile(path, op);
1 голос
/ 26 июня 2011

Если у вас есть растровое изображение, вы можете вызвать метод копирования, указав BitmapConfig, что в основном и является тем, что вам нужно. http://developer.android.com/reference/android/graphics/Bitmap.html#copy(android.graphics.Bitmap.Config,boolean)

...