Convertir Bitmap en la memoria a Bitmap con Bitmap.Config.RGB_565

Tengo un mapa de bits cargado que me gustaría convertir para configurar la configuración a Bitmap.Config.RGB_565 . ¿Hay una manera simple de convertir un Bitmap de Bitmap a esta configuración después de que el mapa de bits ya está cargado en la memoria? Por ejemplo, a continuación tengo un mapa de bits que se decodifica de los recursos de la aplicación, sin embargo, ¿cómo convertir un Bitmap de Bitmap ya cargado a RGB_565 ? Estoy seguro de que es algo simple, sin embargo, soy bastante nuevo para trabajar con Bitmaps y después de unas horas de buscar en línea, por desgracia no pude encontrar lo que necesitaba específicamente.

 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig=Bitmap.Config.RGB_565 bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.myphoto ,options); 

No he probado esto, pero debería funcionar:

 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; } 

Llame a los métodos como este:

 Bitmap convertedBitmap = convert(bitmap, Bitmap.Config.RGB_565); 

Usted puede hacer todo tipo de transformaciones adicionales como rotación, estiramiento, etc, si utiliza el drawBitmap con una matriz.

También puede probar esto:

 Bitmap converted = original.copy(Config.RGB_565, false); 

De la documentación de Bitmap.copy ():

Intenta crear un nuevo mapa de bits basado en las dimensiones de este mapa de bits, estableciendo la configuración del nuevo mapa de bits en la especificada y copiando los píxeles de este mapa de bits en el nuevo mapa de bits. Si la conversión no es compatible, o el asignador falla, entonces esto devuelve NULL.

Buscando a través del código fuente nativo, debería convertirse bien entre los valores de Bitmap.Config .

Encontrado la respuesta aquí https://stackoverflow.com/a/12148450/1364673 , gracias a siliconeagle .

La solución es crear un nuevo mapa de bits con la codificación requerida según el ejemplo del enlace anterior.

  • Imágenes verdes al hacer una codificación JPEG desde YUV_420_888 utilizando la nueva cámara Android2 api
  • SetImageViewBitmap no funciona en el widget android
  • Valor RGB para el convertidor HSL
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.