Fresco: Canvas: trying to draw too large bitmap. How to point this crash?

Created on 21 Nov 2017  路  1Comment  路  Source: facebook/fresco

Fatal Exception: java.lang.RuntimeException: Canvas: trying to draw too large(214622500bytes) bitmap.
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
at android.graphics.Canvas.drawBitmap(Canvas.java:1420)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
at com.facebook.drawee.drawable.ForwardingDrawable.draw(ForwardingDrawable.java:147)
at com.facebook.drawee.drawable.ForwardingDrawable.draw(ForwardingDrawable.java:147)
at com.facebook.drawee.drawable.ScaleTypeDrawable.draw(ScaleTypeDrawable.java:126)
at com.facebook.drawee.drawable.FadeDrawable.drawDrawableWithAlpha(FadeDrawable.java:3306)
at com.facebook.drawee.drawable.ForwardingDrawable.draw(ForwardingDrawable.java:147)
at com.facebook.drawee.generic.RootDrawable.draw(RootDrawable.java:85)
at android.widget.ImageView.onDraw(ImageView.java:1268)
at android.view.View.draw(View.java:18394)
at android.view.View.updateDisplayListIfDirty(View.java:17372)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.View.draw(View.java:18156)
at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
at android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:4485)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
at android.view.View.draw(View.java:18397)
at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:3892)
at android.view.View.updateDisplayListIfDirty(View.java:17372)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3953)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3933)
at android.view.View.updateDisplayListIfDirty(View.java:17335)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:722)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:728)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:836)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3181)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2977)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2565)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1550)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7189)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959)
at android.view.Choreographer.doCallbacks(Choreographer.java:734)
at android.view.Choreographer.doFrame(Choreographer.java:670)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

question

>All comments

Hi @hexiangyuan, please follow our guidelines on how to create an issue for Fresco (fill the template provided when you click on "new issue"). Your particular question is more like a discussion and I would suggest to raise question on StackOverflow (http://stackoverflow.com/questions/tagged/fresco).

Such huge images should be resized before drawing. Best way is resize images on server if you have such and option. If you load images from some places out of your control, take a look on http://frescolib.org/docs/resizing.html to learn how to specify resizing options for your requests.

Was this page helpful?
0 / 5 - 0 ratings