Android 2.2 distorsiona los colores de la imagen?
Tengo algunos archivos .png en mi aplicación. Tengo que cargar estos durante el tiempo de ejecución, y obtener los colores exactos de ciertos píxeles de ellos. Es importante, que no quiero escalar estas imágenes. No los muestro en la interfaz de usuario directamente, sirven como mapas.
Ahora, en Android 1.5, no hay ningún problema con esto. Pongo estas imágenes en el directorio '/ res / drawable', las cargo con BitmapFactory en un objeto Bitmap, y lo utilizo para obtener el color de los píxeles deseados. Por ejemplo, el pixel (100, 50) tiene el color RGB (100, 1, 100).
- ¿Cómo guardar la vista desde el lienzo al archivo PNG?
- Android - ¿Es posible declarar una máscara alfa directamente dentro de la definición de la capa-lista XML?
- Android: ¿Cómo descargar un archivo .png con Async y configurarlo con ImageView?
- Aplicación de una superposición (filtro de imagen) a un mapa de bits
- Optimización png android
En Android 2.2 tho, el mismo procedimiento resulta en colores diferentes (para el mismo píxel), así que obtengo RGB (99, 3, 102) / RGB (101, 2, 99) / etc. para el mismo (100, 50) píxeles . Comprobé la resolución del objeto Bitmap, parece que no se ha escalado.
¿Podría alguien explicar, ¿por qué obtener valores de color distorsionados?
- Cómo convertir bitmap a PNG y luego a base64 en Android?
- Al guardar el mapa de bits en el disco, las rutas sólidas muestran los artefactos
- Edita el png del ninepatch del android programly (cambia color)
- Añadir un png al portapapeles en android
- ¿Cómo se exportan los elementos extraíbles del vector XML de Android a otro formato?
- Android: la forma más fácil de cambiar el color de un archivo png
- Imagen de png que aparece con fondo gris en android
- Cómo configurar un archivo PNG a un ImageView?
Resuelto: Parece que en Android 2.2, tengo que configurar la configuración de mapa de bits correcta. De alguna manera, las versiones por debajo de 2.2 lograron hacer esto (o tal vez menos configs son compatibles con ellos, y el sistema adivinó correctamente la configuración, no lo sé).
De todos modos, aquí está el código que uso ahora:
BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inDither=false; opt.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.picture, opt);
Vaya hacer usted mismo un bitmap thats enteramente el mismo color del pixel en la pregunta. Haga que el tamaño de este mapa de bits tenga la misma resolución que el que utiliza actualmente. Cargarlo y comprobar los valores RGB del mismo píxel (o cualquier píxel) que tiene problemas.
Esto debería indicar si su problema es la escala, que es lo que creo que es, o posiblemente un problema en la traducción de color.
Si no encuentra una respuesta rápida, mi racha pragmatista le preguntará cuán difícil es analizar el .png usted mismo, para obtener resultados completamente deterministas independiente de cualquier cambio en la plataforma.
Mis dispositivos 2.3 (Nexus One y S) funcionaron bien sin establecer "opt.inPreferredConfig", pero parece que 2.2 lo requiere para RGBs precisos.