微信小程序将页面保存为图片

文档地址:snapshot | 微信开放文档

1.根目录manifest.json文件,打开源码视图,找到mp-weixin,添加如下配置

配置含义参考文档链接:全局配置 | 微信开放文档

       "lazyCodeLoading": "requiredComponents",
		"rendererOptions": {
			"skyline": {
				"defaultDisplayBlock": true,
				"disableABTest": true,
				"sdkVersionBegin": "3.0.1",
				"sdkVersionEnd": "15.255.255"
			}
		},
		"componentFramework": "glass-easel"

2.找到根目录下的pages.json文件,在需要截图的页面下配置"renderer": "skyline",navigationStyle设置为custom,后续页面的导航栏可以采用uniapp组件自定义

3.页面

注意:官网是建议snapshot下包裹scroll-view,试了不咋行,我这里长截图采用的是scroll-view包裹snapshot,snapshot组件背景要设置为白色,不然截图出来会是全黑的图

4.微信开发者详情设置中开启skyline设置,就可以保存截图了

5.截图

takeScreenshotFn() {
			this.createSelectorQuery()
				.select('#target')
				.node()
				.exec((res) => {
					const node = res[0].node;
					console.log(node, 'node');
					node.takeSnapshot({
						type: 'arraybuffer',
						format: 'png',
						success: (res) => {
							console.log(res, 'resres');
							const f = `${wx.env.USER_DATA_PATH}/reportDetail.png`;//照着写
							console.log(f, '路径');
							const fs = uni.getFileSystemManager();
							fs.writeFileSync(f, res.data, 'binary');

							uni.saveImageToPhotosAlbum({
								filePath: f,
								success(res) {
									uni.showToast({
										title: '保存图片成功',
										icon: 'none',
										duration: 2000
									});
									console.log('saveImageToPhotosAlbum:', res);
								},
								fail(err) {
									uni.showToast({
										title: '保存图片失败',
										icon: 'none',
										duration: 2000
									});
									console.error('保存失败', err);
								}
							});
						},
						fail(err) {
							console.log(err);
							uni.showToast({
								title: '图片转换失败',
								icon: 'none',
								duration: 2000
							});
						}
					});
				});
		},

注意事项:开启skyline模式后,defaultDisplayBlock设置会导致元素默认水平排列,可以根据需要设置设置,display:flex,flex-direction: column;

文档链接:Skyline 渲染引擎 / 支持与差异 / WXSS 样式 | 微信开放文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值