2012-04-29 21 views
5

Ich schreibe gerade Bitmaps in eine PNG-Datei und lese sie auch wieder in eine Bitmap. Ich suche nach Wegen, die Geschwindigkeit zu verbessern, mit der das Schreiben und Lesen geschieht. Die Bilder müssen verlustfrei sein, da ich sie zurückgelesen habe, um sie zu bearbeiten.Schnellste Möglichkeit zum Lesen/Schreiben einer Bitmap von/in Datei?

Der Ort, an dem ich die schlechteste Leistung sehe, ist die tatsächliche BitmapFactory.decode(...).

paar Fragen:
1. Gibt es eine schnellere Lösung/Schreiben von Datei mit NDK zu einem Bitmap zu lesen?
2. Gibt es eine bessere Bibliothek, um ein Bitmap schneller zu dekodieren?
3. Was ist der beste Weg, um ein Bitmap zu speichern und zu lesen?

+0

Einige Gedanken: 1. Wo versuchst du ** zu ** schreiben? 2. Wahrscheinlich nicht. Decode ist sehr teuer. 3. Es gibt viele Kompressionslösungen, aber ich persönlich mag 9-Patches. – hwrdprkns

+0

Ich habe meine Frage aktualisiert, um zu erwähnen. Nun, 9-Patch würde definitiv nicht funktionieren. Diese Bilder sind Zeichnungen, die nicht 9-fach gepatcht werden können. Es muss eine Art von NDK-Bibliothek geben, die ein bisschen schneller dekodiert? : P – Jona

+0

Eh, ich würde denken, dass wenn Sie ein JPEG-Bild haben, das ist so komprimiert wie es wird, wenn Sie etwas über das Bild im Voraus wissen ... – hwrdprkns

Antwort

4

Der Versuch, den besten/schnellstmöglichen Weg zum Lesen/Schreiben von Bild in Datei zu finden, kam auf die Verwendung der einfachen alten BitmapFactory. Ich habe versucht, mit NDK die Codierung/Decodierung zu tun, aber das hat wirklich keinen Unterschied gemacht.

Im Wesentlichen war das Format verlustfrei PNG, da ich nach der Bearbeitung eines Bildes keine Qualität verlieren wollte.

Das Hauptkonzept von all dem war, dass ich verstehen musste, wie lange die Codierung im Vergleich zur Decodierung dauerte. Die Kodierungszahlen waren in den oberen 300-600ms, abhängig von der Bildgröße, und die Dekodierung war einfach schnell, etwa 10-23ms.

Nachdem ich alles verstanden habe, habe ich gerade einen Worker-Thread erstellt, dem ich Bilder übergeben habe, die eine Kodierung benötigen, und die Arbeit machen lassen, ohne die Benutzererfahrung zu beeinträchtigen. Das Bild wurde im Cache zwischengespeichert, für den Fall, dass es sofort benötigt wurde, bevor es vollständig codiert und in einer Datei gespeichert wurde.

Verwandte Themen