收藏
回答

新的canvas的drawImage不支持本地tmp路径的临时文件吗?

【貌似官方修复了这个问题。现在可以了。】

https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html

drawImage( )不支持本地tmp路径的临时文件,谨慎使用,太坑了。

写法1.

```

path = 'tmp/wxf65e9ae5f68283d2.o6zAJs5h4IkyHaGS7_j6gUPGTR9c.arwyj04Eq2ok341457e272957e237fa21d743912f60b.jpg'

ctx.drawImage(path, 0, 0, width, height, 0, 0, canvasWidth, canvasHeight)

```

提示:Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)';at SelectorQuery callback function


写法2.

```

const img = canvas.createImage()

img.src = path

img.onload = () =>{

    ctx.drawImage(img, 0, 0, width, height, 0, 0, canvasWidth, canvasHeight)

}

```

提示:tmp/wxf65e9ae5f68283d2.o6zAJs5h4IkyHaGS7_j6gUPGTR9c.arwyj04Eq2ok341457e272957e237fa21d743912f60b.jpg:1 GET http://tmp/wxf65e9ae5f68283d2.o6zAJs5h4IkyHaGS7_j6gUPGTR9c.arwyj04Eq2ok341457e272957e237fa21d743912f60b.jpg net::ERR_PROXY_CONNECTION_FAILED

最后一次编辑于  03-29
回答关注问题邀请回答
收藏

5 个回答

  • Eto💘Yang
    Eto💘Yang
    星期三 22:49

    可以存到云服务器,然后

    wx.cloud.getTempFileURL


    星期三 22:49
    赞同
    回复 1
    • sunshuai
      sunshuai
      星期四 07:15
      不可行的这个,我要实现的就是上传之前用canvas压缩减少体积
      星期四 07:15
      回复
  • Gavin
    Gavin
    03-27

    你的写法有问题吧

     ctx.fillText(`经办人:${obj.partyAOperator}`,20,1040);

        ctx.save();

        ctx.beginPath();

        let seal = canvas.createImage();

        seal.src = '../../resource/image/seal.png';

        seal.onload = (res=> {

          ctx.drawImage(seal,00150150);

        }

        ctx.closePath();

        ctx.restore();

        ctx.fillText("乙方(电子签名):",20,1080);

    我的都没问题受了你方法二的启发

    03-27
    赞同
    回复 8
    • sunshuai
      sunshuai
      03-27
      用代码文件夹里的图片(“../../resource/image/seal.png”)是没问题,我意思是使用临时文件,也就是路径类似“tmp/wxf65e9ae5f68283d2.o6zAJs5h4IkyHaGS7_j6gUPGTR9c.arwyj04Eq2ok341457e272957e237fa21d743912f60b.jpg”这样的,不行。
      03-27
      回复
    • Gavin
      Gavin
      03-27回复sunshuai
      稍等我试试
      03-27
      回复
    • sunshuai
      sunshuai
      03-27
      我想实现的功能是用canvas压缩图片,图片都是从相册里面选的。
      03-27
      回复
    • Gavin
      Gavin
      03-29回复sunshuai
      没问题啊可以用临时路径
      03-29
      回复
    • Gavin
      Gavin
      03-29
      值得注意一点就是小程序IDE会报500错找不到图片资源,手机上显示是正常的,开启真机调试也是会报错的,应该是新的canvaType2D还没有完善,官方还请尽快修复,搞了我一天今天想到过来回复一下
      03-29
      回复
    查看更多(3)
  • Dave.代
    Dave.代
    03-08

    同问,也遇到同样问题

    03-08
    赞同
    回复
  • 猿猿猿ಠ_ರೃ树林
    猿猿猿ಠ_ರೃ树林
    03-07

    谢邀,可以把图片放到图片服务器再配置合法域名用wx.getImageInfo或wx.downloadFile缓存到本地试试


    03-07
    赞同
    回复
  • phoenixor
    phoenixor
    03-06

    我也是这个需求,用的写法2,请问怎么解决????

    03-06
    赞同
    回复 4
    • sunshuai
      sunshuai
      03-06
      我也没解决,运营人员说createImage这个API不支持本地tmp路径,但是我drawImage用旧的canvas还会有bug,运营人员说让试试新的canvas,这不是自相矛盾吗,难受😣
      03-06
      回复
    • phoenixor
      phoenixor
      03-06回复sunshuai
      我用的就是新的canvas 2d,drawImage不支持本地临时图片吗??那我的需求是先把图表保存成图片,再到海报页绘制到画布上,怎么解决??
      03-06
      回复
    • Gavin
      Gavin
      03-29
      没有不支持我用临时路径都可以
      03-29
      回复
    • Gavin
      Gavin
      03-29
      回复晚了当天忙着忙着忘了回来回复了
      03-29
      回复
登录 后发表内容
问题标签