Android 位图在摄影机中始终返回null
我尝试从安卓系统捕获图像并上传到服务器,我做了所有代码运行时权限,上传到服务器和所有。但是我的照相机的位图是空的。我尝试获取额外的和所有的方式。对我来说,代码似乎是正确的,但位图总是空的。原因可能是什么 尝试使用Android 位图在摄影机中始终返回null,android,camera,Android,Camera,我尝试从安卓系统捕获图像并上传到服务器,我做了所有代码运行时权限,上传到服务器和所有。但是我的照相机的位图是空的。我尝试获取额外的和所有的方式。对我来说,代码似乎是正确的,但位图总是空的。原因可能是什么 尝试使用 data.getExtras().get("data"); 就像这里一样 但是没有帮助 我的代码在点击按钮时执行相机意图 CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() {
data.getExtras().get("data");
就像这里一样
但是没有帮助
我的代码在点击按钮时执行相机意图
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()
中,您有:
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());
}
}
if (requestCode == 7 && resultCode == RESULT_OK && data != null &&
data.getData() != null) {
前三部分很好。但是,data.getData()!=null有两个问题:
这是不相关的,因为if
块没有尝试使用data.getData()
(尽管您已经注释掉了使用该函数的代码)
data.getData()
对于ACTION\u IMAGE\u CAPTURE
来说应该是null
,因此对于正确实现的摄像头应用程序,您的if
条件将始终是false
如果删除data.getData()!=空
,您应该进入if
块,并能够尝试获取您的位图
正如其他人所指出的,此代码将为您提供缩略图大小的位图
。如果您正在寻找摄像头应用程序以提供全分辨率图像,则需要使用EXTRA\u输出
。演示如何执行此操作。请检查此如果(requestCode==7&&resultCode==RESULT\u OK&&data!=null&&data.getData()!=null)
--清除数据。getData()!=空
部分。这应该是null
。与@commonware使用getData()删除所有代码一样,也使用这种方式可以获得缩略图,而不是完整图像,但我猜这就是您想要的want@CommonsWare现在很好,谢谢。我会接受这里提到的相同答案编辑我的答案。。。现在它将完美地工作。我要求一些解释,而不是更多的代码。你应该指出OP的代码出了什么问题,以及为使其正常工作所做的更正。。这就是我所说的完整答案…代码中似乎没有选中的异常,如果您捕获图像,为什么要尝试/捕获。。然后,Uri=data.getData();将始终返回null…当您从gallery中选择图像时,这将起作用。.bitmap=(位图)data.getExtras().get(“data”);这行足以容纳位图。。。