【canvas.drawImage】的严重BUG。
发布于 5 年前 作者 minchang 9649 次浏览 来自 问答

在安卓上面通过canvas.drawImage绘制图片的时候,如果图片的尺寸宽和高超过2804*2804,(形如2805*2805),canvas就会绘制不出来,在IOS里面则能够正常显示,希望官方给个说法

10 回复

时隔一年了,这个问题好像也没有解决,传入的对象的宽度如果太大就画不来了

画得来,但没有一个正确计算的denisty,画出来也是错的。

其实降级了没关系,正确计算一下src rect降级后的坐标再画就行了,也不知道为啥不改进一下。

使用drawImage的目的主要是为了自己压缩图片(不用chooseImage自带的压缩主要是chooseImage的失真太高),希望后续版本中的chooseImage能提供自定义的压缩比例,这样就省事多了。o(* ̄▽ ̄*)ブ

图片大小,刚才又测试安卓版本5.1的华为安卓正常,安卓版本7.1的一加3T测试异常,安卓版本6.0的魅族MX6测试异常

2804 * 2804是原图图片大小

安卓版本为5.1的魅蓝Note3也出现异常

这里,小程序前端页面用的是逻辑像素,而图片是物理像素,如果你drawImage的时候使用了2804 * 2804(逻辑像素),那转换成物理像素时,native会乘于density,也就是2804 * density * 2804 * density,这里会decode出一个很大的bitmap,很大可能会挂掉,目前还没有比较好的方案解决这个问题,你可以先通过在drawImage的时候设置一下width和height(换算成逻辑像素)来暂时解决一下这个问题;

你这里的2804 * 2804是图片大小?还是drawImage的目标区域大小?

chooseImage这个问题我们内部先讨论一下~

默默顶一下

回到顶部