收藏
回答

canvas 压缩图片

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug canvasToTempFilePath 工具 6.7.2 2.3.0

偶现,和图片、版本、终端类型都没关系 都偶尔会出现这个问题。而且好像网络越慢越容易出现

小程序想要压缩图片功能  所以调了  drawImage,draw,canvasToTempFilePath。

可是生成的图片不稳定,偶尔会有图片不完整的情况。

由于想要先把原图画在画布上,所画布大小设置的是原图的大小,导出的图片  大小没有问题  是想要的大小,但是内容是不完整的。不知道是  drawimgae的时候没画完整还是导出图片的时候没有将画布大小压缩。



最后一次编辑于  2018-09-18  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

27 个回答

  • 卢霄霄
    卢霄霄
    2018-09-18

    filePath是个本地路径吗?

    2018-09-18
    赞同
    回复 6
    • 陈
      2018-09-18

      你知道这个问题吗

      button悬浮于textarea上方,点击这个位置时,会先触发textarea,然后弹出输入框,但是我不想让它弹出输入框,而是直接触发button的事件,应该怎么解决

      2018-09-18
      赞同
      回复
    • 卢霄霄
      卢霄霄
      2018-09-18回复

      你应该时试过了 cover-view ,然后感觉效果不行的吧?我没怎么用过 textarea ,以下只是我的妄想哈。。用view代替textarea。用 wx:if隐藏textarea,点击这个view的时候,隐藏view,显示textarea。

      2018-09-18
      赞同
      回复
    • 陈
      2018-09-18回复卢霄霄

      这样也有问题,如果我先点textarea输入值,再去点button,还是会发生一样的问题,看来只能把位置调一下了。而且它貌似是这个版本的bug,我看那个官方里的已知问题里有这个问题

      2018-09-18
      赞同
      回复
    • 卢霄霄
      卢霄霄
      2018-09-18回复

      那样不是本来就有输入框吗。。没注意。。最近加班,刷官方文档不频繁~~

      2018-09-18
      赞同
      回复
    • 果Jio铲屎官二号🐱
      果Jio铲屎官二号🐱
      2018-09-22

      试试catchtap,不要用bindtap

      2018-09-22
      赞同
      回复
    查看更多(1)
  • 🐲敖丙
    🐲敖丙
    2018-09-18

    恩 是本地路径

    2018-09-18
    赞同
    回复 1
    • 卢霄霄
      卢霄霄
      2018-09-18

      看不出问题。。

      2018-09-18
      赞同
      回复
  • 娇华
    娇华
    2018-09-18

    你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-09-18
    赞同
    回复 6
    • 🐲敖丙
      🐲敖丙
      2018-09-18

      wechatide://minicode/MRqUTwm67r2E

      现象偶现,差不多十几次复现一次。图片大和网络差出现的几率比较大

      2018-09-18
      赞同
      回复
    • 🐲敖丙
      🐲敖丙
      2018-09-21

      ???急啊!!!小程序目前就这个问题了。不能再拖了啊

      2018-09-21
      赞同
      回复
    • Kelvin、
      Kelvin、
      2018-09-30

      gemen哥们,我很想问问,你的真机,正常么?res.tempFilePath,你是拿到的图片的链接(开发工具完全正常,),还是显示:   wxfile://tmp_0c543.......(真机模拟)。 代码和逻辑,都和你的一样的。貌似我也是做这个功能。  昨天下午就做到这个地方了。今天一天,一直以为是传图的服务器问题。    后来代码拆完了,发现了这个帖子。。。

      2018-09-30
      赞同
      回复
    • Kelvin、
      Kelvin、
      2018-09-30回复Kelvin、

       然后,空白了。 莫非,我的canvas画出来的就是空白? but,开发工具,完全的一笔啊。流程都完了 - -!

      2018-09-30
      赞同
      回复
    • 🐲敖丙
      🐲敖丙
      2018-10-24回复Kelvin、

      比较久没上社区了,才看到。

      我最后的解决方案是  draw的时候  就压缩了图片,然后  导出了canvas上的图片。之前的方案是 先画原图,再压缩导出。

      2018-10-24
      赞同
      回复
    查看更多(1)
  • (・ω・)ノ
    (・ω・)ノ
    2018-09-19

    canvasToTempFilePath 的时候不要设置 width, height, dWidth, dHeight 试下

    2018-09-19
    赞同
    回复 1
    • 🐲敖丙
      🐲敖丙
      2018-09-19

      我测试了一下,也会有保存图片不完整的情况,那这个问题应该和这四个参数没关系。

      而且如果不设置 压缩图片的功能就没有了。


      2018-09-19
      赞同
      回复
  • 兰昊
    兰昊
    2018-09-20

    建议不要使用微信小程序里面的canvas,使用后台服务合成图片吧。

    微信小程序里面的canvas有本事把我的正方形搞成平行四边形。


    2018-09-20
    赞同
    回复
  • sanford🐶~
    sanford🐶~
    2018-09-21

    draw的回调函数用setTimeout 不对吧。。这不是个函数阿

    2018-09-21
    赞同
    回复 1
    • 🐲敖丙
      🐲敖丙
      2018-10-24

      这个定时是为了防止 导出图片的时候还没画完。

      2018-10-24
      赞同
      回复
  • Zuci
    Zuci
    2018-09-29

    同样遇到该问题

    2018-09-29
    赞同
    回复 1
    • 🐲敖丙
      🐲敖丙
      2018-10-24

      我最后的解决方案是  draw的时候  就压缩了图片,然后  导出了canvas上的图片。之前的方案是 先画原图,再压缩导出。

      2018-10-24
      赞同
      回复
  • kun
    kun
    2018-10-03

    也遇到同样的问题,现在能解决了么?


    2018-10-03
    赞同
    回复 1
    • 🐲敖丙
      🐲敖丙
      2018-10-24

      我最后的解决方案是  draw的时候  就压缩了图片,然后  导出了canvas上的图片。之前的方案是 先画原图,再压缩导出。

      2018-10-24
      赞同
      回复
  • Felery
    Felery
    04-19

    我最后就是用的setTimeout解决这个异步问题

    04-19
    赞同
    回复