【uniapp】【微信小程序】wxml-to-canvas
真是搞吐了,研究了整整两天,困死我了

本来使用生成二维码插件好好的,插件页也支持导出二维码图片,可是领导说要带上文件的名称,那就涉及html转图片了,当然也可以改二维码插件的源码,不过源码做了混淆,看晕了,放弃了。
试了将微信的原生插件wxml-to-canvas引入uniapp项目,最后捣鼓了好久没捣鼓好,因为微信小程序原生的插件由wxml、wxss文件组成的,不能直接引入page.vue,那就把它放到生成的微信小程序项目文件夹下,可是这样不是一编译又回到解放前么?
后来查到可以将微信小程序的原生插件放在wxcomponents目录下,并且在pages.json中对应的页面配置usingComponents,可是项目跑起来少包了,缺少widget-ui,烦死了,最后跑起来还是报错找不到插件,也许我离黄金只剩一厘米,但是我不要再自己尝试了。
最后回到插件市场下载x-wxml-to-canvas插件,一开始也是用这个插件但是各种报错,现在只能回头再尝试,毕竟2000多的下载量,该是有一定含金量的。于是~打断点,跟代码——发现是插件原代码有点点点点缺陷,稍微改了下...
好家伙,给我整出来了,有view有image,nice~
以下是我记得的x-wxml-to-canvas插件的修改点
data() {
return {
canvasId: 'canvas',
timeId: null,
canvas: {},
ctx: null,
boundary: {}
};
},
注意插件方法的调用顺序(注释掉的代码也是可用的,是直接保存到相册):
createPoster() {
this.$refs.xWxmlToCanvas.renderToCanvas();
this.$refs.xWxmlToCanvas.canvasToTempFilePath(); //生成图片
this.$refs.xWxmlToCanvas.getCanvasImage().then(res => {
uni.previewImage({
current: 0,
urls: [res],
fail: err => {
this.$modal.msgError(this.$t('picture-preview-failed'));
}
});
// this.$refs.xWxmlToCanvas.saveImageToPhotosAlbum(res, this.fileName, saveRes => {
// this.$modal.msg('保存成功');
// });
});
}
因为我的二维码图片是动态的,所以我的wxml模板也是动态生成的
previewImage() {
return this.$refs.wQrcode.GetCodeImg().then(res => {
const tempFilePath = res.tempFilePath;
this.initWxml(tempFilePath);
this.wxmlIsReady = true;
});
},
因为wxml-to-canvas插件的初始化是在mounted阶段进行,为了防止他在我获取二维码图片临时地址前做无用功,加了个flag(wxmlIsReady)
<XWxmlToCanvas v-if="wxmlIsReady" ref="xWxmlToCanvas" :hide="true" :width="500" :height="style.container.height" :xStyle="style" :xWxml="wxml" />
你们看到的图片似乎带了box-shadow,wxml-to-canvas不支持css的box-shadow,我只能自己用view一圈一圈画了,边缘不够模糊,还要继续改进下。
【uniapp】【微信小程序】wxml-to-canvas的更多相关文章
- 微信小程序中使用canvas
微信小程序中使用canvas会存在的一些问题: 由于小程序在绘制canvas的时候不能加载网络图片 所以需要把网络图片保存到本地之后再进行绘制 downLoadImg: function (netUr ...
- uniapp 微信小程序 配置分享朋友和朋友圈
uniapp 微信小程序 配置分享朋友和朋友圈 首先在小程序中配置微信分享,和微信朋友圈, onShareAppMessage, onShareTimeline 这两个API 和 onLoad 同级目 ...
- uniapp微信小程序canvas绘图插入网络图片不显示
网络图片缓存 在uni中wx可以用uni代替 无区别: 先把要插入的网络图片缓存(getImageInfo); let context = uni.createCanvasContext('first ...
- 微信小程序wxml和wxss样式
对于css不熟悉的android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了.微信小程序的排版就跟wxml和wxss有关了,它们两者相当于android的布局文件,其中wxml指 ...
- 微信小程序 WXML、WXSS 和JS介绍及详解
前几天折腾了下.然后列出一些实验结果,供大家参考. 百牛信息技术bainiu.ltd整理发布于博客园 0. 使用开发工具模拟的和真机差异还是比较大的.也建议大家还是真机调试比较靠谱. 1. WXML( ...
- 微信小程序_(组件)canvas画布
canvas画布效果 官方文档:传送门 Page({ canvasIdErrorCallback: function (e) { console.error(e.detail.errMsg) }, o ...
- 【重点突破】—— UniApp微信小程序开发教程学习Three
一.实战 HBuilderX:在微信小程序中运行页面,需要设置->安全 开启微信小程序服务端口,HBuilder工具->设置->配置程序路径 网络请求.模板语法.打开页面.页面传参 ...
- 用微信小程序开发的Canvas绘制可配置的转盘抽奖
使用https://github.com/givebest/GB-canvas-turntable代码移植过而来. 其它 微信小程序感觉是个半成品,代码移植过程比较繁琐麻烦.canvas API 部分 ...
- 微信小程序 base64 图片 canvas 画布 drawImage 实现
在微信小程序中 canvas drawImage API 传入的第一个参数是 imageResource 图片资源路径,这个参数通常由从相册选择图片 wx.chooseImage 或 wx.getIm ...
- 微信小程序wxml文件中调用自定义函数
想在微信小程序的wxml文件里自如的像vue那样调用自定义的方法,发现并不成功,得利用WXS脚本语言. WXS脚本语言是 WeiXin Script 脚本语言的简称,是JavaScript.JSON. ...
随机推荐
- Go语言如何判断两个对象是否相等
1. 引言 在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等. ...
- 手记系列之五 ----- SQL使用经验分享
前言 本篇文章主要介绍的关于本人从刚工作到现在使用Sql一些使用方法和经验,从最基本的SQL函数使用,到一些场景的业务场景SQL编写. SQL基础函数使用 1.字段转换 CASE WHEN 意义: ...
- 使用poi-tl导出word文件的几个技巧
1.前言 Poi-tl提供了基于word模板文件导出word文件的功能.文档地址:http://deepoove.com/poi-tl/. 用下来,总体感觉还是很方便的.但使用过程,有几个细节 ...
- SpringBoot集成支付宝 - 少走弯路就看这篇
最近在做一个网站,后端采用了SpringBoot,需要集成支付宝进行线上支付,在这个过程中研究了大量支付宝的集成资料,也走了一些弯路,现在总结出来,相信你读完也能轻松集成支付宝支付. 在开始集成支付宝 ...
- CKS 考试题整理 (10)-Dockerfile检测
Task 分析和编辑给定的Dockerfile /cks/docker/Dockerfile(基于ubuntu:16.04 镜像), 并修复在文件中拥有的突出的安全/最佳实践问题的两个指令. 分析和编 ...
- celery笔记七之周期/定时任务及crontab定义
本文首发于公众号:Hunter后端 原文链接:celery笔记七之周期/定时任务及crontab定义 periodic task,即为周期,或者定时任务,比如说每天晚上零点零分需要运行一遍某个函数,或 ...
- 使用MASA Stack+.Net 从零开始搭建IoT平台 第五章 使用时序库存储上行数据
@ 目录 前言 分析 实施步骤 时序库的安装 解决playload没有时间戳问题 代码编写 测试 总结 前言 我们可以将设备上行数据存储到关系型数据库中,我们需要两张带有时间戳的表(最新数据表 和 历 ...
- 一文了解Go语言的I/O接口设计
1. 引言 I/O 操作在编程中扮演着至关重要的角色.它涉及程序与外部世界之间的数据交换,允许程序从外部,如键盘.文件.网络等地方读取数据,也能够将外界输入的数据重新写入到目标位置中.使得程序能够与外 ...
- 走近高德驾车ETA(预估到达时间)
1. 什么是驾车ETA 临近节假,长途自驾返乡的你是否曾为无法预知路上到底有多堵而纠结?通勤上班,作为有车一族的你是否在为路况变幻莫测的早晚高峰而烦恼?外出旅行,赶火车.赶飞机的你是否还在为担心错过班 ...
- Acunetix使用说明
简述 Acunetix是一种应用安全性扫描工具,旨在帮助发现和修复Web应用程序中的漏洞和安全风险. Acunetix可以发现以下一些常见的安全问题: 跨站脚本攻击(XSS):通过在网页中注入恶意脚本 ...