位图始终在相机意图中返回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有两个问题:

  1. 这是不相关的,因为if块不会尝试使用data.getData()(尽管你有注释掉的代码)
  2. data.getData()应该是nullACTION_IMAGE_CAPTURE,所以对于正确实现的相机应用程序,你的if条件将始终是false

如果你删除data.getData() != null,你应该进入if区块,并能够尝试获得你的Bitmap

正如其他人所说,这段代码将为您提供缩略图大小的Bitmap。如果您正在寻找相机应用程序为您提供全分辨率图像,您将需要使用EXTRA_OUTPUTThis 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的主要内容,如果未能解决你的问题,请参考以下文章

活动结果相机意图在三星 s4 中返回 null

拍照时意图始终为空

Android 4.4.2 - 相机 uri 返回 null 并且裁剪功能也不起作用?

BitmapFactory.decodeByteArray() 始终返回 null(手动创建的字节数组)

使用“com.android.camera.action.CROP”意图裁剪图像,在某些设备上返回小尺寸位图

Android从相机捕获图像返回空数据[重复]