2016-11-30 3 views
0

Es ist relativ einfach, ein Bild aus der Kamera-App des Telefons mit einer Absicht abzurufen, wobei das Bild in Form einer Bitmap vorliegt.Speichern von Bildern in Android-Apps

Ich weiß nicht, ob dies eine angemessene Frage für SO ist, aber ist es allgemein üblich, nur die gesamte Bitmap wie sie ist zu speichern? Oder komprimieren/verkleinern die meisten Leute es?

Antwort

1

Sie neigen dazu, es mit Bitmap.compress zu speichern, die es für Sie komprimieren wird. Fühlen Sie sich frei, PNG zu verwenden, das ein verlustfreies Format ist, so dass kein Qualitätsverlust auftreten wird, wenn Sie es neu aufblasen.

Natürlich, wenn Sie eine Absicht verwenden, um es von der Kamera zu bekommen, ist es normalerweise bereits im Dateisystem gespeichert. In diesem Fall ist diese Datei sicherlich schon komprimiert.

+0

So etwas wie 'bmp.compress (Bitmap.CompressFormat.PNG, 100);', bevor es irgendwo zu speichern? – KaliMa

+0

Sieht so aus, als brauche es einen Ausgabestream. Normalerweise verwende ich 'MediaStore.Images.Media.insertImage (contentResolver, bitmap, title, description);' um die Bitmap in die Galerie zu übertragen. Gibt es eine Möglichkeit, dies mit einem Ausgabestream zu tun? – KaliMa

+0

Wenn Sie diesen MedaStore-Anruf verwenden, wird also tatsächlich eine geschrumpfte Version des Bildes (ein Miniaturbild) erstellt und nur auf dem Datenträger gespeichert. Es gibt keine Notwendigkeit, es weiter zu verkleinern. Die Komprimierung einer Bitmap besteht nur, wenn das Image auf der Festplatte gespeichert wird. Eine In-Memory-Repräsentation einer Bitmap in einem Bitmap-Objekt wird immer unkomprimiert. –

0

Dies ist eine einfache Methode, wie unten:

private Boolean saveImage(Bitmap bitmap){ 

    ByteArrayOutputStream bao = null; 
    File file = null, image = null; 
    Boolean save = false; 

    try{ 

     bao = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao); 

     image = new File(Environment.getExternalStorageDirectory() + "", "/yourSelectedFolder/"); 

     if (!image.exists()) { 
      if (!image.mkdirs()) { 
       Toast.makeText(context, "Error: Folder Not Created!\nPlease Try Again.", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(context, "Folder Successfully Created!", Toast.LENGTH_LONG).show(); 
      } 
     } 


     file = new File(Environment.getExternalStorageDirectory().toString() + "/yourSelectedFolder/","filename" + ".jpeg"); 
     save = file.createNewFile(); 

     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(bao.toByteArray()); 
     fos.close(); 



     if (save){ 
      Toast.makeText(context, "Image Successfully Saved", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(context, "Image Not Saved", Toast.LENGTH_LONG).show(); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
     Toast.makeText(context, "Error: "+e, Toast.LENGTH_LONG).show(); 
    } 
    return save; 
} 
Verwandte Themen