Heim > Java > javaLernprogramm > Wie können wir eine schnelle Bitmap-Unschärfe in Android erreichen?

Wie können wir eine schnelle Bitmap-Unschärfe in Android erreichen?

Mary-Kate Olsen
Freigeben: 2024-12-07 18:40:14
Original
729 Leute haben es durchsucht

How Can We Achieve Fast Bitmap Blurring in Android?

Schnelle Bitmap-Unschärfe für Android

In Android kann das Anwenden eines Unschärfefilters auf Bilder ein zeitaufwändiger Vorgang sein, insbesondere bei großen Bildern . Dies liegt daran, dass herkömmliche Methoden das Durchlaufen jedes Pixels des Bildes erfordern, was rechenintensiv sein kann.

Einführung eines schnelleren Algorithmus

Der Artikel stellt einen schnelleren Algorithmus vor als der Traditioneller Ansatz der Pixel-für-Pixel-Unschärfe. Dieser von Quasimondo portierte Algorithmus kombiniert Elemente der Box-Unschärfe und der Gaußschen Unschärfe.

Der Algorithmus erstellt einen „sich bewegenden Stapel“ von Farben, während er das Bild durchsucht. Dieser Stapel wird schrittweise aktualisiert, wobei auf der rechten Seite eine neue Farbe hinzugefügt und die Farbe ganz links entfernt wird. Die verbleibenden Farben oben auf dem Stapel werden abhängig von ihrer Position auf dem Stapel angepasst.

Implementierungsdetails

Das bereitgestellte Java-Code-Snippet implementiert den Algorithmus in Android. Es werden drei Parameter benötigt:

  • sentBitmap: Die Eingabebitmap, die unscharf gemacht werden soll
  • scale: Der Skalierungsfaktor zum Reduzieren der Bildgröße vor dem Anwenden der Unschärfe
  • Radius: Der anzuwendende Unschärferadius

Der Algorithmus ist in zwei verschachtelte Schleifen unterteilt, eine für Zeilen und eine für Spalten. Innerhalb jeder Schleife berechnet der Algorithmus die Summen der Farben und aktualisiert sie mithilfe des Moving-Stack-Ansatzes.

Leistungsverbesserung

Dieser Algorithmus verbessert die Unschärfeleistung im Vergleich zu Pixel- Pixelweise Methoden. Bei einem 640x480-Bild benötigte der ursprüngliche Algorithmus 30 Sekunden zum Verwischen, während dieser Algorithmus diese Zeit auf etwa 5 Sekunden reduziert.

Hinweis

Das Code-Snippet enthält einen Fix für ein ArrayIndexOutOfBoundsException-Problem, das in bestimmten Fällen auftreten kann. Stellen Sie bei Android 11 und höher sicher, dass Sie StrictMath.abs anstelle von Math.abs verwenden, um die Ausnahme zu verhindern.

Das obige ist der detaillierte Inhalt vonWie können wir eine schnelle Bitmap-Unschärfe in Android erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage