Преобразование битмапа в память в растровое изображение с помощью Bitmap.Config.RGB_565
У меня загруженный битмап, который я бы хотел преобразовать, чтобы установить конфигурацию в Bitmap.Config.RGB_565
. Есть ли простой способ преобразования Bitmap
в эту конфигурацию после того, как битмап уже загружен в память? Например, ниже у меня есть растровое изображение, декодированное из ресурсов приложения, однако, как бы преобразовать уже загруженный Bitmap
в RGB_565
? Я уверен, что это что-то простое, однако я довольно новичок в работе с Bitmaps и после нескольких часов работы в Интернете, к сожалению, я не смог найти то, что мне было нужно специально.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig=Bitmap.Config.RGB_565
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options);
Ответы
Ответ 1
Я не тестировал это, но он должен работать:
private Bitmap convert(Bitmap bitmap, Bitmap.Config config) {
Bitmap convertedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), config);
Canvas canvas = new Canvas(convertedBitmap);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
canvas.drawBitmap(bitmap, 0, 0, paint);
return convertedBitmap;
}
вызовите следующие методы:
Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565);
Вы можете делать всевозможные дополнительные преобразования, такие как вращение, растяжка и т.д., если вы используете drawBitmap с матрицей.
Ответ 2
Вы также можете попробовать следующее:
Bitmap converted = original.copy(Config.RGB_565, false);
Из документации Bitmap.copy():
Пытается создать новый растровый рисунок на основе размеров этого растрового изображения, установив новую конфигурацию растрового изображения в указанную, а затем скопировав эти растровые пиксели в новое растровое изображение. Если преобразование не поддерживается или распределитель не работает, тогда он возвращает NULL.
Просматривая исходный исходный код, вы должны хорошо конвертировать между любыми значениями Bitmap.Config.
Ответ 3
Нашел ответ здесь fooobar.com/info/539252/..., благодаря
siliconeagle.
Решением является создание нового растрового изображения с требуемой кодировкой в соответствии с приведенным выше примером.