2015-01-26 3 views
0

나는 사진을 찍어 결과를 파일에 저장한다. 결과 사진이 존재합니다. 파일 관리자로 열 수 있습니다. 그러나 해당 파일을 유효한 비트 맵으로 변환 할 수 없습니다. BitmapFactory를 포함하여 여러 가지 방법을 시도했지만 항상 null 비트 맵을 반환합니다. URI를 생성URI의 안드로이드 비트 맵

, 즉 mImageUri는

file:///storage/emulated/0/Pictures/IMG_20150126_180346_1663372760.jpg 

경로

/storage/emulated/0/Pictures/IMG_20150126_180346_1663372760.jpg 

아래 코드이다.

의 Utils 클래스에서 onCreate에 mImageUri 만들기 새 이미지 파일

public static File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "IMG_" + timeStamp + "_"; 
    File storageDir = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    return image; 
} 

()

try { 
     mPhotoFile = Utils.createImageFile(); 
     mImageUri = Uri.fromFile(mPhotoFile); 
    } catch (IOException ex) { 
     Toast.makeText(this, getString(R.string.error_something_wrong_happened), Toast.LENGTH_LONG).show(); 
    } 

호출 카메라 의도를 만들

Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     if (takePhotoIntent.resolveActivity(getPackageManager()) != null && mImageUri != null) { 

     takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri); 
     startActivityForResult(takePhotoIntent, REQUEST_CAMERA); 
} 

구문 분석은

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 

    if (requestCode == REQUEST_CAMERA && resultCode == RESULT_OK) { 
    //Unable to get Bitmap from mImageUri 
    try { 
     Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageUri); 
     Log.d(TAG, "bitmap exists " + bitmap); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

} 
01,235 결과 16,

안드로이드 버전은 아마 4.4.4

+0

당신이 "운은"그 의미를 무엇, 그것은 충돌하지 않는 한 말을하지 않았을 때, 그것은 널 비트 맵을 반환하지? – tyczj

+0

자세한 내용을 게시하고 결과, 예외 사항을 게시하십시오. –

+0

null bitmap, right – Roman

답변

1

늦은하지만 나는 내 문제를 해결 "비트 맵 = BitmapFactory.decodeFile (URI);" 미친 짓은 "file : //"bcos를 넣을 필요가 없다는 것입니다. BitmapFactory가 "/storage/emulated/*/bla.jpeg"를 받아 들일 수 있습니다.

사용하려고 시도 :
bitmap = MediaStore.Images.Media.getBitmap (this.getContentResolver(), Uri.parse (uri));

그러나 작품 ....