微信小程序(canvas)画图保存到本地相册(wepy)

news/2024/7/1 9:33:25

html标签部分

因为这个需要用户授权 所以需要使用button,画布使用的是canvas,这个可以参考小程序官方文档,代码如下
 <button class='btn'  type="default" open-type="getUserInfo"  @tap='exportImg'>生成图片保存到本地</button><canvas canvas-id="shareCanvas" style='width:375px;height:515px'/>
复制代码

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.writePhotosAlbumconst wxSaveImageToPhotosAlbum = wx.saveImageToPhotosAlbumwxCanvasToTempFilePath({canvasId: 'shareCanvas',success: function(res) {wxSaveImageToPhotosAlbum({filePath: res.tempFilePath,success(res) {console.log('保存好了')wx.showToast({title: '已保存到相册'})   }   })  }}) } }) }  }})}};
复制代码

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

注意

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

http://lihuaxi.xjx100.cn/news/236205.html

相关文章

学金融买计算机配置,我是学金融投资的计算机等级考试哪个方向对我工作有用...

你好&#xff1a;你的这种情况应该是系统调整或服务器维护造成的&#xff0c;在这两天还有很多网友无法进入主页&#xff0c;请耐心等待&#xff0c;新浪工作日人员会尽快将系统恢复&#xff01; 祝顺利&#xff01;多出好文章&#xff01; 博客临时故障&#xff0c;用新浪各种…

HTML5的十大新特性

为了更好地处理今天的互联网应用&#xff0c;HTML5添加了很多新元素及功能&#xff0c;比如: 图形的绘制&#xff0c;多媒体内容&#xff0c;更好的页面结构&#xff0c;更好的形式 处理&#xff0c;和几个api拖放元素&#xff0c;定位&#xff0c;包括网页 应用程序缓存&#…

机器学习进阶-图像形态学操作-腐蚀操作 1.cv2.erode(进行腐蚀操作)

1.cv2.erode(src, kernel, iteration) 参数说明&#xff1a;src表示的是输入图片&#xff0c;kernel表示的是方框的大小&#xff0c;iteration表示迭代的次数 腐蚀操作原理&#xff1a;存在一个kernel&#xff0c;比如(3, 3)&#xff0c;在图像中不断的平移&#xff0c;在这个9…

旋转卡壳——模板(对踵点)

这东西学了我大概两天吧。。其实不应该学这么久的&#xff0c;但是这两天有点小困&#xff0c;然后学习时间被削了很多\(QwQ\) 说几个坑点。 - 对于题目不保证有凸包的情况&#xff0c;要选用左下角的点&#xff0c;而非单纯的最下边的点构造凸包。 - 对于凸包中只有\(1/2\)个点…

计算机一级ps2019,2019年计算机一级考试PS基础学习点子:PS菜单中英文对照表.docx...

2019 年计算机一级考试 PS 基础学习点子&#xff1a; PS 菜单中英文对照表PS菜单中英文对照表一、FileNew2.Open3.Open As4.Open RecentClose6.Save7.Save As8.Save for Web9.Revert10.Place11.ImportPDF ImageAnnotationsExportManage WorkflowCheck InUndo Check OutUpload T…

POJ 1236 Network of Schools(tarjan)

Network of SchoolsDescription A number of schools are connected to a computer network. Agreements have been developed among those schools: each school maintains a list of schools to which it distributes software (the “receiving schools”). Note that if B …

trash-cli设置Linux 回收站

trash-cli 设置 Linux 回收站 trash-cli是一个使用 python 开发的软件包&#xff0c;包含 trash-put、restore-trash、trash-list、trash-empty、trash-rm等命令&#xff0c;我们可以通过这条命令&#xff0c;将文件移动到回收站&#xff0c;或者还原删除了的文件。 trash-cli的…

nginx安全日志分析脚本的编写

https://blog.csdn.net/nextdoor6/article/details/51914966