123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- // pages/main/index.js
- var QR = require("../../utils/qrcode.js");
- Page({
- data: {
- /*
- 官网说hidden只是简单的控制显示与隐藏,组件始终会被渲染,
- 但是将canvas转化成图片走的居然是fail,hidden为false就是成功的
- 所以这里手动控制显示隐藏canvas
- */
- maskHidden: true,
- imagePath: '',
- placeholder: 'I love you !'
- },
- onLoad: function (options) {
- // 页面初始化 options为页面跳转所带来的参数
- var size = this.setCanvasSize();//动态设置画布大小
- var initUrl = 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 == '' ? (that.data.placeholder) : (url);
- that.setData({
- maskHidden: false,
- });
- wx.showToast({
- title: '生成中...',
- icon: 'loading',
- duration: 1000
- });
- 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)
- }
- })
|