sample-easyar-share

演示如何使用微信小程序xr-frame接口实现截图分享功能。

配置和运行

请参考 开发入门 进行配置和运行

如果想创建标准的xr-frame工程,请参考微信官方文档 开始

详解

sample-easyar-share使用xr-frame提供的ShareSystem制作而成,本身不使用插件功能。

ShareSystem文档API说明:https://developers.weixin.qq.com/miniprogram/dev/api/xr-frame/classes/ShareSystem.html

sample的运行流程基于小程序基本框架,目录pages中存放所有的页面逻辑,components中存放所有被页面使用的组件功能,xr-frame和AR功能的在component中加载和使用。

小程序的目录结构说明:https://developers.weixin.qq.com/miniprogram/dev/framework/structure.html

如何获取ShareSystem?

const share = scene.share;

所有的system都可以在xr-scene节点上直接获取。

如何截图并保存到手机相册?

截图功能分为2个部分:提取图片数据、保存本地文件并添加到相册。sample中可参考实现方法takePhoto()。

首先需要截图屏幕并获得base64数据。设置opts图片格式type以及质量quantity,调用share.captureToDataURL获取截图数据,并转换成可直接用来保存的数据内容。

const opts = {type: 'jpg', quantity: 0.8};
const data = this.scene.share.captureToDataURL(opts)?.split(',').pop();

图像保存相册的过程分为两个部分:文件写入和添加相册。使用微信接口wx.getFileSystemManager().writeFile(...)将图片文件保存在本地,保存成功之后使用wx.saveImageToPhotosAlbum(...)将图片添加到相册中。

wx.getFileSystemManager().writeFile({
    filePath: filename,
    data: data,
    encoding: 'base64',
    success: () => {
        wx.saveImageToPhotosAlbum({
            filePath: filename,
            success: () => wx.showToast({title: '已保存到相册'}),
            fail: (err) => {
                console.warn(err);
                wx.showToast({icon: 'error', title: '保存到相册失败'});
            },
        });
    },
    fail: (err) => {
        console.warn(err);
        wx.showToast({icon: 'error', title: '保存文件错误'});
    },
});

如何截屏并发送给好友?

ShareSystem提供了截图分享的接口,直接调用即可,需要在opts中设置图片格式type以及质量quantity,然后使用captureToFriends()截图并发送给好友。

const opts = {type: 'jpg', quantity: 0.8};
this.scene.share.captureToFriends(opts);