Wx-小程序-使用canvas截图保存
1、 wxml 页面
使用画布来站位,并给按钮添加绑定事件
<button class='btn btn-theme' bindtap='setSaveImage'>保存图片到本地</button> <!-- 使用画布站位-->
<canvas hidden="{{canvasHidden}}" canvas-id='imageCanvas'class='imageCanvas'
style='width:{{canvasWidth}}px; height:{{canvasHeight}}px' disable-scroll='true'> </canvas>
2、 js文件绑定方法
/**
* 保存图片到本地
*/
setSaveImage:function(e){
var that = this;
wx.showLoading({
title: '图片生成中...',
})
var res = '';
//调用画图方法
that.drawImages(); }, /**
* 画图方法
*/
drawImages:function(){
let that = this;
// console.log(that.data);
that.canvasHidden = false;
//轮播图图片
// var banner_image = that.data.imgUrls[0]; //网络图片地址无法用画布截取到,故使用微信获取图片信息的接口,来设置网络图片地址
that.getImageInfo(that.data.imgUrls[0]); //二维码图片
var qrcode_image = that.data.imagePath;
//标题
var title = that.data.goodsInfo.title; let context = wx.createCanvasContext('imageCanvas', that);
context.setFillStyle('#fff');
//绘制矩形的宽高
context.fillRect(0, 0, 375, 356); //绘制轮播图
context.drawImage(that.data.banner_image_url, 0, 0, 375,180); //绘制标题
context.setFontSize(14);
context.setFillStyle("#000")
context.fillText(title, 26, 228) //绘制描述 //绘制二维码图 x y width height
context.drawImage(qrcode_image, 228, 200, 130, 130);
// context.draw();
context.draw(false,that.drawCallBack); }, /**
* 绘制画布回调函数
*/
drawCallBack:function(){
var that = this
wx.canvasToTempFilePath({
// x:0,
// y:0,
// width: that.data.canvasWidth,
// height: that.data.canvasHeight,
canvasId: 'imageCanvas',
fileType: 'jpg',
success: function (res) {
var shareImg = res.tempFilePath;
// console.log(shareImg)
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success(res) {
wx.hideLoading();
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
});
}
}) },
fail: function (res) {
cosole.log(res, '<-fail res')
}
})
}, /**
* 设置画布宽高
*/
setCanvasSize:function(){
var that = this;
wx.getSystemInfo({
success: function (res) {
console.log(res);
var myCanvasWidth = res.windowWidth;
var myCanvasHeight = res.windowHeight;
that.setData({
canvasWidth: myCanvasWidth,
canvasHeight: myCanvasHeight
});
},
}) }, /**
* 根据url获取图片信息
*/
getImageInfo(ewmbgurl) {
if (typeof ewmbgurl === 'string') {
var that = this;
wx.getImageInfo({ // 小程序获取图片信息API
src: ewmbgurl,
success: function (res) {
that.setData({
banner_image_url: res.path
})
},
fail(err) {
console.log(err)
}
})
}
},
3、画布api的方法说明
/**
* x => x坐标
* y => y坐标
* width => 矩形宽
* height => 矩形高
*/
context.fillRect(0, 0, 375, 356); /**
* x => x坐标
* y => y坐标
*/
context.fillText(title, 26, 228) /**
* img_url => 图片地址
* x => x坐标
* y => y坐标
* width => 矩形宽
* height => 矩形高
*/
context.drawImage(qrcode_image, 228, 200, 130, 130); /**
* boolean => 是否接着上次绘制
* that.drawCallBack => 回调函数
*/
context.draw(false,that.drawCallBack);
4、注意事项
1. 图片地址如果是网络地址,可能会出现在ide中可以正常截图,但是在手机上变成空白,所以建议使用上面
获取图片信息的方法
2. 画布截图的宽高以及位置可根据自己的需求进行修改
3. 由于获取图片信息方法是异步通知,所以画布的后续操作可以放在success 里面操作
作者:萝卜不吃土豆
链接:https://www.jianshu.com/p/657785af9c07
来源:简书
Wx-小程序-使用canvas截图保存的更多相关文章
- wx小程序用canvas生成图片流程与注意事项
1.需要画入canvas的 图片都需要先缓存到本地 let ps = [] ps.push(that.loadImageFun(this.statusInfo.avatar_url, "he ...
- 微信小程序cavas画图并保存
需求背景: 因微信小程序暂不支持一键分享到朋友圈功能,故要生成图片并保存到手机相册就有两种情况: 1.需保存的图片为静态固定图片.这种情况图片可直接由后端返回,再调用小程序相应api直接保存到手机相册 ...
- 微信小程序-基于canvas画画涂鸦
代码地址如下:http://www.demodashi.com/demo/14461.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像)
小程序利用canvas 绘制图案 (生成海报, 生成有特色的头像) 微信小程序生成特色头像,海报等是比较常见的.下面我来介绍下实现该类小程序的过程. 首先选择前端来通过 canvas 绘制.这样比较节 ...
- 关于微信小程序前端Canvas组件教程
关于微信小程序前端Canvas组件教程 微信小程序Canvas接口函数 上述为微信小程序Canvas的内部接口,通过熟练使用Canvas,即可画出较为美观的前端页面.下面是使用微信小程序画图的一些 ...
- wx小程序获取用户位置信息
wx小程序内置的接口只能获取用户的坐标,通过微信位置服务获取用户地址: http://lbs.qq.com/qqmap_wx_jssdk/index.html 注:需要在key的设置中打开webSer ...
- 微信小程序 在canvas画布上划动,页面禁止滑动
要实现微信小程序 在canvas画布上划动,页面禁止滑动,不仅要设置disable-scroll="true",还要要给canvas绑定一个触摸事件才能生效. <canvas ...
- 微信小程序之canvas绘制海报分享到朋友圈
绘制canvas内容 首先,需要写一个canvas标签,给canvas-id命名为shareBox <canvas canvas-id="shareBox"></ ...
- 关于微信小程序使用canvas生成图片,内容图片跨域的问题
最近有个项目是保存为名片(图片),让用户发送给朋友或朋友圈,找了很多方案都不适用,绞尽脑汁之后还是选了使用canvas,但是用这玩意儿生成图片最大的缺点就是,如果你的内容中有图片,并且这个图片是通过外 ...
随机推荐
- GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装
GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的 ...
- pycharm+anaconda在Mac上的配置方法 2019.11.29
内心os: 听人说,写blog是加分项,那他就不是浪费时间的事儿了呗 毕竟自己菜还是留下来东西来自己欣赏吧 Mac小电脑上进行python数据开发环境的配置 首先下载Anaconda,一个超好用的数据 ...
- npm 基础命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包.npm 从5.2版开始,增加了 ...
- new SparkContext()发生错误java.lang.NoSuchMethodError: scala.Predef
参考:https://blog.csdn.net/weixin_40137479/article/details/80320324 new SparkContext(conf)发生错误: Except ...
- android获取系统信息
连接手机,adb shell 进入 Android Shell 模式,输入 getprop 获取系统属性值 通过上面方法拿到属性名,然后通过下面方法获取到系统的属性值 /** * 获取build.pr ...
- 添加Usb3.0驱动到win7/8/10的usb安装光盘
文章中所有需要使用到的软件和资源在文章末尾的网盘连接中有下载 Run the DISM GUI Tool Right-click on DISM GUI.exe and select Run as A ...
- python求极值点(波峰波谷)
python求极值点主要用到scipy库. 1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfit import pandas as pd import matplotli ...
- OWASP安装
下载网址:https://sourceforge.net/projects/owaspbwa/files/1.0rc2/ 下载完之后解压 解压之后 打开虚拟机 然后 虚拟机中菜单栏 文件---打开-- ...
- 《深入理解Java虚拟机》读书笔记五
第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...
- Xshell5配置ssh免密码登录-公钥与私钥登录linux服务器(xshell如何登陆上阿里云服务器)
原文地址:https://blog.csdn.net/longgeaisisi/article/details/78680180 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...