簡體   English   中英

從相機捕獲圖像時,位圖為空

[英]Bitmap is null while capturing image from camera

我的代碼在API級別<= 19時工作得非常好,但在更高版本中,我得到的位圖為null。

public void SelectImage() {
        final CharSequence[] items = {"Camera", "Gallery", "Cancel"};

        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(R.string.add_image);
        builder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                if (items[i].equals("Camera")) {
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    if (intent.resolveActivity(mainActivity.getPackageManager()) != null) {
                        startActivityForResult(intent, REQUEST_CAMERA);
                    }
                } else if (items[i].equals("Gallery")) {
                    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    intent.setType("image/*");
                    startActivityForResult(intent, SELECT_FILE);

                } else if (items[i].equals("Cancel")) {
                    dialog.dismiss();
                }

            }
        });


public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PLACE_PICKER_REQUEST) {
            if (resultCode == RESULT_OK) {
                place = PlacePicker.getPlace(data, mainActivity);
                etAddress1.setText(place.getAddress());
            }
        } else if (resultCode == Activity.RESULT_OK && data != null) {

            Glide.with(this).load(data.getData()).into(ivprofile);
            Bitmap bm = null;
            try {
                bm = MediaStore.Images.Media.getBitmap(mainActivity.getContentResolver(), data.getData());
            } catch (IOException e) {
                e.printStackTrace();
            }
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 50, baos);
            byte[] b = baos.toByteArray();
            base64img = Base64.encodeToString(b, Base64.NO_WRAP);
        }
    }

在這里,我的bm為null為什么發生這種情況我使用的是較舊的代碼版本還是還有其他的東西..在此先感謝。

實際上,有一個庫可以與每個手機和每個Android版本一起使用。 如果您需要解決問題,這里是一個答案。 EasyImage完成了這項工作!

不要忘記處理權限api 23及以上!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM