Tengo un archivo PNG de canal único que me gustaría usar como máscara alfa para las operaciones de dibujo de Porter-Duff. Si lo cargo sin ninguna opción, el mapa de bits resultante tiene una configuración RGB_565, es decir, tratada como escala de grises. Si configuro la configuración preferida a ALPHA_8, la carga como una escala de grises ARGB_8888 en su lugar.Android: cargando un mapa de bits de máscara alfa
¿Cómo puedo convencer a Android de tratar este archivo como una máscara alfa en lugar de una imagen en escala de grises?
mask1 = BitmapFactory.decodeStream(pngStream);
// mask1.getConfig() is now RGB_565
BitmapFactory.Options maskOpts = new BitmapFactory.Options();
maskOpts.inPreferredConfig = Bitmap.Config.ALPHA_8;
mask2 = BitmapFactory.decodeStream(pngStream, null, maskOpts);
// mask2.getConfig() is now ARGB_8888 (the alpha channel is fully opaque)
¿Qué sucede cuando configura la configuración preferida en ARGB_8888? – EboMike
Mismo resultado que ALPHA_8. Obtengo un mapa de bits ARGB_8888 con un canal alfa opaco. – kvance
¿Qué tipo de color es tu png? Supongo que 0, que es en escala de grises. Por lo que yo sé, no hay un archivo png "solo alfa". Lo más cerca que podrías llegar a eso sería una paleta de 8 bits con un mapa de identidad de índice a alfa, para el tamaño del archivo. Pero probablemente no valga la pena. Su solución alternativa a continuación es probablemente lo mejor que obtendrá. Pero odio ser ese tipo: ¡la API está tratando de decirte algo aquí! Mantenga alfa y RGB juntos. Siempre. Va a ser más rápido y mejor apoyado. Al usar ALPHA_8 dejas el buen camino. Intenta cambiar tu diseño a RGBA si es posible. – starmole