2017-04-03 1 views
1

Ich habe 100 Bilder auf externen Speicher, die ich diese beiden folgenden Aufgaben in einer for-Schleife.Verbesserung der Datei speichern Leistung in Android

  1. jedes Element als Bitmap Laden und mit einer anderen Bitmap
  2. Saving Ergebnis in als neue Datei im Speicher

Und für 100 Bilder dauert es zu viel Zeit zu verschmelzen. Das Zusammenführen von Bitmaps ist schnell beendet und OK, aber das Speichern des Ergebnisses in der Datei dauert zu viel Zeit. Gibt es trotzdem etwas, um dieses Problem zu fördern? Wenn Sie die Bitmaps im Speicher behalten und Stapel speichern, kann dies zu OutOfMemoryException führen. Diese

ist, wie ich Bitmaps fusionieren: how to merge to two bitmap one over another

Dies ist, wie ich die Bitmap-Datei zu speichern:

 File imageFileFolder = new File(Statics.TEMP_PATH); 
    imageFileFolder.mkdirs(); 
    FileOutputStream out = null; 
    File imageFileName = new File(imageFileFolder, imageName); 
    try { 
     out = new FileOutputStream(imageFileName); 
     imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, out); 
     out.flush(); 
     out.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Beachten Sie, dass alle diese sind in einem AsyncTask Block.

+0

Sie könnten versuchen, ob ein Puffer hinzufügen, d. H. Out = neue BufferedOutputStream (neue FileOutputStream (imageFileName), 8 * 1024); '(versuchen Sie größere Größe) hat messbare Wirkung. – zapl

+0

Was ist zu viel Zeit? Bitte sagen Sie wie viele Sekunden. Erzählen Sie auch Dateigrößen. Verwenden Sie die Kerne der CPU und verwenden Sie Threads. Ein Thread für jeden Kern. Oder zwei. – greenapps

+0

@ greenapps Speichern von Datei ist eine teure Aufgabe. Wenn Sie irgendeine Lösung haben, sagen Sie mir bitte, und ich werde Ihnen den Unterschied sagen. Weil der Datensatz nicht sehr wichtig ist. – Aerox

Antwort

0

Endlich kam ich mit der Lösung um Bitmap als JPEG zu speichern. Das Speichern einer 250k-png-Bitmap dauerte fast 500 Millisekunden. Die gleiche Bitmap im JPEG-Format dauerte etwa 50 Millisekunden. Obwohl die Qualitäten nicht die gleichen sind, sieht es jedoch nach einem Kompromiss zwischen Qualität und Leistung aus.

Verwandte Themen