2013-03-15 8 views
14

Ich habe ein Problem Bitmaps in Dateien zu speichern. Meine Methode ist wie folgt:Bitmap in Datei speichern und zurückgeben Datei mit Bitmap-Bild

private File savebitmap(Bitmap bmp) { 
    String extStorageDirectory = Environment.getExternalStorageDirectory() 
      .toString(); 
    OutputStream outStream = null; 

    File file = new File(bmp + ".png"); 
    if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, bmp + ".png"); 
     Log.e("file exist", "" + file + ",Bitmap= " + bmp); 
    } 
    try { 
     outStream = new FileOutputStream(file); 
     bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    Log.e("file", "" + file); 
    return file; 

} 

Es mir Fehler von file.I gibt bin diese Methode wie folgt aufrufen:

Drawable d = iv.getDrawable(); 
Bitmap bitmap = ((BitmapDrawable) d).getBitmap(); 
File file = savebitmap(bitmap); 

Bitte helfen Sie mir ...

+1

Was ist die Bedeutung dieser Zeile Datei Datei = new File (bmp +“. png ") ;? –

+1

define "Fehler der Datei" (dh post stacktrace) – njzk2

+1

@FestusTamakloe Ich nehme an, er nimmt fälschlicherweise an, dass 'bmp.toString()' den 'name' des bmp zurückgibt, –

Antwort

32

ich versuchen, einige Korrekturen an Ihren Code zu machen Ich gehe davon aus, dass Sie Dateinamen verwenden möchten, anstatt Bitmap als Parameter

private File savebitmap(String filename) { 
     String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
     OutputStream outStream = null; 

     File file = new File(filename + ".png"); 
     if (file.exists()) { 
     file.delete(); 
     file = new File(extStorageDirectory, filename + ".png"); 
     Log.e("file exist", "" + file + ",Bitmap= " + filename); 
     } 
     try { 
     // make a new bitmap from your file 
     Bitmap bitmap = BitmapFactory.decodeFile(file.getName()); 

     outStream = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
     Log.e("file", "" + file); 
     return file; 

    } 
+0

Danke..Es funktioniert .. !!! – AndiM

+0

@Meghs du bist willkommen. Wenn das hilft, dann stimmen Sie ab. Vielen Dank –

2

Sie können nicht schreiben wie diese

File file = new File(bmp + ".png"); 

und diese Linie ist auch falsch

file = new File(extStorageDirectory, bmp + ".png"); 

Sie müssen geben Zeichenfolge Wert und nicht Bitmap.

File file = new File(filename + ".png"); 
0

ändern Datei file = new File (bmp + ".png"); bis Datei file = neue Datei (extStorageDirectory, "bmp.png"); wie Sie fast das zweite Mal getan haben.