0

Ich möchte ein Bitmap aus der Galerie in einen Pfad auf der SD-Karte kopieren.Bitmap aus der Galerie lesen und in die SD-Karte schreiben schlägt fehl

Diese Funktion auch für das Bild arbeitet, die von der Kamera aufgenommen wird:

public void saveBitmap(Bitmap bitMap, Uri avatarUri) throws Exception{ 
     File file = new File(avatarUri.toString()); 
//  if (file.exists()) file.delete(); 
     try { 
      OutputStream fOut = new FileOutputStream(file); 
      if (bitMap.compress(Bitmap.CompressFormat.PNG, 100, fOut)) { 
       fOut.flush(); 
       fOut.close(); 
      } else { 
       Log.d("123", "compress file"); 
      } 
     } catch (Exception e) { 
      Log.d("123", "File not found file"); 
     } 
} 

Aber wenn ich wählen Sie ein Bild aus der Galerie unter Verwendung:

void getImageFromGallery(Intent data) throws FileNotFoundException { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = context.getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 
     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 
     Bitmap bitmap = BitmapFactory.decodeFile(picturePath); 
     avatarBitmap = bitmap; 
    } 

und verwenden Sie die saveBitmap() Methode speichern Sie dieses ausgewählte Bild, es fängt eine File not found Ausnahme. Diese Methode generiert einen Ordner und gibt einen URI für die Methode saveBitmap() zurück.

public Uri generateAvatarImageUri(String patientName) { 
     Date date = new Date(0); 
     SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMMddHHmmss"); 
     String filename = sdf.format(date) + patientName; 
     return Uri.fromFile(new File(getExternalStorageDirectory(), avatarFolderPath+filename+".jpg")); 
    } 
} 

Irgendwelche Hilfe?

Antwort

0

Endlich habe ich den Grund, es ist, weil der Dateipfad Problem.

das ist, was ich verwendet:

Uri uri = ....; 
path = uri.toString(); 

, die mit einem Präfix Datei führt: /// wurde in die Pfadzeichenfolge hinzugefügt wie:

file:///storage/...png 

Hoffnung einige andere helfen können.

Verwandte Themen