Greenstand / treetracker-android

Treetracker is Greenstands open source Android app to track and verify reforestation efforts globally. NEW DEVELOPERS: Please refer to the README for is issue milestones and topics! https://github.com/Greenstand/treetracker-android/blob/master/README.md
GNU Affero General Public License v3.0
91 stars 88 forks source link

Fatal Exception: java.lang.RuntimeException: Canvas: trying to draw too large(704649600bytes) bitmap. #905

Open ZavenArra opened 2 years ago

ZavenArra commented 2 years ago

Device Brand:LGE Model:LG G5 Orientation: Portrait RAM free: 1015.32 MB Disk free: 1.65 GB Operating System Version:Android 8.0.0 Orientation: Portrait Rooted:No Crash Date:Mar 7, 2022, 11:13:29 AM App version:2.0.0 (150)

Fatal Exception: java.lang.RuntimeException: Canvas: trying to draw too large(704649600bytes) bitmap. at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:230) at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97) at androidx.compose.ui.graphics.AndroidCanvas.drawImageRect-HPBpro0(AndroidCanvas.android.kt:275) at androidx.compose.ui.graphics.drawscope.CanvasDrawScope.drawImage-AZ2fEMs(CanvasDrawScope.kt:253) at androidx.compose.ui.node.LayoutNodeDrawScope.drawImage-AZ2fEMs(:39) at androidx.compose.ui.graphics.drawscope.DrawScope$DefaultImpls.drawImage-AZ2fEMs$default(DrawScope.kt:508) at androidx.compose.ui.graphics.painter.BitmapPainter.onDraw(BitmapPainter.kt:93) at androidx.compose.ui.graphics.painter.Painter.draw-x_KDEd0(Painter.kt:212) at androidx.compose.ui.draw.PainterModifier.draw(PainterModifier.kt:289) at androidx.compose.ui.node.DrawEntity.draw(DrawEntity.kt:108) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:279) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.access$drawContainedDrawModifiers(LayoutNodeWrapper.kt:59) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:294) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:88) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:59) at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:217) at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:292) at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:234) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:264) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.access$drawContainedDrawModifiers(LayoutNodeWrapper.kt:59) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:294) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:88) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:59) at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:217) at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:292) at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:234) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:264) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:48) at androidx.compose.foundation.Background.draw(Background.kt:107) at androidx.compose.ui.node.DrawEntity.draw(DrawEntity.kt:108) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:279) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.access$drawContainedDrawModifiers(LayoutNodeWrapper.kt:59) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:294) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:126) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:88) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:59) at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:217) at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:292) at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:234) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:264) at androidx.compose.ui.node.ModifiedLayoutNode.performDraw(ModifiedLayoutNode.kt:98) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.access$drawContainedDrawModifiers(LayoutNodeWrapper.kt:59) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:294) at androidx.compose.ui.node.LayoutNodeWrapper$invoke$1.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:1798) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:121) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:88) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:293) at androidx.compose.ui.node.LayoutNodeWrapper.invoke(LayoutNodeWrapper.kt:59) at androidx.compose.ui.platform.RenderNodeApi23.record(RenderNodeApi23.android.kt:217) at androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(RenderNodeLayer.android.kt:292) at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.android.kt:234) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:264) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.node.InnerPlaceable.performDraw(InnerPlaceable.kt:140) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.DelegatingLayoutNodeWrapper.performDraw(DelegatingLayoutNodeWrapper.kt:69) at androidx.compose.ui.node.LayoutNodeWrapper.drawContainedDrawModifiers(LayoutNodeWrapper.kt:277) at androidx.compose.ui.node.LayoutNodeWrapper.draw(LayoutNodeWrapper.kt:269) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:868) at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:852) at android.view.View.draw(View.java:19190) at android.view.View.updateDisplayListIfDirty(View.java:18137) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4272) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4252) at android.view.View.updateDisplayListIfDirty(View.java:18096) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4272) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4252) at android.view.View.updateDisplayListIfDirty(View.java:18096) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4272) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4252) at android.view.View.updateDisplayListIfDirty(View.java:18096) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4272) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4252) at android.view.View.updateDisplayListIfDirty(View.java:18096) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:643) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:649) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:757) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3091) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2895) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2448) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1452) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7217) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:979) at android.view.Choreographer.doCallbacks(Choreographer.java:791) at android.view.Choreographer.doFrame(Choreographer.java:726) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:965) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6710) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

ZavenArra commented 2 years ago

Let's target an image sized at 1 megapixel ( 1000 x 1000 pixels). If the phone does not supply a big enough image for 1000x1000, do not scale up. Do scale down to this size.