从相机获取位图 android
Get bitmap from camera android
我正在尝试从我的应用程序打开相机并获取位图。但这不起作用。我收到此错误:
E/BitmapFactory:无法解码流:java.io.FileNotFoundException:内容:/media/external/images/media/9969:打开失败:ENOENT(没有这样的文件或目录)
这是代码:
private void openCamera()
{
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE, "New Picture");
contentValues.put(MediaStore.Images.Media.DESCRIPTION, "From the camera");
image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
//Camera intent
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}
当我调用 openCamera() 时,这里是 activity 结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode)
{
case RESULT_OK :
{
//imageView.setImageURI(image_uri); this works
Bitmap bitmap = null;
String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);
imageView.setImageBitmap(bitmap); //this doesnt work ! --> the bitmap is empty
}
//finish
case RESULT_CANCELED :
{
// finish();
}
default: {
//finish();
}
}
之后我需要位图来存储图像。
这很奇怪,因为图像很好地保存在图库中,但我无法获取...
理想情况下,您将使用 Glide、Picasso 或其他图像加载库,只需让它将图像从 Uri
加载到您的 ImageView
。
如果您坚持使用您的基本方法,尽管它的性能很差,请替换:
String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);
与:
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(image_uri));
Uri
不是文件。
我正在尝试从我的应用程序打开相机并获取位图。但这不起作用。我收到此错误: E/BitmapFactory:无法解码流:java.io.FileNotFoundException:内容:/media/external/images/media/9969:打开失败:ENOENT(没有这样的文件或目录)
这是代码:
private void openCamera()
{
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Images.Media.TITLE, "New Picture");
contentValues.put(MediaStore.Images.Media.DESCRIPTION, "From the camera");
image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
//Camera intent
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}
当我调用 openCamera() 时,这里是 activity 结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode)
{
case RESULT_OK :
{
//imageView.setImageURI(image_uri); this works
Bitmap bitmap = null;
String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);
imageView.setImageBitmap(bitmap); //this doesnt work ! --> the bitmap is empty
}
//finish
case RESULT_CANCELED :
{
// finish();
}
default: {
//finish();
}
}
之后我需要位图来存储图像。 这很奇怪,因为图像很好地保存在图库中,但我无法获取...
理想情况下,您将使用 Glide、Picasso 或其他图像加载库,只需让它将图像从 Uri
加载到您的 ImageView
。
如果您坚持使用您的基本方法,尽管它的性能很差,请替换:
String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);
与:
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(image_uri));
Uri
不是文件。