图片&照片美颜

最近更新时间:2024-05-10 18:19:51

我的收藏
本文档指导您在 uniapp 项目中接入 webar 图片美颜,原生微信项目请参见 微信小程序端接入

准备工作

1. 微信公众平台 注册并登录小程序。
2. 微信公众平台 添加小程序插件:视立方 WEBAR
3. 符合接入要求,申请插件并申请试用视立方 WEBAR,详见 腾讯云视立方控制台

接入配置

1. 使用组件前需在 uniapp 工程的manifest.json中声明插件:
{
"mp-weixin": {
"plugins": {
"webarPlugin": {
"version": "1.0.4",
"provider": "wx04445cff065100ed"
}
}
}
}
2. 在 uniapp 项目根目录安装 npm 包: tencentcloud-webar-wx
npm install tencentcloud-webar-wx

使用 WebArImage 组件接入美颜

设置美颜、滤镜、美妆、贴纸

WebArImage 基于 webgl 相关能力,提供图片和照片美颜特效处理能力,支持导出和预览。
1. 在引入组件的页面 的.vue文件中使用组件。
WebArImage 会通过 created 事件返回 WebarContext,详情请参见 API 文档
<template>
<view>
<WebArImage
:licenseKey="licenseKey"
:appId="appId"
:authFunc="authFunc"
:plugin3d="plugin3d"
url="https://webar-static.tencent-cloud.com/assets/image2.jpg"
@created="onArCreated"
my-style="width: 100vw; height: 100vh"
class="webar"
/>
</view>
</template>

<script>
import WebArImage from "tencentcloud-webar-wx/WebArImage/WebArImage.vue";
export default {
components: {
WebArImage,
},
methods: {
// 此事件会返回 webarContext 实例,通过该实例调用 webar sdk的美颜方法。
onArCreated(sdk) {
const webarContext = sdk.detail || sdk; // uniapp 下事件有可能有detail也有可能没有
this.webarContext = webarContext;
// 设置美颜
webarContext.setBeautify({
whiten: 0.5,
dermabrasion: 0.6,
});
// 设置滤镜
webarContext.setFilter(id, 1);
// 设置美妆、特效、贴纸
webarContext.setEffect([{ id, intensity: 1 }]);
},
},
};
</script>

保存美化后照片

const path = await this.webarContext.download(false); // 保存图片,参数为是否存储到相册,返回值为图片路径

组件美颜特效属性说明

属性
类型
默认值
必填
说明
licenseKey
string
""
腾讯云视立方 licenseKey
appId
string
""
腾讯云 appid
authFunc
async function
null
需返回 signature,timestamp,详见 WEBAR 鉴权方法,传递时请不要包含在对象中
plugin3d
function
null
3d 特效插件,开启 3d 贴纸时需传入
beautify
Object
null
初始美颜参数,取值范围:0 - 1,可用: whiten、dermabrasion、lift、shave、eye、chin
url
string
null
图片地址,可以是http地址及微信文件系统路径。
my-style
string
''
样式属性,同 style,vue3 项目需使用
created
event
null
腾讯特效 SDK 初始化完成事件
ready
event
null
腾讯特效 SDK 加载完成事件
error
event
null
腾讯特效 SDK 错误事件

webarContext 实例方法

获取可用滤镜列表、美妆列表、贴纸列表及设置美颜、滤镜、美妆、贴纸等方法,详见 API 文档

鉴权方法 authFunc 生成方式

const config = {
appid: '您的腾讯云APPID',
token: '您的Token',
}
const authFunc = async function() {
const timestamp = Math.round(new Date().getTime() / 1000);
const signature = sha256(timestamp + config.token + config.appid + timestamp).toUpperCase();
return { signature, timestamp };
此方法仅测试时使用,为防止 token 泄露,发布时请使用服务端加密,详见 腾讯云-腾讯特效 SDK 官网文档

示例代码

详情请参见:示例项目