11package io.scanbot.example
22
3- import android.graphics.BitmapFactory
43import android.net.Uri
54import android.os.Bundle
65import android.util.Log
@@ -9,12 +8,15 @@ import androidx.activity.result.PickVisualMediaRequest
98import androidx.activity.result.contract.ActivityResultContracts
109import androidx.appcompat.app.AppCompatActivity
1110import androidx.lifecycle.lifecycleScope
11+ import io.scanbot.common.getOrNull
12+ import io.scanbot.common.getOrThrow
1213import io.scanbot.example.common.Const
1314import io.scanbot.example.common.applyEdgeToEdge
1415import io.scanbot.example.common.showToast
1516import io.scanbot.example.databinding.ActivityMainBinding
1617import io.scanbot.sdk.ScanbotSDK
17- import io.scanbot.sdk.imagefilters.ParametricFilter
18+ import io.scanbot.sdk.image.ImageRef
19+ import io.scanbot.sdk.imageprocessing.ParametricFilter
1820import io.scanbot.sdk.util.PolygonHelper
1921import kotlinx.coroutines.Dispatchers
2022import kotlinx.coroutines.launch
@@ -26,21 +28,22 @@ class MainActivity : AppCompatActivity() {
2628
2729 private val scanbotSdk: ScanbotSDK by lazy { ScanbotSDK (this ) }
2830
29- private val selectGalleryImageResultLauncher = registerForActivityResult(ActivityResultContracts .PickVisualMedia ()) { uri ->
30- if (! scanbotSdk.licenseInfo.isValid) {
31- this @MainActivity.showToast(" 1-minute trial license has expired!" )
32- Log .e(Const .LOG_TAG , " 1-minute trial license has expired!" )
33- return @registerForActivityResult
34- }
31+ private val selectGalleryImageResultLauncher =
32+ registerForActivityResult(ActivityResultContracts .PickVisualMedia ()) { uri ->
33+ if (! scanbotSdk.licenseInfo.isValid) {
34+ this @MainActivity.showToast(" 1-minute trial license has expired!" )
35+ Log .e(Const .LOG_TAG , " 1-minute trial license has expired!" )
36+ return @registerForActivityResult
37+ }
3538
36- if (uri == null ) {
37- showToast(" Error obtaining selected image!" )
38- Log .e(Const .LOG_TAG , " Error obtaining selected image!" )
39- return @registerForActivityResult
40- }
39+ if (uri == null ) {
40+ showToast(" Error obtaining selected image!" )
41+ Log .e(Const .LOG_TAG , " Error obtaining selected image!" )
42+ return @registerForActivityResult
43+ }
4144
42- lifecycleScope.launch { processImage(uri) }
43- }
45+ lifecycleScope.launch { processImage(uri) }
46+ }
4447
4548 override fun onCreate (savedInstanceState : Bundle ? ) {
4649 super .onCreate(savedInstanceState)
@@ -58,11 +61,17 @@ class MainActivity : AppCompatActivity() {
5861
5962 val page = withContext(Dispatchers .Default ) {
6063 val inputStream = contentResolver.openInputStream(imageUri)
61- val bitmap = BitmapFactory .decodeStream(inputStream)
62- val detectedPolygon = scanbotSdk.createDocumentScanner().scanFromBitmap(bitmap)?.pointsNormalized ? : PolygonHelper .getFullPolygon()
64+ ? : throw IllegalStateException (" Cannot open input stream from URI: $imageUri " )
65+ val image = ImageRef .fromInputStream(inputStream)
66+ val scanner = scanbotSdk.createDocumentScanner().getOrThrow()
67+ val detectedPolygon =
68+ scanner.run (image).getOrNull()?.pointsNormalized ? : PolygonHelper .getFullPolygon()
6369 val document = scanbotSdk.documentApi.createDocument()
64- return @withContext document.addPage(bitmap).apply {
65- apply (newPolygon = detectedPolygon, newFilters = listOf (ParametricFilter .grayscaleFilter()))
70+ return @withContext document.addPage(image).apply {
71+ apply (
72+ newPolygon = detectedPolygon,
73+ newFilters = listOf (ParametricFilter .grayscaleFilter())
74+ )
6675 }
6776 }
6877
0 commit comments