LuckSiege / LuckSiege/PictureSelector

裁剪大图时闪退了

Open
#2,886 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
13.6k
Forks
3.1k
PR merge metrics
No merged PRs in 30d

Description

## Current use version?
#### 当前使用的版本是多少?

```
3.11.2
```

## Will this problem occur in demo?
#### Demo能否复现这问题?

```

```

## Describe the problem or provide an error log?
#### 描述问题或提供错误log?

```
配置了压缩,裁剪,弹出相册选图,选择10MB图片后,在裁剪界面闪退了,log如下
java.lang.RuntimeException: Canvas: trying to draw too large(1665173504bytes) bitmap.
at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:283)
at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:180)
at com.yalantis.ucrop.util.FastBitmapDrawable.draw(FastBitmapDrawable.java:41)
at android.widget.ImageView.onDraw(ImageView.java:1456)
at android.view.View.draw(View.java:24290)
at android.view.View.updateDisplayListIfDirty(View.java:23116)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.draw(View.java:24296)
at android.view.View.updateDisplayListIfDirty(View.java:23116)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at android.view.View.updateDisplayListIfDirty(View.java:23104)
at android.view.View.draw(View.java:23990)
at android.view.ViewGroup.drawChild(ViewGroup.java:4597)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4349)
at com.android.internal.policy.DecorView.dispatchDraw(DecorView.java:1057)
at android.view.View.draw(View.java:24296)
at com.android.internal.policy.DecorView.draw(DecorView.java:1047)
at android.view.View.updateDisplayListIfDirty(View.java:23116)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:748)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:754)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:861)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:5572)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5247)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4344)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2816)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10296)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1760)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1769)
at android.view.Choreographer.doCallbacks(Choreographer.java:1273)
at android.view.Choreographer.doFrame(Choreographer.java:1140)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1743)
at android.os.Handler.handleCallback(Handler.java:1013)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:328)
at android.app.ActivityThread.main(ActivityThread.java:9210)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)

```

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the crash in the demo using version 3.11.2, with compression and cropping enabled, then select a 10MB image. Start with the stack trace entry at FastBitmapDrawable.java:41 and investigate the large-bitmap draw failure. Done means the same workflow no longer crashes and the relevant regression coverage passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
mobile-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.