我尝试从android捕获图像并将其上传到服务器,我执行了所有代码运行时权限,并上传到服务器和所有服务器。但是我从摄影机意图出发的位图为null。我一直尝试getExtras。对我来说,代码似乎是正确的,但位图始终为null。可能是什么原因
尝试使用
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中显示。
答案 0 :(得分:1)
在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演示了此操作。
答案 1 :(得分:0)
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());
}
}