0

ギャラリーからビットマップをSDカードのパスにコピーします。ギャラリーからビットマップを読み込んでsdカードに書き込めません

この機能は、カメラから撮影された画像に適しています:

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"); 
     } 
} 

しかし、私が使用してギャラリーから画像を選択した場合:

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; 
    } 

とにsaveBitmap()メソッドを使用しますこの選択された画像を保存すると、File not found例外がキャッチされます。
このメソッドは、フォルダを生成し、saveBitmap()メソッドのURIを返します。

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")); 
    } 
} 

助けが必要ですか?

答えて

0

最後に、ファイルパスの問題が原因です。

これは私が使用したものである:

接頭 ファイルにつながる
Uri uri = ....; 
path = uri.toString(); 

:///のようなパス文字列に追加されました:

file:///storage/...png 

希望は、いくつかの他の人を助けることができます。

関連する問題