Android Bitmap: Konvertieren transparente Pixel in einer Farbe
Habe ich eine Android-app, lädt ein Bild als bitmap-Datei und zeigt Sie in einer Bildansicht. Das problem ist, dass das Bild einen transparenten hintergrund haben; dies bewirkt, dass einige von den schwarzen text auf dem Bild zu verschwinden, gegen den schwarzen hintergrund.
Wenn ich die Bildansicht hintergrund weiß, die Art funktioniert, aber ich bekomme hässliche großen Rahmen auf dem Bild, wo es gestreckt wird das übergeordnete Objekt (das eigentliche Bild wird skaliert, in der Mitte).
So, ich umwandeln wollen, werden transparente Pixel in der Bitmap, um eine solide Farbe, aber ich kann nicht herausfinden, wie es zu tun!
Jede mögliche Hilfe würde geschätzt!
Dank
Chris
InformationsquelleAutor ccbunney | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ob Sie das Bild als eine Ressource, ist es am einfachsten Bearbeiten Sie das Bild selbst in einem Programm wie gimp. Sie können Ihren hintergrund, und sicher sein was es ist Aussehen und nicht verwenden, um die Bearbeitung macht das Bild ändern jedes mal, wenn es geladen wird.
Wenn Sie nicht die Kontrolle über das Bild selbst, Sie können es ändern, indem Sie etwas wie, vorausgesetzt, Ihr
Bitmap
heißtimage
.InformationsquelleAutor iagreen
Können Sie eine Schleife durch jedes pixel und prüfen, ob es transparent ist.
Etwas wie dieses. (Ungetestet)
getPixel
. Jedes mal, wenn Sie eine Iteration durch alle pixel in derBitmap
Sie bevorzugen sollten -getPixels
statt.Ich versuchte diese Methode und es funktionierte nicht. Hinzufügen eines debug-Anweisung wurde gezeigt, dass das finden der TRANSPARENTE Pixel, aber Sie WEIß (oder ROT oder irgendeiner anderen Farbe) hat keinen Einfluss. Das Bild scheint immer noch zu haben, Transparenz.... komisch???
Wahrscheinlich, weil Sie Ihre bitmap ist nicht veränderlich. Versuchen Sie
Bitmap b = yourbitmap.copy(Bitmap.Config.ARGB_8888, true)
und setzen die neue bitmap als Bild. Auch diese Methode ist ungetestet und ich weiß nicht, ob es die effizienteste Methode. @kabuko können einen Punkt haben.Auch eine andere Methode, die Sie könnte versuchen, erstellen Sie eine neue bitmap, die weiß ist, und dann zeichnen Sie Ihre bitmap-über die weiß man. (Auf diese Weise Sie don ' T haben eine Grenze, und Sie haben nicht Durchlaufen Sie die gesamte bitmap.
Ich habe die operation auf einer Kopie der bitmap; ich hatte das gleiche problem. Ich denke, dein letzter Vorschlag funktioniert hätte wie in iagreen die Antwort von unten. Danke.
InformationsquelleAutor MrZander