Tengo una matriz MxN de ints que representan colores (por ejemplo, formato RGBA, pero que es fácilmente modificable). Me gustaría convertirlos a un mapa de bits MxN u otra cosa (como una textura OpenGL) que pueda mostrar a la pantalla. ¿Hay una manera rápida de hacer esto? Looping a través de la matriz y dibujarlos en el lienzo es demasiado lento.Convertir matriz de int a Bitmap en Android
8
A
Respuesta
15
Prueba esto le dará el mapa de bits.
// You are using RGBA that's why Config is ARGB.8888
bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
// vector is your int[] of ARGB
bitmap.copyPixelsFromBuffer(IntBuffer.wrap(vector));
EDIT:
//OR , you can generate IntBuffer from following native method
/*private IntBuffer makeBuffer(int[] src, int n) {
IntBuffer dst = IntBuffer.allocate(n*n);
for (int i = 0; i < n; i++) {
dst.put(src);
}
dst.rewind();
return dst;
}*/
espero que le ayudará.
3
Sí, parece que tiene toda la información que necesita. Si M es el ancho y N es la altura, puede crear un nuevo mapa de bits con Bitmap.createBitmap, y puede completar los valores ARGB con el método setPixels que toma una matriz int.
8
¿Por qué no utilizar Bitmap.setPixel? Incluso es nivel API 1:
int[] array = your array of pixels here...
int width = width of "array"...
int height = height of "array"...
// Create bitmap
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// Set the pixels
bitmap.setPixels(array, 0, width, 0, 0, width, height);
Puede jugar con desplazamiento/paso/x/y según sea necesario.
Sin vueltas. Sin asignaciones adicionales.
Cuestiones relacionadas
- 1. Convertir matriz int a matriz de caracteres
- 2. Cómo convertir una matriz de bytes a Bitmap
- 3. Android: ¿cómo convertir el conjunto de bytes a Bitmap?
- 4. Android ¿La mejor manera de convertir una matriz de bytes a Bitmap?
- 5. Convertir cadena a matriz int usando LINQ
- 6. ¿Cómo convertir una matriz de bytes a una matriz int?
- 7. Convertir una matriz int a una matriz de cadenas
- 8. Android convertir color int a hexa Cadena
- 9. ¿Convertir int a una matriz de bytes en C?
- 10. Cómo convertir a entero int
- 11. lista <int> convertir a int []
- 12. Cómo convertir una matriz de bytes en una matriz int?
- 13. Cómo convertir int [] a byte []
- 14. Cómo convertir int * a int
- 15. Int matriz de bytes a
- 16. Android guardar Bitmap a tarjeta SD
- 17. ¿Cómo convertir una matriz de bytes int a little endian?
- 18. ¿Cómo puedo convertir un int a una matriz de bool?
- 19. ¿Convertir una matriz de caracteres a una sola int?
- 20. Java char matriz a int
- 21. Lienzo de escala en Android Bitmap
- 22. Convertir single-char a int
- 23. Android: BitmapFactory.decodeByteArray da bitmap pixelado
- 24. Convertir bitmap a PNG en la memoria en C++ (win32)
- 25. ¿Convertir int a cadena?
- 26. ¿Cómo adjuntar metadatos EXIF a un Bitmap serializado en Android?
- 27. convertir doble a int
- 28. ¿Convertir ascii a int?
- 29. Bitmap recycle() en java Android
- 30. Convertir iterador a int
Hay un error en tu 'makeBuffer' en alguna parte. Llene el mapa de bits de esta manera en su lugar: 'bmp.copyPixelsFromBuffer (IntBuffer.wrap (vector));' –