zoukankan      html  css  js  c++  java
  • 关于微信小程序使用canvas生成图片,内容图片跨域的问题

    最近有个项目是保存为名片(图片),让用户发送给朋友或朋友圈,找了很多方案都不适用,绞尽脑汁之后还是选了使用canvas,但是用这玩意儿生成图片最大的缺点就是,如果你的内容中有图片,并且这个图片是通过外链链接进来的,那么很容易造成跨域而无法生成图片的问题,以下就是我解决该问题的办法:

    *提前说一句,在做这个功能的时候,我发现跨域的问题没法解决,唯一能做的就是把图片放到和canvas相同的域里

    1,以下是微信小程序的wxml文件部分

    <canvas canvas-id='share' width="200" height="200" style="200px;height:200px;"></canvas>
    <button bindtap='save2img'>保存图片</button>
    

    2,以下是微信小程序的js部分代码

    save2img: function() {
        wx.showLoading({
          title: '图片保存中...',
        })
        let image = 'http://www.baidu.com/source.jpg';//图片地址
        let filePath = '';
        wx.downloadFile({//将图片保存为本地临时文件
          url: image,
          success(res) {
            // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
            if (res.statusCode === 200) {
              const ctx = wx.createCanvasContext('share')//创建画布
              ctx.drawImage(res.tempFilePath, 0, 0, 200, 200)//将临时文件渲染到画布上
              ctx.restore()
              ctx.save()
              ctx.draw(false, () => {
                // 生成图片
                wx.canvasToTempFilePath({
                  canvasId: 'share',
                  success: res => {
                    //画板路径保存成功后,调用方法吧图片保存到用户相册
                    wx.saveImageToPhotosAlbum({
                      filePath: res.tempFilePath,
                      //保存成功失败之后,都要隐藏画板,否则影响界面显示。
                      success: (res) => {
                        console.log(res)
                        wx.hideLoading()
                      },
                      fail: (err) => {
                        console.log(err)
                        wx.hideLoading()
                      }
                    })
                  }
                })
              })
            }
          }
        })
      },
    
    成功不是终点,失败也并非末日,重要的是前行的勇气!
  • 相关阅读:
    Python 函数
    jQuery的选择器中的通配符
    Spring thymeleaf
    Mybatis 映射关系
    Spring Security学习笔记
    Python中的魔术方法
    Python enumerate
    python lambda表达式
    Vue自定义指令完成按钮级别的权限判断
    elemetUI开关状态误操作
  • 原文地址:https://www.cnblogs.com/DSH-/p/10169016.html
Copyright © 2011-2022 走看看