日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

API說明

美顏特效渲染

基于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)