Canvas:试图在android.view.DisplayListCanvas.throwIfCannotDraw中绘制太大(144609280bytes)的位图

时间:2018-02-19 09:52:36

标签: android android-layout picasso android-glide

我从网络服务获取图片,我会在图片视图中显示它。

Picasso.with(getApplicationContext()).load(imageURL).fit().centerCrop().into(ivNews);

2天前,在服务器上上传了一张2048X1600分辨率图片,所有突然的应用都因此异常而崩溃Canvas: trying to draw too large(144609280bytes) bitmap

上传到服务器上的图像可能高于上述分辨率,服务器也可以在以后上传更多高分辨率图像。

我读过this文章,其中提到glide在性能方面比毕加索更快更优秀,

它还提到,如果您使用.fit().centerCrop(),那么性能会更好,但我已经在使用这些,并收到了这些错误消息

我想通过使用毕加索来解决这个问题

1 个答案:

答案 0 :(得分:4)

如果图片尺寸较大,您可以使用scaleDown()缩放图片。您可以像下面一样使用它。

Picasso  
.with(context)
.load(<image_url>)
.resize(2048, 1600)
.onlyScaleDown() // the image will only be resized if it's bigger than 2048x 1600 pixels.
.into(<image_view>);