Ho un file PNG a canale singolo che mi piacerebbe utilizzare come maschera alfa per le operazioni di disegno Porter-Duff. Se lo carico senza opzioni, la Bitmap risultante ha una configurazione RGB_565, cioè trattata come scala di grigi. Se imposto la configurazione preferita su ALPHA_8, la carica come ARGB_8888 in scala di grigio.Android: caricamento di una bitmap maschera alfa
Come posso convincere Android a trattare questo file come maschera alfa invece di un'immagine in scala di grigio?
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)
Cosa succede quando si imposta la configurazione preferita su ARGB_8888? – EboMike
Stesso risultato di ALPHA_8. Ottengo un bitmap ARGB_8888 con un canale alfa opaco. – kvance
Di che colore è il tuo png? Sto indovinando 0, che è in scala di grigi. Per quanto ne so non esiste un file png "alpha only". Il più vicino che si potrebbe ottenere sarebbe una tavolozza a 8 bit con una mappa delle identità di indice in alfa - per le dimensioni del file. Ma probabilmente non ne vale la pena. La tua soluzione alternativa è probabilmente la migliore che otterrai. Ma odio essere quel ragazzo: l'API sta cercando di dirti qualcosa qui! Mantieni alfa e RGB insieme. Sempre. Sarà più veloce e meglio supportato. Usando ALPHA_8 lasci la buona strada. Prova a cambiare il tuo progetto in RGBA se possibile. – starmole