Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

251
Vistas
¿Cómo puedo crear de manera eficiente un mapa de bits de pantalla de colores paletizados en gráficos de Android?

Mi aplicación Android Tide muestra una carta náutica de un archivo .KAP. Este formato de archivo utiliza un sistema de visualización paletizado de cuatro bits, solo se utilizan 10 colores. Mi aplicación decodifica el formato de archivo en una matriz de colores de cuatro bits. Muestra una parte de esta matriz en la pantalla de la siguiente manera:

 for (displayLineNum = 1; displayLineNum < displayHeight; displayLineNum++) { for (displayDotNum = 1; displayDotNum < displayWidth; displayDotNum++) { color = colors [lineIndex-1][dotIndex-1]; switch (color) { case 1: displayCanvas.drawPoint(displayDotNum, displayLineNum, color1); break; case 2: displayCanvas.drawPoint(displayDotNum, displayLineNum, color2); break; case 3: displayCanvas.drawPoint(displayDotNum, displayLineNum, color3); break; case 4: displayCanvas.drawPoint(displayDotNum, displayLineNum, color4); break; case 5: displayCanvas.drawPoint(displayDotNum, displayLineNum, color5); break; case 6: displayCanvas.drawPoint(displayDotNum, displayLineNum, color6); break; case 7: displayCanvas.drawPoint(displayDotNum, displayLineNum, color7); break; case 8: displayCanvas.drawPoint(displayDotNum, displayLineNum, color8); break; case 9: displayCanvas.drawPoint(displayDotNum, displayLineNum, color9); break; case 10: displayCanvas.drawPoint(displayDotNum, displayLineNum, color10); break; default: displayCanvas.drawPoint(displayDotNum, displayLineNum, color1); break; } } } display_area.setImageBitmap(displayBitmap);

Hay 10 colores de pintura preestablecidos con los códigos RGB necesarios para la visualización. Pero cada píxel debe dibujarse individualmente con la función displayCanvas.drawPoint. Esto funciona pero es PERRO LENTO. Preferiría preestablecer los códigos de la paleta en el otro lado de la llamada de visualización y pasar los valores de la paleta en su lugar. Esto se ejecutaría mucho más rápido, pero no puedo encontrar una manera de hacerlo con las llamadas de visualización disponibles. Hay funciones de Android para evaluar una imagen para obtener una paleta, etc., pero no veo cómo mostrar de manera eficiente una imagen paletizada. Cada píxel se expande de un código de píxel de cuatro bits a un código RGB565 de dieciséis bits para pasar un mapa de bits normal. ¿De qué otra manera podría hacer esto, gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para definir los píxeles de un mapa de bits, no debe usar un lienzo porque agrega una capa adicional y es ineficiente. Debe tratar directamente con el objeto de mapa de bits. Hay dos maneras de hacerlo.

Llamando a setPixel

El método setPixel() permite establecer el color de un píxel.

Ejemplo:

 Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); for(int x = 0; x < width; x++) { for(int y = 0; y < height; y++) bm.setPixel(x, y, Color.BLUE); }

Llamando a createBitmap

Para evitar la sobrecarga de llamar a setPixel() una gran cantidad de veces, puede crear una matriz con los colores de los píxeles y pasarla directamente a createBitmap() . Esta es probablemente la manera más eficiente.

Ejemplo:

 int length = width * height; int[] colors = new int[length]; for(int i = 0; i < length; i++) colors[i] = Color.BLUE; Bitmap bm = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda