收藏
回答

【canvas.drawImage】的严重BUG。

问题模块
API和组件

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

最后一次编辑于  2017-09-20
回答关注问题邀请回答
收藏

10 个回答

  • 糊精
    糊精
    2018-07-05

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

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


    2018-07-05
    赞同
    回复
  • 余章胜
    余章胜
    2018-04-26

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

    2018-04-26
    赞同
    回复
  • Albie
    Albie
    2017-09-29

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

    2017-09-29
    赞同
    回复
  • Tzot
    Tzot
    2017-09-28

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

    2017-09-28
    赞同
    回复
  • Albie
    Albie
    2017-09-27

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

    2017-09-27
    赞同
    回复 1
    • 糊精
      糊精
      2018-07-05

      denisty怎么求?大的图会变成1/9,小点的变成1/4,找不到规律。

      在没有解决方案之前能不能先给一个计算density的算法? 2804这个数据也很奇怪,看起来更像是看总像素,而不是看边长的。能不能把精确的降级比例计算方法公布一下,起码开发者可以自己弥补一下。

      2018-07-05
      回复
  • Tzot
    Tzot
    2017-09-20

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

    2017-09-20
    赞同
    回复
  • Tzot
    Tzot
    2017-09-20

    2804 * 2804是原图图片大小

    2017-09-20
    赞同
    回复
  • Tzot
    Tzot
    2017-09-20

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

    2017-09-20
    赞同
    回复
  • Albie
    Albie
    2017-09-20

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

    2017-09-20
    赞同
    回复
  • Tzot
    Tzot
    2017-09-20

    默默顶一下

    2017-09-20
    赞同
    回复