Как обрезать изображение на экране печати? - PullRequest
2 голосов
/ 06 марта 2020

Я разрабатываю приложение, которое выбирает изображение раны и отображает его на экране приложения. при этом пользователь отмечает область интереса раны, чтобы впоследствии алгоритм мог распознавать и обрабатывать область интереса. Я делаю это, используя реализацию lib 'com.github.gcacace: signature-pad: 1.2.1', чтобы разграничить регион, а затем сохраняю экранную печать экрана, чтобы сохранить разметку вместе с изображением рана. Как я sh изображение будет выглядеть enter image description here

Выход: enter image description here

Однако, я хочу вырезать экран печати в соответствии с изображением раны для отправки на сервер для обработки изображения. Может кто-нибудь помочь мне вырезать изображение раны после маркировки.

    private fun saveImage(myBitmap: Bitmap?): String? {

    try {
        // image naming and path  to include sd card  appending name you choose for file
        val mPath = Environment.getExternalStorageDirectory().toString() + "/imagesignature.jpg"

        // create bitmap screen capture
        val v1 = window.decorView.rootView
        v1.isDrawingCacheEnabled = true
        val bitmap = Bitmap.createBitmap(v1.drawingCache)
        v1.isDrawingCacheEnabled = false

        val imageFile = File(mPath)

        val outputStream = FileOutputStream(imageFile)
        val quality = 100
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream)
        outputStream.flush()
        outputStream.close()

        //setting screenshot in imageview
        val filePath = imageFile.path

        val ssbitmap = BitmapFactory.decodeFile(imageFile.absolutePath)

        imagem.setImageBitmap(ssbitmap)

    } catch (e: Throwable) {
        // Several error may come out with file handling or DOM
        e.printStackTrace()
    }
    return ""
}

Ответы [ 3 ]

5 голосов
/ 07 марта 2020

Я все еще учусь, поэтому для более простого способа обрезать изображение я бы предложил использовать эту библиотеку:

https://github.com/ArthurHub/Android-Image-Cropper

Здесь вы можете обрезать изображение в соответствии с вашими требованиями и сохранить изображение на сервере

4 голосов
/ 23 марта 2020

Если у вас есть координаты прямоугольника, который вы хотите сохранить:

Bitmap croppedBmp = Bitmap.createBitmap(originalBmp, rectanglePositionX, rectanglePositionY, rectangleWidth, rectangleHeight);

Или вы можете попробовать: BitmapFactory.decodeStream(InputStream is, Rect outPadding, Options opts) или BitmapFactory.decodeFileDescriptor(FileDescriptor fd, Rect outPadding, Options opts)

, где в Rect outPadding вы будете установите координаты прямоугольника, который вы хотите сохранить.

4 голосов
/ 18 марта 2020

Насколько я знаю, я не думаю, что можно обрезать и изображать. Чтобы обрезать, вам нужно найти размеры для нужной детали. Я не думаю, что вы можете сказать программе размеры того, что вы хотите, а затем обрезать все остальное, насколько мне известно. Возможно, можно напечатать изображение, но я не думаю, что Java может обрезать. Другие программы кодирования могут работать лучше для этого.

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