Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

243
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!