После захвата изображения я не могу отобразить его на изображении, пока не сохраню его в виде растрового изображения.Мне нужно сохранить его в форме Uri - PullRequest
0 голосов
/ 01 марта 2019

В моем приложении, когда пользователи щелкают по изображению, пользователи могут выбрать изображение из галереи или захватить изображение с камеры и отобразить его на изображении.Я могу отобразить изображение в режиме просмотра изображений, если изображение выбрано из галереи, но оно не отображается при захвате изображения.ImageUri имеет значение null, если изображение захвачено.

Может кто-нибудь помочь мне решить эту проблему?

Ниже приведены некоторые коды, если вам нужна дополнительная информация, пожалуйста, прокомментируйте ниже

   private final static int PICK_IMAGE_REQUEST = 1;
   private final static int CAMERA = 2;
   private Uri imageUri;

    private void takePhotoFromCamera() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA);
    }

    public void selectImage() {
        Intent photoPickerIntent = new Intent();
        photoPickerIntent.setType("image/*");
        photoPickerIntent.setAction(Intent.ACTION_PICK);
        startActivityForResult(photoPickerIntent, PICK_IMAGE_REQUEST);
    }


  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

            imageUri = data.getData();
            Picasso.get().load(imageUri).into(circleImageView);
            System.out.println("haha pic " + imageUri);

        }

        if (requestCode == CAMERA && resultCode == RESULT_OK && data != null && data.getData() != null){

            imageUri = data.getData();
            Picasso.get().load(imageUri).into(circleImageView);
            System.out.println("haha camera " + imageUri);
        }

    }

1 Ответ

0 голосов
/ 03 марта 2019

Я бы посоветовал вам отобразить ваше изображение в виде растрового изображения при просмотре изображений, после этого преобразовать его в форму URL и сохранить в базе данных.

public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);
    }

вызвать этот метод в вашем методе onActivityResult и поместить этот кодвнутри

Bundle extras = data.getExtras();
        bitmap = (Bitmap)  extras.get("data");

        circleImageView.setImageBitmap(bitmap);
        imageUri = getImageUri(getApplicationContext(),bitmap);
...