博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序(canvas)画图保存到本地相册(wepy)
阅读量:6500 次
发布时间:2019-06-24

本文共 2700 字,大约阅读时间需要 9 分钟。

html标签部分

因为这个需要用户授权 所以需要使用button,画布使用的是canvas,这个可以参考,代码如下
  
复制代码

js实现部分

(1)注意这里如果是采用网络图片作为地图的话,注意小程序download的授权问题,图片域名需要时认可的,
(2)使用网络图片之前需要先用户授权scope.writePhotosAlbum,授权成功之后再调用下载(downloadFile)的api
(3)顺序是,用户授权->调用下载api->调用选择网络图片api->创建canvas->绘制画布->绘制文本,样式->将内容绘制到画布上->生成图片->保存到系统相册,代码如下
methods = {    exportImg: () => {      // 先获取用户授权      wx.getSetting({        success: (res) => {          if (!res.authSetting['scope.writePhotosAlbum']) {            wx.authorize({              scope: 'scope.writePhotosAlbum',              success: () => {                this.methods.draw()              }            })          } else {            this.methods.draw()          }        } }) },    draw: () => {      wx.downloadFile({ // 先下载        url: 'xxx.png', // 仅为示例,并非真实的资源        success: (res) => {          if (res.statusCode === 200 ||res.statusCode === 201) {            console.log(res, '-------')            wx.getImageInfo({  //  选择网络图片              src: res.tempFilePath,              success: (res) => {                console.log('底图画好了')                console.log(res.path, '底图路径')                // createCanvasContext 创建 canvas 绘图上下文(指定 canvasId)                const ctx = wx.createCanvasContext('shareCanvas')                // drawImage 绘制图像到画布。                ctx.drawImage(res.path, 0, 0, 375, 515)                ctx.setTextAlign('center')    // 用于设置文字的对齐                ctx.setFillStyle('#1AA9E3') // 文字颜色                ctx.setFontSize(35)     // 文字字号                ctx.fillText('简单', 375 / 2, 515 / 3)  //  在画布上绘制被填充的文本。                ctx.setFillStyle('#C9D75E')                ctx.setFontSize(22)                ctx.fillText('我从你的全世界路过了一下', 375 / 2, 220)                console.log('文字画好了')                // ctx.stroke()   //  画出当前路径的边框。默认颜色色为黑色。                ctx.draw()  // 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。                console.log('图生成了')                ///  把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径                const wxCanvasToTempFilePath = wx.canvasToTempFilePath                // 保存图片到系统相册  需要用户授权 scope.writePhotosAlbum                const wxSaveImageToPhotosAlbum = wx.saveImageToPhotosAlbum                wxCanvasToTempFilePath({                  canvasId: 'shareCanvas',                  success: function(res) {                    wxSaveImageToPhotosAlbum({                      filePath: res.tempFilePath,                      success(res) {                        console.log('保存好了')                        wx.showToast({                          title: '已保存到相册'                        })   }   })  }                }) } }) }  }})}};复制代码

效果图 (马赛克一下原图,嘿嘿)

注意

(1)如果使用网络图片需要注意下载图片的路由
(2)如果域名正确了,在模拟器上可以正常下载保存,但是在真机上不可以正常下载保存,可能是下载的服务器上,需要安装SSL证书;

转载地址:http://wytyo.baihongyu.com/

你可能感兴趣的文章
浅谈C/C++中的static和extern关键字
查看>>
Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数
查看>>
浅谈网络协议(四) IP的由来--DHCP与PXE
查看>>
jre与jdk的区别
查看>>
全景图的种类
查看>>
git 维护
查看>>
jfinal框架下使用c3P0连接池连接sql server 2008
查看>>
Jfinal Generator 不需要生成带某个前缀的表名数组的方法
查看>>
struts2中使用标签操作静态方法等
查看>>
熬夜写了一个小游戏,向SpaceX聊表敬意
查看>>
身份证工具类
查看>>
JPA增删改查,
查看>>
apache 开启 gzip 压缩服务
查看>>
python mysql
查看>>
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
Selenium的延迟等待
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>