uniapp分享功能-怎么能像html2canvas那样截图

有时候我们在做分享功能的时候,有些恶心的要求要求我们把整个页面给生成一张图片

如果是H5还好  可以通过html2canvas框架来实现,但uniapp写的不是html,而是组件化的 

那这个时候,我们可以用他H5+的屏幕截图的途径来实现这个功能

<template>
	<view class="content d-flex-center flex-direction-column vh-100" id="_poster">
		<image :src="test" mode="aspectFit" class="test"></image>		
	</view>
</template>
<script>
export default {
	data() {
		return {
		
			test: ''
		};
	},
	onLoad() {
		
	},
	onReady() {
		const that = this;
        //防止切图成白屏
		setTimeout(function() {
			that.toImage();
		}, 1000);
	},
	methods: {
		/* 截图 */
		toImage() {
			const that = this;
			/* 获取屏幕信息 */
			let ws = this.$mp.page.$getAppWebview();
			let bitmap = new plus.nativeObj.Bitmap('test');
			// 将webview内容绘制到Bitmap对象中
			ws.draw(
				bitmap,
				function(e) {
					/* 获取base64 */
					that.test= bitmap.toBase64Data();
					/* 加载base64编码 */
					bitmap.loadBase64Data(
						bitmap.toBase64Data(),
						function() {
							console.log('加载Base64图片数据成功');
							/* 保存图片 */
							bitmap.save(
								'_doc/share.jpg',
								{},
								async (i)=>{
									console.log('保存图片成功:' + JSON.stringify(i));
									uni.saveImageToPhotosAlbum({
										filePath: i.target,
										success: function() {
											/* 清除 */
											bitmap.clear();
											that.tools.toast('保存成功,请到相册中查看')
										},
										fail(e) {
											that.tools.toast('保存失败')
										}
									});
								},
								function(e) {
									console.log('保存图片失败:' + JSON.stringify(e));
								}
							);
						},
						function() {
							console.log('加载Base64图片数据失败:' + JSON.stringify(e));
						}
					);
				},
				function(e) {
					console.log('截屏绘制图片失败:' + JSON.stringify(e));
				},
				{
					check: true, // 设置为检测白屏
					clip: { top: '100px', left: '0px', height: '100%', width: '100%' } // 设置截屏区域
				}
			);
		},

};
</script>

 

 

UniApp是一个基于Vue.js的跨平台应用开发框架,它可以让你用一套代码同时构建iOS、Android、Web以及H5应用。实现弹窗分享功能通常是在UniApp中集成社交媒体分享组件,如微信、QQ等常见的分享接口。 以下是使用UniApp实现弹窗分享的基本步骤: 1. 引入依赖:在项目中引入uni-app提供的`uni-share`或类似的社会化分享组件库。你可以通过npm安装,然后在需要的地方import进来。 ```javascript // 在main.js或你想使用的组件里 import { share } from '@vant/weapp/share'; ``` 2. 创建分享配置:根据你要分享的内容类型(文本、图片、链接等),定义分享的数据。例如: ```javascript const shareData = { title: '我的精彩内容', // 分享标题 path: 'https://your-url.com', // 分享链接 desc: '这是我想要分享的文字描述', // 分享描述 imgUrl: 'path/to/image.jpg' // 分享图片URL }; ``` 3. 打开分享窗口:调用`share`方法并传入配置数据和回调函数,当用户完成分享后,回调会被执行。 ```javascript share(shareData).then(() => { console.log('分享成功'); }).catch((error) => { console.error('分享失败', error); }); ``` 4. 弹窗样式和行为:uni-app提供了自定义分享面板的选项,可以通过设置参数调整样式,比如是否显示缩略图、图标等。但大部分情况下默认样式就已经足够使用。 ```javascript share({ data: shareData, successCallback() { // 用户点击了确认分享 }, failCallback() { // 用户取消了分享 } }); ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值