位图始终在相机意图中返回null
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位图始终在相机意图中返回null相关的知识,希望对你有一定的参考价值。
我尝试从android捕获图像并上传到服务器,我做了所有的代码运行时权限,上传到服务器和所有。但我的相机意图的位图是null。我尝试getExtras和所有方式。对我来说,代码似乎是正确的,但位图始终为空。可能是什么原因
试图使用
data.getExtras().get("data");
在这里onActivityResult returned from a camera, Intent null
但没有帮助
我的代码在单击按钮时执行相机意图
CaptureImageFromCamera.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
intent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 7);
);
// Star activity for result method to Set captured image on image view
after click.
protected void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 7 && resultCode == RESULT_OK && data != null &&
data.getData() != null)
Uri uri = data.getData();
// Adding captured image in bitmap.
// if(data.getData()==null)
bitmap = (Bitmap)data.getExtras().get("data");
////else
// bitmap =
MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
//
// bitmap =
MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
// adding captured image in imageview.
ImageViewHolder.setImageBitmap(bitmap);
我想从相机意图中获取位图并在imageview中显示。
答案
在onActivityResult()
,你有:
if (requestCode == 7 && resultCode == RESULT_OK && data != null &&
data.getData() != null)
前三个部分很好。但是,data.getData() != null
有两个问题:
- 这是不相关的,因为
if
块不会尝试使用data.getData()
(尽管你有注释掉的代码) data.getData()
应该是null
的ACTION_IMAGE_CAPTURE
,所以对于正确实现的相机应用程序,你的if
条件将始终是false
如果你删除data.getData() != null
,你应该进入if
区块,并能够尝试获得你的Bitmap
。
正如其他人所说,这段代码将为您提供缩略图大小的Bitmap
。如果您正在寻找相机应用程序为您提供全分辨率图像,您将需要使用EXTRA_OUTPUT
。 This sample app演示了如何做到这一点。
另一答案
private void choosePhotoFromCamera()
log.info("choosePhotoFromCamera() is called");
intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == this.RESULT_CANCELED)
return;
// choose profile image from CAMERA
if (requestCode == 1)
try
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
if (bitmap != null)
imageView.setImageBitmap(bitmap);
strImagePath = getImageUri(bitmap).toString();
catch (Exception e)
log.error("Exception after choosing image from camera : " + e.getMessage());
以上是关于位图始终在相机意图中返回null的主要内容,如果未能解决你的问题,请参考以下文章
Android 4.4.2 - 相机 uri 返回 null 并且裁剪功能也不起作用?
BitmapFactory.decodeByteArray() 始终返回 null(手动创建的字节数组)