Android, Blur Bitmap sofort?

8

Also versuche ich ein Bild so schnell wie möglich zu verwischen (Sofortgefühl), da die Aktivität aktualisiert werden muss, wenn ich den Blur-Button drücke.

Das Problem, das ich habe, ist, dass ich keinen Blur finde, der schnell genug funktioniert ... Hinweis: Die Weichzeichnung, vorzugsweise eine Gaußsche Weichzeichnung, muss nicht unbedingt die beste Qualität sein.

Ich habe das Folgende ausprobiert, aber es dauert ein paar Sekunden. Gibt es diesen Code, der unter Qualitätseinbußen schneller ausgeführt werden könnte? Oder gibt es noch andere Alternativen? Ich würde mir GPU-Sachen ansehen, aber diese Unschärfe ist nur ein Effekt, der mit der Benutzeroberfläche zusammenhängt und nur passiert, wenn ich eine transparente Aktivität öffne, die wie eine kleine Box aussieht ...

Irgendwelche Ideen?

%Vor%

}

    
rennoDeniro 17.11.2012, 22:48
quelle

2 Antworten

9

Versuchen Sie, das Bild 2, 4, 8, ... mal zu verkleinern, und skalieren Sie es dann erneut. Das ist schnell. Andernfalls implementieren Sie es in rendscript.

Wenn Sie mehr als die Skalierung haben möchten, können Sie dieses Code-Snippet in rendscript betrachten. Es macht die gleiche Art von Bluring wie in einer anderen Antwort gegeben. Derselbe Algorithmus kann in Java implementiert werden und ist eine Optimierung der anderen Antwort. Dieser Code verwischt eine Zeile. Um ein Bitmap zu verwischen, sollten Sie dies für alle Zeilen und dann für alle Spalten aufrufen (Sie müssen es neu implementieren, um mit Spalten zu arbeiten). Um eine schnelle Unschärfe zu erhalten, tun Sie dies einmal. Wenn Sie eine besser aussehende Unschärfe möchten, tun Sie es mehrmals. Normalerweise mache ich das nur zweimal.

Der Grund dafür, dass ich eine Zeile gemacht habe, ist, dass ich versucht habe, den Algorithmus zu parallelisieren, der etwas Verbesserung brachte und wirklich einfach in pendantscript ist. Ich habe den folgenden Code für alle Zeilen parallel und dann für alle Spalten gleich aufgerufen.

%Vor%

Hier ist das vertikale Verwischen:

%Vor%

Und hier ist der Java-Code, der den rs-Code aufruft:

%Vor%     
Tobias Ritzau 17.11.2012 23:03
quelle
7

Gaußsche Unschärfe ist teuer, genau zu tun. Eine viel schnellere Approximation kann durchgeführt werden, indem nur iterativ die Pixel gemittelt werden. Es ist immer noch teuer, das Bild viel zu verwischen, aber Sie können zwischen jeder Iteration neu zeichnen, um zumindest sofortiges Feedback und eine schöne Animation der Bildunschärfe zu geben.

%Vor%     
gordy 18.11.2012 01:50
quelle

Tags und Links