收藏
回答

getImageInfo获取图片临时路径,接着用canvas画下来,临时路径报错500?

前提:利用qrcode画了一个二维码,需要保存到本地。

思路:用getImageInfo获取图片临时路径,接着画在canvas上。

问题:getImageInfo获取到临时路径(类似http://tmp/xxxx.png格式),使用   ctx.drawImage(img, 0, 0, 200, 200)后,报错,http://tmp/xxx.png 500 (Internal Server Error)。

   const query = wx.createSelectorQuery()

    query.select('#shareCanvas')

      .fields({

        node: true,

        size: true

      })

      .exec((res) => {

        ...

  const img = canvas.createImage();

        img.src = r.path;

        img.onload = () => {

          ctx.shadowOffsetX = 0;

          ctx.shadowOffsetY = 0;

          ctx.shadowBlur = 0;

          ctx.fill();

          ctx.stroke();

          ctx.drawImage(img, 0, 0, 200, 200);

        };

})

回答关注问题邀请回答
收藏

3 个回答

  • 可乐鸡翅
    可乐鸡翅
    2021-05-08

    drawImage 接收的第一个参数是 r.path 吧

    const imgInfo = await getImageInfo({
      src: baseImg
    }); 
    this.ctx.drawImage(imgInfo.path, 0, 0, 200, 200, 0, 0, 200, 200)
    
    2021-05-08
    有用
    回复
  • 拾柒
    拾柒
    2021-05-08

    用canvas生产二维码后用wx.canvasToTempFilePath这个接口保存图片啊

    2021-05-08
    有用
    回复 1
    • 青衣
      青衣
      2021-05-08
      第一次用qrcode生成的二维码,下面还有其他文字内容;需求是保存有二维码和文字的内容,所以想着获取到二维码的临时路径,用canvas重新画一个二维码+文本内容。(这提醒了我,如果qrcode可以同时生成二维码和文本的话,就不需要这么麻烦了。)
      2021-05-08
      回复
  • 神经蛙
    神经蛙
    2021-05-08

    上传个代码片段看看

    2021-05-08
    有用
    回复 4
    • 青衣
      青衣
      2021-05-08
      2021-05-08
      回复
    • 神经蛙
      神经蛙
      2021-05-08回复青衣
      img直接download吧,drawImage看看这个方法参数你就知道 了,所要绘制的图片资源(网络图片要通过 getImageInfo / downloadFile 先下载)
      2021-05-08
      回复
    • 青衣
      青衣
      2021-05-08回复神经蛙
      整个流程:qrcode生成一个二维码,再用view写了其他文本内容。先用canvasToTempFilePath转化成图片,接着用getImageInfo获取临时路径,再用drawImage画图,这样接口500。
      上面有个人提醒我直接第一步转化成图片,后面就不需要操作了,所以我改了流程,改成qrcode生成二维码+文本,接着canvasToTempFilePath直接转化成图片,这样就没问题了。
      最初的那个问题,到现在也没找到原因。
      2021-05-08
      回复
    • ぃ徐จุ๊บ少ヤ
      ぃ徐จุ๊บ少ヤ
      2021-09-26回复青衣
      怎么样了,我也是出现了这个问题
      2021-09-26
      回复
登录 后发表内容