0
我拍摄一张照片并将结果保存在一个文件中。由此产生的照片存在,我可以用文件管理器打开它。但是,我无法将该文件转换为有效的位图。我尝试过不同的方法,包括BitmapFactory,但它总是返回一个空位图。来自URI的Android位图
得到的URI,即mImageUri,是
file:///storage/emulated/0/Pictures/IMG_20150126_180346_1663372760.jpg
和路径
/storage/emulated/0/Pictures/IMG_20150126_180346_1663372760.jpg
代码如下。
utils的类来创建新的图像文件
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;
}
中的onCreate创建mImageUri()
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();
}
}
}
Android版本是4.4.4
当你说你有“没有运气”这是什么意思,它是否崩溃,它返回一个空位图吗? – tyczj 2015-01-26 21:31:25
请更具体地发布您的结果,例外情况。 – 2015-01-26 21:37:05
它返回一个空位图,正确的 – Roman 2015-01-26 21:41:08