Как автоматически обрезать после камеры - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу сделать снимок с камеры, а затем выполнить автоматическую обрезку после захвата изображения.Есть ли пример исходного кода?Мне трудно найти пример image

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Я предлагаю вам использовать эту библиотеку Android-Image-Cropper от ArthurHub , она дает вам множество вариантов обрезки (форма, размер, ....), а также дает вам выбор взять новую фотографию или использовать ее из галереи

    int myColor;
    if(Build.VERSION.SDK_INT >= 21){
        myColor = ContextCompat.getColor(this, R.color.white);
    }
    else{
        myColor=getResources().getColor(R.color.white);
    }
    CropImage.activity()
            .setActivityMenuIconColor(myColor)
            .setAllowRotation(true)
            .setFixAspectRatio(true)
            .setAspectRatio(3, 2)
            .setCropShape(CropImageView.CropShape.RECTANGLE)
            .setActivityTitle("Selection d'image")
            .start(this);

и вы должны обработать результат:

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

    if(requestCode== CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE){

     CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            Uri resultUri = result.getUri();
            Bitmap bitmap = null;
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), resultUri);

                String string = resultUri.toString();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.JPEG, 40, baos);


            } catch (IOException e) {
                e.printStackTrace();
            }


        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            Exception error = result.getError();
        }
    }

}

enter image description here

0 голосов
/ 22 апреля 2019

Это не простой ответ, так как потребуется немало времени и обучения, чтобы получить то, что вы хотите.Я бы порекомендовал взглянуть на OpenCv - это очень мощный инструмент, который может загружать больше изображений, чем просто обрезку, но что-то вроде обрезки может быть сделано очень легко.

Эта ссылка показывает пример обрезки рамок с использованием OpenCv.Это было бы хорошим ориентиром для вашего проекта, так как то, что вы хотите обрезать, имеет прямоугольную форму и стандартную форму.Если это не так, то вам нужно больше погрузиться в методы обработки изображений для определения конкретного объекта, который вы хотите обрезать.Есть много других ресурсов онлайн (в том числе здесь, на StackExchange) для изучения OpenCv.

Кроме того, в этом посте есть несколько полезных ссылок для изучения того, как реализовать OpenCv на Android.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...