나는 사진을 찍어 결과를 파일에 저장한다. 결과 사진이 존재합니다. 파일 관리자로 열 수 있습니다. 그러나 해당 파일을 유효한 비트 맵으로 변환 할 수 없습니다. 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
당신이 "운은"그 의미를 무엇, 그것은 충돌하지 않는 한 말을하지 않았을 때, 그것은 널 비트 맵을 반환하지? – tyczj
자세한 내용을 게시하고 결과, 예외 사항을 게시하십시오. –
null bitmap, right – Roman