Android Bitmap setPixel doens T Arbeit richtig? (eingestellter Wert ist, dann Lesen Sie einen anderen Wert)
Ich verwenden, setPixel (), um die pixel zu einem bestimmten Wert, aber wenn dann rufe ich getPixel auf dem gleichen pixel nach rechts, es gibt einen anderen Wert an.
Es funktioniert, wenn alpha==255, aber jeder andere Wert gibt einen anderen Wert;
Getestet wurde dies auf einem Asus Transformer, Honeycomb 3.2
int newPixel=Color.argb(alpha, red, green, blue);
if(x==74&&y==86){
Log.w("PuzzleMaker","newPixel:"+newPixel+","+image.getConfig().name()+","+image.isMutable());
}
image.setPixel(x,y,newPixel);
if(x==74&&y==86){
int testPixel=image.getPixel(x, y);
Log.w("PuzzleMaker","testPixel:"+testPixel);
}
Log:
newPixel: 13426418,ARGB_8888,true
testPixel: -16777216
Den 2 zahlen in das Protokoll sollte das gleiche sein.
- Toll, ich bin froh, dass du es herausgefunden! Seit Sie es herausgefunden auf eigene Faust, sollten Sie die Lösung als eine Antwort auf diese Frage, und dann akzeptiere Ihre Antwort als die richtige.
- Ich wollte, aber ich konnte nicht meine eigene Antwort bis mindestens 8 Stunden nachdem ich die Frage da ich neu bin. Ich werde das jetzt tun, obwohl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellte sich heraus, haben eine sehr einfache Lösung. Ich fand heraus, dass die setPixel () - Methode der Multiplikation der rot -, grün-und blau-Werte für die alpha, dann die Einstellung nur r,g,b.
Einfach anrufen Bild.setHasAlpha(true) ansetzt, so setzt es alle 4 Werte.
Ich denke, das hat zu tun mit einigen Macken in der Art und Weise Android-Griffe bitmaps.
Basierend auf Ihren log-Ausgabe, die Sie zu sein scheinen-Einstellung die pixel zu
0x00ccdef2
(das ist völlig transparent, wenn ich mich nicht Irre). Beim abrufen der pixel, die Sie bekommen-16777216
, die, wenn man sich die Dokumentation für die Farbe Klasse, ist die Konstante Farbe.SCHWARZ. Im Grunde, so scheint es, dass Android ist nicht speichern die Transparenz des Bildes. Also, wenn Sie einen komplett durchsichtigen Farbe ist, nur behandelt es als schwarz.Gibt es einige Diskussionen über ein ähnliches problem hier, und auch einen alten bug-report hier.