Ich habe eine einkanalige PNG-Datei, die ich als Alpha-Maske für Porter-Duff-Zeichenoperationen verwenden möchte. Wenn ich es ohne Optionen lade, hat das resultierende Bitmap eine RGB_565-Konfig, d. H. Behandelt als Graustufen. Wenn ich die bevorzugte Konfiguration auf ALPHA_8 setze, wird sie stattdessen als Graustufe ARGB_8888 geladen.Android: Laden einer Alpha-Maske Bitmap
Wie kann ich Android davon überzeugen, diese Datei als Alphamaske anstatt als Graustufenbild zu behandeln?
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)
Was passiert, wenn Sie die bevorzugte Konfiguration auf ARGB_8888 setzen? – EboMike
Gleiches Ergebnis wie ALPHA_8. Ich bekomme eine ARGB_8888 Bitmap mit einem undurchsichtigen Alpha-Kanal. – kvance
Welcher Farbtyp ist dein Png? Ich rate 0, das ist Graustufen. Soweit ich weiß gibt es keine "nur Alpha" -Png-Datei. Der nächste, den Sie erreichen könnten, wäre eine 8-Bit-Palette mit einer Identitätskarte von Index zu Alpha - für die Dateigröße. Aber wahrscheinlich nicht wert. Dein Workaround unten ist wahrscheinlich der beste, den du bekommst. Aber ich hasse es, der Typ zu sein: Die API versucht dir hier etwas zu sagen! Halte Alpha und RGB zusammen. Immer. Es wird schneller und besser unterstützt. Mit ALPHA_8 verlassen Sie den guten Pfad. Versuchen Sie, Ihr Design möglichst in RGBA zu ändern. – starmole