123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- // pages/main/index.js
- var QR = require("../../utils/qrcode.js");
- Page({
- data:{
- /*
- 官网说hidden只是简单的控制显示与隐藏,组件始终会被渲染,
- 但是将canvas转化成图片走的居然是fail,hidden为false就是成功的
- 所以这里手动控制显示隐藏canvas
- */
- maskHidden:true,
- imagePath:'',
- placeholder:'baidu.com'
- },
- onLoad:function(options){
- // 页面初始化 options为页面跳转所带来的参数
- var size = this.setCanvasSize();//动态设置画布大小
- var initUrl = "http://"+this.data.placeholder;
- this.createQrCode(initUrl,"mycanvas",size.w,size.h);
- },
- onReady:function(){
-
- },
- onShow:function(){
-
- // 页面显示
- },
- onHide:function(){
- // 页面隐藏
- },
- onUnload:function(){
- // 页面关闭
- },
- //适配不同屏幕大小的canvas
- setCanvasSize:function(){
- var size={};
- try {
- var res = wx.getSystemInfoSync();
- var scale = 750/686;//不同屏幕下canvas的适配比例;设计稿是750宽
- var width = res.windowWidth/scale;
- var height = width;//canvas画布为正方形
- size.w = width;
- size.h = height;
- } catch (e) {
- // Do something when catch error
- console.log("获取设备信息失败"+e);
- }
- return size;
- } ,
- createQrCode:function(url,canvasId,cavW,cavH){
- //调用插件中的draw方法,绘制二维码图片
- QR.qrApi.draw(url,canvasId,cavW,cavH);
- var that = this;
- //二维码生成之后调用canvasToTempImage();延迟3s,否则获取图片路径为空
- var st = setTimeout(function(){
- that.canvasToTempImage();
- clearTimeout(st);
- },3000);
-
- },
- //获取临时缓存照片路径,存入data中
- canvasToTempImage:function(){
- var that = this;
- wx.canvasToTempFilePath({
- canvasId: 'mycanvas',
- success: function (res) {
- var tempFilePath = res.tempFilePath;
- console.log(tempFilePath);
- that.setData({
- imagePath:tempFilePath,
- });
- },
- fail: function (res) {
- console.log(res);
- }
- });
- },
- //点击图片进行预览,长按保存分享图片
- previewImg:function(e){
- var img = this.data.imagePath
- wx.previewImage({
- current: img, // 当前显示图片的http链接
- urls: [img] // 需要预览的图片http链接列表
- })
- },
- formSubmit: function(e) {
- var that = this;
- var url = e.detail.value.url;
- url = url==''?('http://'+that.data.placeholder):('http://'+url);
- that.setData({
- maskHidden:false,
- });
- wx.showToast({
- title: '生成中...',
- icon: 'loading',
- duration:2000
- });
- var st = setTimeout(function(){
- wx.hideToast()
- var size = that.setCanvasSize();
- //绘制二维码
- that.createQrCode(url,"mycanvas",size.w,size.h);
- that.setData({
- maskHidden:true
- });
- clearTimeout(st);
- },2000)
-
- }
- })
|