美顏特效渲染
基于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 | null
Animoji紋理渲染
/**
* 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)
文檔內容是否對您有幫助?