Closed letscodewithkalyan closed 1 year ago
You said:
... while request camera only.
but in your sample code, it's gallery.
Should I test by camera or gallery?
Thanks quick reply and fix but Still issue exist @Drjacky . I modified sample app like below ImagePicker.with(this) .galleryOnly() .maxResultSize(128, 128, false) .setMultipleAllowed(true) .galleryMimeTypes( // no gif images at all mimeTypes = arrayOf( "image/png", "image/jpg", "image/jpeg" ) ) .createIntent()
Observed issue without cropping mention maxResultSize.
private fun pickCameraImage() {
cameraLauncher.launch(
ImagePicker.with(this.requireActivity())
.cameraOnly()
.maxResultSize(500, 500, true)
.createIntent()
)
}
private val cameraLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == Activity.RESULT_OK) {
val uri = it.data?.data!!
mCameraUri = uri
} else {
parseError(it)
}
}
Above piece of code is also giving this error below:
Unable to decode stream: java.io.FileNotFoundException: /external_files/Android/data/com.example.app/files/DCIM/Camera/IMG_20230215_140915365.jpg: open failed: ENOENT (No such file or directory)
2023-02-15 14:09:19.949 30475-30475 AndroidRuntime com.example.app E FATAL EXCEPTION: main
Process: com.example.app, PID: 30475
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at com.github.drjacky.imagepicker.provider.CompressionProvider.compressTask(CompressionProvider.kt:72)
at com.github.drjacky.imagepicker.provider.CompressionProvider.access$compressTask(CompressionProvider.kt:24)
at com.github.drjacky.imagepicker.provider.CompressionProvider$compress$1.invokeSuspend(CompressionProvider.kt:58)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
at com.github.drjacky.imagepicker.provider.CompressionProvider.compress(CompressionProvider.kt:57)
at com.github.drjacky.imagepicker.ImagePickerActivity.setImage(ImagePickerActivity.kt:172)
at com.github.drjacky.imagepicker.provider.CameraProvider.handleResult(CameraProvider.kt:142)
at com.github.drjacky.imagepicker.ImagePickerActivity.cameraLauncher$lambda$1(ImagePickerActivity.kt:59)
at com.github.drjacky.imagepicker.ImagePickerActivity.$r8$lambda$TbnVizF4DKsKWrDO5-zrgXMal9g(Unknown Source:0)
at com.github.drjacky.imagepicker.ImagePickerActivity$$ExternalSyntheticLambda1.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry$1.onStateChanged(ActivityResultRegistry.java:149)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:360)
at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:271)
at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:313)
at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:151)
at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134)
at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68)
at androidx.lifecycle.ReportFragment$LifecycleCallbacks.onActivityPostStarted(ReportFragment.java:187)
at android.app.Activity.dispatchActivityPostStarted(Activity.java:1430)
at android.app.Activity.performStart(Activity.java:8324)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3757)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2259)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8105)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@b3250f, Dispatchers.Main.immediate]
2023-02-15 14:09:19.952 30475-30475 OOMEventManagerFK com.example.app
I noticed it happened after I removed crop() option
private fun pickCameraImage() { cameraLauncher.launch( ImagePicker.with(this.requireActivity()) .cameraOnly() .maxResultSize(500, 500, true) .createIntent() ) } private val cameraLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == Activity.RESULT_OK) { val uri = it.data?.data!! mCameraUri = uri } else { parseError(it) } }
Above piece of code is also giving this error below:
Unable to decode stream: java.io.FileNotFoundException: /external_files/Android/data/com.example.app/files/DCIM/Camera/IMG_20230215_140915365.jpg: open failed: ENOENT (No such file or directory) 2023-02-15 14:09:19.949 30475-30475 AndroidRuntime com.example.app E FATAL EXCEPTION: main Process: com.example.app, PID: 30475 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference at com.github.drjacky.imagepicker.provider.CompressionProvider.compressTask(CompressionProvider.kt:72) at com.github.drjacky.imagepicker.provider.CompressionProvider.access$compressTask(CompressionProvider.kt:24) at com.github.drjacky.imagepicker.provider.CompressionProvider$compress$1.invokeSuspend(CompressionProvider.kt:58) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25) at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110) at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56) at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47) at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1) at com.github.drjacky.imagepicker.provider.CompressionProvider.compress(CompressionProvider.kt:57) at com.github.drjacky.imagepicker.ImagePickerActivity.setImage(ImagePickerActivity.kt:172) at com.github.drjacky.imagepicker.provider.CameraProvider.handleResult(CameraProvider.kt:142) at com.github.drjacky.imagepicker.ImagePickerActivity.cameraLauncher$lambda$1(ImagePickerActivity.kt:59) at com.github.drjacky.imagepicker.ImagePickerActivity.$r8$lambda$TbnVizF4DKsKWrDO5-zrgXMal9g(Unknown Source:0) at com.github.drjacky.imagepicker.ImagePickerActivity$$ExternalSyntheticLambda1.onActivityResult(Unknown Source:4) at androidx.activity.result.ActivityResultRegistry$1.onStateChanged(ActivityResultRegistry.java:149) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:360) at androidx.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:271) at androidx.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:313) at androidx.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:151) at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:134) at androidx.lifecycle.ReportFragment.dispatch(ReportFragment.java:68) at androidx.lifecycle.ReportFragment$LifecycleCallbacks.onActivityPostStarted(ReportFragment.java:187) at android.app.Activity.dispatchActivityPostStarted(Activity.java:1430) at android.app.Activity.performStart(Activity.java:8324) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3757) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2259) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:210) at android.os.Looper.loop(Looper.java:299) at android.app.ActivityThread.main(ActivityThread.java:8105) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045) Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@b3250f, Dispatchers.Main.immediate] 2023-02-15 14:09:19.952 30475-30475 OOMEventManagerFK com.example.app
I noticed it happened after I removed crop() option
I got this error too.
Mine is:
ImagePicker.with(this@AddSprayInspectionActivity) .maxResultSize(imageSize, imageSize, true) .provider(ImageProvider.BOTH) //Or bothCameraGallery() .createIntentFromDialog { launcher.launch(it) }
Any workaround or how to fix will be appreciated.
I have the same issue:
screenshot with the first error:
Describe the bug I added .maxResultSize(512, 512, false) while request camera only. I am getting image size 3072* 4080. No image compression.
To Reproduce
In Sample project launch this and check the image size
Expected behavior Image resolution should be less than mentioned.
Additional context Downloaded code and checked code in CompressionProvider Class below method returning size as zero
This function