tencent cloud

腾讯特效 SDK

动态与公告
产品动态
关于腾讯特效 SDK V3.5 版本更新公告
关于腾讯特效 SDK V3.0 版本相关接口及素材变更公告
产品简介
产品概述
产品功能
基本概念
产品优势
应用场景
购买指南
价格总览
购买流程
欠费退费说明
新手指引
Demo 体验
免费测试
License 指引
移动端 License 新增与续期
PC 端 License 新增与续期
Web端 License 新增与续期
常见问题
SDK 下载
功能说明
SDK 下载
版本历史
SDK 集成指引(无 UI)
通用集成腾讯特效
原子能力集成指引
SDK 集成指引(含 UI)
通用集成腾讯特效
直播 SDK 集成腾讯特效
TRTC SDK 集成腾讯特效
短视频 SDK 集成腾讯特效
Avatar 虚拟人集成指引
API 文档
iOS
Android
Flutter
Web
功能实践
SDK 包瘦身
SDK 集成问题排查
性能调优
效果调优
素材使用
美颜参数说明
美颜场景推荐参数
短视频企业版迁移指引
第三方推流接入美颜(Flutter)
小程序美颜特效实践
素材制作工具使用
Web 美颜特效
产品概述
快速上手
SDK 接入
API 文档
控制台指南
Demo 体验
内置素材总览
实践教程
常见问题
常见问题
通用类相关
技术类相关
License 相关
旧版文档
美颜场景推荐参数
美颜参数表
一分钟集成 TRTC
一分钟集成直播
TE SDK 政策
隐私协议
数据处理和安全协议
联系我们

小程序端接入

PDF
聚焦模式
字号
最后更新时间: 2023-04-21 15:35:52
小程序端接入需要自备小程序,详细请参见 微信小程序文档

接入小程序项目

步骤1:配置域名白名单

SDK 内部会请求后台进行鉴权和资源加载,需要在小程序后台配置域名白名单。
1. 进入 小程序后台,进入 开发 > 开发管理 > 开发设置 > 服务器域名
2. 单击修改,配置以下域名并保存。
请求域名:
https://webar.qcloud.com;
https://webar-static.tencent-cloud.com;
https://aegis.qq.com;
以及上述签名接口(get-ar-sign)的地址
downloadFile 域名:
https://webar-static.tencent-cloud.com

步骤2:安装并构建 npm

1. 安装:
npm install tencentcloud-webar
2. 单击开发者工具菜单 > 工具 > 构建 npm
3. 在 app.json 中配置 workers 路径:
"workers": "miniprogram_npm/tencentcloud-webar/worker"

步骤3:引入文件

// 0.3.0之前版本引用方式(1个文件)
// import "../../miniprogram_npm/tencentcloud-webar/lib.js";
// 0.3.0及之后版本引用方式(2个文件 + 按需初始化3d模块)
import '../../miniprogram_npm/tencentcloud-webar/lib.js';
import '../../miniprogram_npm/tencentcloud-webar/core.js';
// 按需初始化3d插件,如果不需要3d则可以不引用
import '../../miniprogram_npm/tencentcloud-webar/lib-3d.js';
import { plugin3d } from '../../miniprogram_npm/tencentcloud-webar/plugin-3d'
// 导入 ArSdk
import { ArSdk } from "../../miniprogram_npm/tencentcloud-webar/index.js";
注意
小程序有单文件不超过 500kb 的限制,因此 SDK 分为多个 js 文件提供。
0.3.0版本之后,对 SDK 进行了进一步的拆分,新增3D支持,针对3D模块提供按需加载方式,导入前请确认当前使用的 SDK 版本信息,选择对应的导入方式。

步骤4:初始化实例

// wxml
//打开相机
<camera
device-position="{{'front'}}"
frame-size="large" flash="off" resolution="medium"
style="width: 750rpx; height: 134rpx;position:absolute;top:-9999px;"
/>
//sdk 将处理完的画面实时输出到此 canvas 上
<canvas
type="webgl"
canvas-id="main-canvas"
id="main-canvas"
style="width: 750rpx; height: 1334rpx;">
</canvas>
//拍照将 ImageData 对象绘制到此 canvas 上
<canvas
type="2d"
canvas-id="photo-canvas"
id="photo-canvas"
style="position:absolute;width:720px;height:1280px;top:-9999px;left:-9999px;">
</canvas>
// js
Component({
methods: {
async getCanvasNode(id) {
return new Promise((resolve) => {
this.createSelectorQuery()
.select(`#${id}`)
.node()
.exec((res) => {
const canvasNode = res[0].node;
resolve(canvasNode);
});
});
},

// 初始化相机类型
async initSdkCamera() {
// 获取在屏的 canvas,sdk 会将处理完的画面实时输出到 canvas 上
const outputCanvas = await this.getCanvasNode("main-canvas");
const sdk = new ArSdk({
camera: {
width:720,
height:1280,
},
output: outputCanvas,
loading: {
enable: false,
},
auth: {
licenseKey: LICENSE_KEY,
appId: APP_ID,
authFunc: authFunc
},
plugin3d: plugin3d // 0.3.0之后版本写法,按需初始化3d模块,如不需要3d模块,可以省略此参数。
});
this.sdk = sdk
sdk.setBeautify({
whiten: 0.2
});
sdk.on('created', () => {
// 可以在回调中处理业务逻辑,详见[参数与方法]()
})
}
}
})
注意
小程序初始化 SDK 前须在控制台配置小程序 APPID。
由于小程序的特性与 Web 不同,因此小程序支持的 input 参数目前只有 string 类型的图片链接。
相机配置与 Web 相同,input 参数不传,直接设置 camera 参数,前提是页面中必须插入 camera 标签。
小程序不支持 getOutput,需要自行传入一个在屏的 WEBGL canvas,SDK 直接输出到此 canvas。

拍照与录像

小程序端支持拍照和录像功能。
拍照
录像
SDK 会返回包含宽高和 buffer 数据的对象,用户可以通过自己页面内的 2d canvas 绘制此数据并导出为图片文件。
Component({
...
async takePhoto() {
const {uint8ArrayData, width, height} = this.sdk.takePhoto(); // takePhoto 方法返回当前画面的 buffer 数据
const photoCanvasNode = await this.getCanvasNode('photo-canvas');
photoCanvasNode.width = parseInt(width);
photoCanvasNode.height = parseInt(height);
const ctx = photoCanvasNode.getContext('2d');
// 用 sdk 返回的数据创建 ImageData 对象
const imageData = photoCanvasNode.createImageData(uint8ArrayData, width, height);
// 将 ImageData 对象绘制到 canvas 上
ctx.putImageData(imageData,0,0,0,0,width,height);
// 将 canvas 保存为本地图片
wx.canvasToTempFilePath({
canvas: photoCanvasNode,
x: 0,
y: 0,
width: width,
height: height,
destWidth: width,
destHeight: height,
success: (res) => {
// 保存照片到本地
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath
});
}
})
}
})
注意
当小程序切换后台或检测到手机锁屏时,需要调用 stopRecord 停止录像,否则可能出错。
Component({
methods: {
// 开始录像
startRecord() {
this.sdk.startRecord()
}
// 结束录像
async stopRecord() {
const res = await this.sdk.stopRecord();
// 保存录像到本地
wx.saveVideoToPhotosAlbum({
filePath: res.tempFilePath
})
}
}
})


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈