美颜特效渲染
基于imageData对象渲染
/**
 * 图片渲染 
 * 返回ImageData对象
 * @param imageData 图片ImageData
 * @param imageWidth 宽
 * @param imageHeight 高
 * @param renderCallback 图片渲染回调
 */
render = function(imageData, imageWidth, imageHeight, renderCallback);开启摄像头并美颜
 /**
 * 启用摄像头美颜
 * 需要Chrome 94+版本浏览器支持
 * @param constraints 摄像头参数
 * @returns 美颜视频流
 */
openCameraAndRender(constraints?: MediaStreamConstraints): Promise<MediaStream>直接渲染到Canvas
 /**
 * 美颜渲染媒体对象到RenderCanvas
 * RenderCanvas为初始化时指定的Canvas
 * @param mediaObject 媒体对象 TexImageSourceWebCodecs(ImageData | ImageBitmap | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | VideoFrame | OffscreenCanvas) | Uint8Array
 */
renderMediaObjectToRenderCanvas(mediaObject: TexImageSourceWebCodecs | Uint8Array, width?: number, height?: number): void基于媒体对象渲染
/**
 * 媒体对象渲染
 * 返回渲染后ImageData对象
 * @param mediaElement 媒体对象 TexImageSourceWebCodecs(ImageData | ImageBitmap | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | VideoFrame | OffscreenCanvas) | Uint8Array
 * @param width 
 * @param height 
 * @param renderCallback 
 */
renderWithMediaObject(mediaObject: TexImageSourceWebCodecs | Uint8Array, width: number, height: number, renderCallback: (outImageData: Uint8Array, imageWidth: number, imageHeight: number) => void): void基于纹理渲染
/**
 * 基于纹理渲染
 * 输入媒体对象返回纹理对象
 * @param mediaElement 媒体对象 imageElement、videoElement、canvasElement、videoframe、imagebitmap
 * @param width 媒体对像宽度
 * @param height 媒体对像高度
 * @returns 
 */
renderMediaObjectToTexture = function(mediaElement, width, height);纹理渲染
**
 * 基于纹理ID渲染
 * 输入纹理ID 返回纹理ID
 * @param inTextureId 输入纹理ID
 * @param width 媒体对像宽度
 * @param height 媒体对像高度
 * @returns 
 */
renderTextureId = function(inTextureId, width, height);基于流渲染
/**
 * 视频流渲染 返回渲染视频流
 * 需要Chrome 94+版本浏览器支持
 * @param inputMediaStream 输入媒体流
 */
renderMediaStream(inputMediaStream: MediaStream): MediaStream 
renderMediaStreamTrack(videoMediaStreamTrack: MediaStreamVideoTrack, width?: number, height?: number): MediaStreamVideoTrack
getTransformStream(): TransformStream;//返回美颜转换流处理器美颜引擎注销
**
 * 美颜引擎注销
 */
engineDestory = function();Animoji表情
Animoji初始化
/**
 * Animoji初始化
 * @param animojiUrl animoji资源地址
 * @param width 宽
 * @param height 高
 * @param scale 放大尺寸
 * @returns 
 */
 animojiInit = function (animojiUrl: string, width: number, height: number, scale: number)Animoji 图片渲染
/**
 * Animoji 图片渲染
 * @param imageData 图片imageData
 * @param imageWidth 宽
 * @param imageHeight 高
 * @param renderCallBack 渲染回调 
 */
 animojiRender = function (imageData: Uint8Array, imageWidth: number, imageHeight: number, renderCallBack: any)媒体对象Animoji渲染
/**
 * Animoji渲染
 * @param mediaSource 媒体对象 TexImageSourceWebCodecs(ImageData | ImageBitmap | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | VideoFrame | OffscreenCanvas) | Uint8Array
 * @param imageWidth 宽
 * @param imageHeight 高
 * @param renderCallBack 渲染回调
 */
animojiRenderWithMediaObject(mediaObject: TexImageSourceWebCodecs | Uint8Array, width: number, height: number, renderCallback: (outImageData: Uint8Array, imageWidth: number, imageHeight: number) => void): void 媒体对象Animoji渲染纹理输出
/**
 * Animoji渲染
 * @param mediaObject 媒体对象 TexImageSourceWebCodecs(ImageData | ImageBitmap | HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | VideoFrame | OffscreenCanvas) | Uint8Array
 * @param width 宽
 * @param height 高
 * @returns 渲染后纹理对象
 */
animojiRenderMediaObjectToTexture(mediaObject: TexImageSourceWebCodecs | Uint8Array, width?: number, height?: number): WebGLTexture | null基于纹理IdAnimoji渲染
/**
 * Animoji渲染
 * @param inTextureId 纹理ID
 * @param width 宽
 * @param height 高
 * @returns 渲染后纹理对象
 */
animojiRenderTextureId(inTextureId: number, width: number, height: number): WebGLTexture | nullAnimoji纹理渲染
/**
 * Animoji纹理渲染
 * 返回渲染后纹理
 * @param imageSource 媒体对象 image、video、canvas、videoframe、imagebitmap
 * @param imageWidth 宽
 * @param imageHeight 高
 */
animojirenderMediaObjectToTexture = function (mediaSource: any, imageWidth: number, imageHeight: number)Animoji大小调整
/**
 * Animoji大小调整
 * @param scale 推荐:0.8~1.5
 */
animojiResize = function (scale: number)设置Animoji背景模式
/**
* 设置Animoji背景模式
* @param mode 背景模式:0:无,1:摄像头背景 2:指定背景图片
* @param backgroundImgUrl 背景图片,如果mode=2时需要指定
*/
setAnimojiBackgroundWithMode = function (mode, backgroundImgUrl)Animoji引擎注销
 /**
 * Animoji引擎注销
 */
animojiDestroy = function ()背景抠图
启用抠图模块需要增加以下依赖:
$ npm add @tensorflow/tfjs
$ npm add @tensorflow/tfjs-backend-webgl
$ npm add @tensorflow/tfjs-backend-webgpu绿幕/蓝幕抠图
/**
 * 绿幕/蓝幕抠图
 * 开启此抠图功能,纯色背景抠图(setPureColorToBackground)会关闭。
 * @param isBlue 绿幕:false,蓝幕:true
 * @param backgroundImgUrl 背景图片Url
	*/
setGreenScreenWithUrl = function (isBlue, backgroundImgUrl)实景抠图
/**
 * 实景AI抠图
 * @param backgroundImgUrl 背景图片Url
 */
setSegmentBackgroundUrl = function (backgroundImgUrl)纯色抠图
/**
 * 纯色背景抠图。
 * @param backgroundImgUrl 背景图片Url
 */
setPureColorBackgroundUrl = function (backgroundImgUrl)参数配置
配置美颜类型
 /**
 * 配置美颜类型
 * @param type kQueenBeautyType枚举
 * @param enable 是否启用
 */
 setQueenBeautyType = function (type: number, enable: boolean)配置美颜参数值
/**
 * 参数类型
 * @param param kQueenBeautyParams检举
 * @param value 参数值
 */
setQueenBeautyParams = function (param: number, value: number);配置LUT滤镜
 /**
 * 使用内置Lut滤镜
 * @param lutType Assets.kResLut枚举
 * @returns 
 */
setLutByType(lutType: Assets.kResLut): Promise<void>
 
/**
 * 设置Lut滤镜
 * @param imageUrl 所要设置的滤镜图片Url
 * @returns 
 */
setLutImageUrl(imageUrl: string): Promise<void>设置美型类型
/**
* @brief 设置美型类型,设置前需要将kQueenBeautyType.FaceShape打开
* @param faceShapeType 需要设置美型的类型,参考QueenBeautyFaceShapeType
* @param value 需要设置的值
*/
setFaceShape = function (faceShapeType: number, value: number)美妆API
使用内置资源进行美妆。
/**
 * 设置美妆眉毛
 * @param eyeBrowType 眉毛类型,kResMakeupEyeBrow枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupEyeBrow(eyeBrowType: Assets.kResMakeupEyeBrow, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆睫毛
 * @param eyelashType 睫毛类型,kResMakeupEyeLash枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMackupEyeLash(eyelashType: Assets.kResMakeupEyeLash, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆眼影
 * @param eyeShadowType 眼影类型,kResMakeupEyeShadow
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupEyeShadow(eyeShadowType: Assets.kResMakeupEyeShadow, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆眼线
 * @param eyeLinerType 眼线类型,kResMakeupEyeLiner检举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupEyeLiner(eyeLinerType: Assets.kResMakeupEyeLiner, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆美瞳
 * @param eyeballType 美瞳类型,kResMakeupEyeBall枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupEyeBall(eyeballType: Assets.kResMakeupEyeBall, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆口红
 * @param mouthType 口红类型,kResMakeupMouth枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupMouth(mouthType: Assets.kResMakeupMouth, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆整妆
 * @param wholeType 美妆整妆类型 Assets.kResMakeupWhole枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举
 * @returns 
 */
setMakeupWhole(wholeType: Assets.kResMakeupWhole, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆腮红
 * @param blushType 腮红类型,kResMakeupBlush检举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举 
 * @returns 
 */
setMakeupBlush(blushType: Assets.kResMakeupBlush, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>
/**
 * 设置美妆高光
 * @param highlightType 高光类型kResMakeupHighLight枚举
 * @alpha 妆容透明度
 * @param blend 混合类型,kQueenBeautyBlend枚举 
 * @returns 
 */
setMakeupHighlight(highlightType: Assets.kResMakeupHighLight, alpha: number, blend: kQueenBeautyBlend = kQueenBeautyBlend.LabMix): Promise<void>设置美妆类型和图片素材路径
/**
* @brief 设置美妆类型和图片素材路径,设置美妆需要将kQueenBeautyType.Makeup 打开
* @param makeupType 美妆类型
* @param imageUrl 美妆素材地址,一般为zip包
* @param blend 混合类型
*/
setMakeupWithUrl = function (makeupType: number, imageUrl: string, blend: number)设置美妆类型和图片素材路径
/**
* @brief 设置美妆类型和图片素材路径,设置美妆需要将kQueenBeautyType.Makeup 打开
* @param makeupType 美妆类型
* @param packageUrl 资源压缩包url
* @param imageName 包内图片名称
* @param blend 混合类型
*/
setMakeupWithPackage = function (makeupType: number, packageUrl: string, imageName: string, blend: number);
/**
* @brief 设置美妆类型和图片素材路径,设置美妆需要将kQueenBeautyType.Makeup 打开
* @param makeupType 美妆类型
* @param imagePaths 美妆素材地址集合
* @param blend 混合类型
*/
setMakeupWithType = function (makeupType: number, imagePaths: string, blend: number)
/**
* @brief 设置美妆类型和图片素材路径
* @param makeupType 美妆类型
* @param imagePaths 美妆素材地址集合(多个资源则,号分开)
* @param blend 混合类型
* @param fps 对应的帧率
*/
setMakeupWithTypeFps = function (makeupType: number, imagePaths: string, blend: number, fps: number)设置美妆透明度
 /**
* @brief 设置女性美妆透明度,可指定性别
* @param makeupType 美妆类型
* @param alpha 妆容透明度
*/
setMakeupFemaleAlpha = function (makeupType: number, alpha: number)
/**
* @brief 设置男性美妆透明度,可指定性别
* @param makeupType 美妆类型
* @param alpha 妆容透明度
*/
setMakeupMaleAlpha = function (makeupType: number, alpha: number)
/**
* @brief 设置美妆透明度,可指定性别
* @param makeupType 美妆类型
* @param isFeMale 是否是女性,女性:true,男性:false,(男性为接口预留,这里均传女性即true即可)
* @param alpha 妆容透明度
*/
setMakeupAlphaWithType = function (makeupType: number, isFeMale: boolean, alpha: number)设置美妆类型的混合类型
 /**
 * @brief 设置美妆类型的混合类型
 * @param makeupType 美妆类型
 * @param blend 混合类型
 */
 setMakeupBlendWithType = function (makeupType: number, blend: number)清除所有美妆
 /**
 * @brief 清除所有美妆
 */
 resetAllMakeupType = function ()贴纸API
增加贴纸
/**
* @brief 增加贴纸/贴图/实景抠图需要替换的背景,素材统一接口,支持GLTF,TAOPAI,MEDIAAI 类型
* @param materialZipUrl 要添加的素材的Url
*/
addMaterialWithUrl = function (materialZipUrl: string)移除贴纸
 /**
 * @brief 删除贴纸/贴图/实景抠图需要替换的背景
 * @param materialZipUrl 要删除的素材的URL
 */
removeMaterialWithUrl = function (materialZipUrl: string)AR隔空写字
装载AR隔空写字模块
 /**
 * 初始化AR写字模块
 * @returns 
 */
initArWriteResource(): Promise<boolean>开启Ar写字
 /**
 * 开启Ar写字
 * @param enable true: 开启
 * @param mode 1: 写字, 2: 画画。
 */
setArWriting(enable: boolean, mode: number): void清除AR写字痕迹
/**
 * 清除AR写字痕迹
 */
cleanScreenArWriting(): void人脸识别功能调试
展示人脸识别点位
 /**
 * @brief 展示人脸识别点位
 * @param show 是否展示
 */
 showFaceDetectPoint = function (show: boolean)展示人脸区域三角剖分线
/**
 * @brief 展示人脸区域三角剖分线
 * @param show 是否展示
 */
 showMakeupLine = function (show: boolean) 资源载入
参数配置中所有的URL均需要转成PATH才能正常使用,需要通过下面的API将URL资源文件载入到Queen引擎中生成PATH。
通过URL载入资源
 /** 
 * 载入URL资源到引擎
 * @param url URL链接
 * @param needUnZip 是否需要解压
 * @returns 
 */
loadResourceFileWithUrl = function (url: string, needUnZip: boolean)
 /** 
 * 载入URL资源到引擎
 * @param url URL链接
 * @param saveFileName 保存文件名
 * @param needUnZip 是否需要解压
 * @returns 
 */
loadResourceFileWithUrlSaveAs = function (url: string, saveFileName:string, needUnZip: boolean) {
 通过buffer写入
/**
 * 通过buffer写入资源
 * @param buffer arrayBuffer数据
 * @param saveFileName 保存文件名
 * @param needUnZip 是否需要解压
 * @param loadCallback 成功回调
 * @returns 
 */
loadResourceFileWithData = function(buffer: ArrayBuffer, saveFileName: string, needUnZip: boolean);文件检查
/**
* 验证资源文件是否存在
* @param fullFileName 完整的路径文件名
* @returns 
*/
checkResourceFile(fullFileName: string)该文章对您有帮助吗?