iOS

Tencent Effect SDKのコアインターフェースクラスXMagic.hは、SDKの初期化、美顔の値の更新、モーションの呼出しなどの機能に使用されます。

Publicメンバー関数

API
説明
初期化インターフェース
初期化インターフェース
各美顔エフェクトを設定します
後処理のぼかし強度を設定します(すべてのぼかしコンポーネントに機能)
renderSizeを設定します
リソースを解放するインターフェース
データを処理するインターフェース
画像を処理します
美顔パラメーターの設定情報を取得します
ログを登録するインターフェース
SDKのイベント監視インターフェース
クリア用コールバックを登録するインターフェース
現在のGLのコンテキストを取得するインターフェース
SDKの一時停止インターフェース
SDKの再開インターフェース

initWithRenderSize

初期化インターフェース
- (instancetype _Nonnull)initWithRenderSize:(CGSize)renderSize
assetsDict:(NSDictionary* _Nullable)assetsDict;
パラメータ
パラメータ
意味
renderSize
レンダリングサイズ
assetsDict
アセット Dict

initWithGlTexture

初期化インターフェース
- (instancetype _Nonnull)initWithGlTexture:(unsigned)textureID
width:(int)width
height:(int)height
flipY:(bool)flipY
assetsDict:(NSDictionary* _Nullable)assetsDict;
パラメータ
パラメータ
意味
textureID
テクスチャID
width
レンダリングサイズ
height
レンダリングサイズ
flipY
画像を反転しますか
assetsDict
アセット Dict

configPropertyWithType

美顔の各エフェクトを設定します
- (int)configPropertyWithType:(NSString *_Nonnull)propertyType withName:(NSString *_Nonnull)propertyName withData:(NSString*_Nonnull)propertyValue withExtraInfo:(id _Nullable)extraInfo;
パラメータ
パラメータ
意味
propertyType
エフェクトタイプ
propertyName
エフェクト名
propertyValue
エフェクトの値
extraInfo
リザーブド拡張、オプションナル設定項目dictあり

美顔エフェクトの設定例

美顔:美白エフェクトを設定します
NSString *propertyType = @"beauty"; //美顔のエフェクトタイプを設定します。ここでは美顔を例とします
NSString *propertyName = @"beauty.whiten"; //美顔の名前を設定します。ここでは美白を例とします
NSString *propertyValue = @"60"; //美白のエフェクトの値を設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:nil];
フィルター:ときめきエフェクトを設定します
NSString *propertyType = @"lut"; //美顔のエフェクトタイプを設定します。ここではフィルターを例とします
NSString *propertyName = [@"lut.bundle/" stringByAppendingPathComponent:@"xindong_lf.png"]; //美顔の名前を設定します。ここではときめきを例とします
NSString *propertyValue = @"60"; //フィルターのエフェクトの値を設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:nil];
美ボディ:足長エフェクトを設定します
NSString *propertyType = @"body"; //美顔のエフェクトタイプを設定します。ここでは美ボディを例とします
NSString *propertyName = @"body.legStretch"; //美顔の名前を設定します。ここでは足長を例とします
NSString *propertyValue = @"60"; //足長のエフェクトの値を設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:nil];
モーション:2Dモーションの可愛い落書きエフェクトを設定します
NSString *motion2dResPath = [[NSBundle mainBundle] pathForResource:@"2dMotionRes" ofType:@"bundle"];//ここでは2dMotionResフォルダーの絶対パスを設定します
NSString *propertyType = @"motion"; //美顔のエフェクトタイプを設定します。ここではモーションを例とします
NSString *propertyName = @"video_keaituya"; //美顔の名前を設定します。ここでは2Dアニメーションの可愛い落書きを例とします
NSString *propertyValue = motion2dResPath; //モーションのパスを設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:nil];
メイク:女性アイドルグループ風メイクエフェクトを設定します
NSString *motionMakeupResPath = [[NSBundle mainBundle] pathForResource:@"makeupMotionRes" ofType:@"bundle"];//ここではmakeupMotionResフォルダーの絶対パスを設定します
NSString *propertyType = @"motion"; //美顔のエフェクトタイプを設定します。ここではメイクを例とします
NSString *propertyName = @"video_nvtuanzhuang"; //美顔の名前を設定します。ここでは女性アイドルグループ風メイクを例とします
NSString *propertyValue = motionMakeupResPath; //モーションのパスを設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:nil];
//設定するメイクの値を以下に示します(前述したモーションは1回だけ呼び出せばよいです。以下に設定するメイクの値は複数回呼び出すことができます)
NSString *propertyTypeMakeup = @"custom"; //美顔のエフェクトタイプを設定します。ここではメイクを例とします
NSString *propertyNameMakeup = @"makeup.strength"; //美顔の名前を設定します。ここでは女性アイドルグループ風メイクを例とします
NSString *propertyValueMakeup = @"60"; //メイクのエフェクトの値を設定します
[self.xmagicApi configPropertyWithType:propertyTypeMakeup withName:propertyNameMakeup withData:propertyValueMakeup withExtraInfo:nil];
分割:背景のぼかし(強い効果)を設定します
NSString *motionSegResPath = [[NSBundle mainBundle] pathForResource:@"segmentMotionRes" ofType:@"bundle"];//ここではsegmentMotionResフォルダーの絶対パスを設定します
NSString *propertyType = @"motion"; //美顔のエフェクトタイプを設定します。ここでは分割を例とします
NSString *propertyName = @"video_segmentation_blur_75"; //美顔の名前を設定します。ここでは背景のぼかし‐強を例とします
NSString *propertyValue = motionSegResPath; //モーションのパスを設定します
NSDictionary *dic = @{@"bgName":@"BgSegmentation.bg.png", @"bgType":@0, @"timeOffset": @0},@"icon":@"segmentation.linjian.png"};//リザーブドフィールドを設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:dic];
カスタム背景
NSString *motionSegResPath = [[NSBundle mainBundle] pathForResource:@"segmentMotionRes" ofType:@"bundle"];//ここではsegmentMotionResフォルダーの絶対パスを設定します
NSString *propertyType = @"motion"; //美顔のエフェクトタイプを設定します。ここでは分割を例とします
NSString *propertyName = @"video_empty_segmentation"; //美顔の名前を設定します。ここではカスタム背景を例とします
NSString *propertyValue = motionSegResPath; //モーションのパスを設定します
NSString *imagePath = @"/var/mobile/Containers/Data/Application/06B00BBC-9060-450F-8D3A-F6028D185682/Documents/MediaFile/image.png"; //カスタム背景として使用する画像の絶対パス。カスタム背景としてビデオを選択した場合、ビデオに対して圧縮しトランスコーディングした後の絶対パスを使用します。
int bgType = 0;//カスタム背景のタイプ0は画像、1はビデオを表します
int timeOffset = 0//時間の長さ背景が画像の場合、0とします。背景がビデオの場合、ビデオの長さとします
NSDictionary *dic = @{@"bgName":imagePath, @"bgType":@(bgType), @"timeOffset": @(timeOffset)},@"icon":@"segmentation.linjian.png"};//リザーブドフィールドを設定します
[self.xmagicApi configPropertyWithType:propertyType withName:propertyName withData:propertyValue withExtraInfo:dic];

emitBlurStrengthEvent

後処理のぼかし強度を設定します(すべてのぼかしコンポーネントに機能)
- (void)emitBlurStrengthEvent:(int)strength;
パラメータ
パラメータ
意味
strength
エフェクトの値

setRenderSize

renderSizeを設定します
- (void)setRenderSize:(CGSize)size;
パラメータ
パラメータ
意味
size
レンダリングサイズ

deinit

リソースを解放するインターフェース |
- (void)deinit;

process

データを処理するインターフェース |
- (YTProcessOutput* _Nonnull)process:(YTProcessInput * _Nonnull)input;
パラメータ
パラメータ
意味
input
入力データ

processUIImage

画像を処理します
- (UIImage* _Nullable)processUIImage:(UIImage* _Nonnull)inputImage needReset:(bool)needReset;
パラメータ
パラメータ
意味
inputImage
入力画像の最大サイズは2160×4096までとすることをお勧めします。このサイズを超えると、画像に対して顔認識がうまく機能できないまたは機能できないことがあり、またOOM問題も起こりやすいため、大きな画像を縮小してからアップロードすることをお勧めします
needReset
次の運用シーンでは、needResetにtrueを設定してください。
画像の切替
分割の初回利用
アニメーションの初回利用
メイクの初回利用

getConfigPropertyWithName

美顔パラメーターの設定情報を取得します
- (YTBeautyPropertyInfo * _Nullable)getConfigPropertyWithName:(NSString *_Nonnull)propertyName;
パラメータ
パラメータ
意味
propertyName
設定項目名

registerLoggerListener

ログを登録するインターフェース
- (void)registerLoggerListener:(id<YTSDKLogListener> _Nullable)listener withDefaultLevel:(YtSDKLoggerLevel)level;
パラメータ
パラメータ
意味
listener
ログをコールバックするインターフェース
level
ログの出力レベル。デフォルトではERRORとします

registerSDKEventListener

SDKのイベント監視インターフェース |
- (void)registerSDKEventListener:(id<YTSDKEventListener> _Nullable)listener;
パラメータ
パラメータ
意味
listener
イベント監視関連のコールバック。主にAIイベント、Tipsイベント、Assetイベントに分けられています

clearListeners

クリア用コールバックを登録するインターフェース |
- (void)clearListeners;

getCurrentGlContext

現在のGLのコンテキストを取得するインターフェース
- (nullable EAGLContext*)getCurrentGlContext;

onPause

SDKの一時停止インターフェース
/// @brief APPを一時停止する場合、SDKの一時停止インターフェースを呼び出します
- (void)onPause;

onResume

SDKの再開インターフェース
/// @brief APPを再開する場合、SDKの再開インターフェースを呼び出します
- (void)onResume;

静的関数

API
説明
この美顔パラメーターの権限情報を取得します

isBeautyAuthorized

この美顔パラメーターの権限情報を取得します(美顔と美ボディのみをサポート)
/// @param featureId 美顔パラメーターを設定します
/// @return 該当する美顔パラメーターの権限付与情報を返します
+ (BOOL)isBeautyAuthorized:(NSString * _Nullable)featureId;

コールバック

API
説明
SDKの内部イベントコールバックインターエース
ログ監視関連のコールバック

YTSDKEventListener

SDK内部イベントコールバックインターエース
@protocol YTSDKEventListener <NSObject>

メンバー関数

返却値のタイプ
名前
void
void
void
void

関数説明

onYTDataEvent
YTDataUpdateイベントコールバック
/// @param event NSString*フォーマットのコールバック
- (void)onYTDataEvent:(id _Nonnull)event;
JSON string構造体を返します。最大5人の顔情報を返します:
{
"face_info":[{
"trace_id":5,
"face_256_point":[
180.0,
112.2,
...
],
"face_256_visible":[
0.85,
...
],
"out_of_screen":true,
"left_eye_high_vis_ratio:1.0,
"right_eye_high_vis_ratio":1.0,
"left_eyebrow_high_vis_ratio":1.0,
"right_eyebrow_high_vis_ratio":1.0,
"mouth_high_vis_ratio":1.0
},
...
]
}
フィールドの意味
フィールド
タイプ
値の範囲
説明
trace_id
int
[1,INF)
顔ID。連続してストリームを取得するとき、IDが同じである場合、同じ顔として認識します
face_256_point
float
[0,screenWidth] 或 [0,screenHeight]
計512数字あり、顔の256重要特徴点があり、画面の左上隅は(0,0)です
face_256_visible
float
[0,1]
顔の256重要特徴点の可視度
out_of_screen
bool
true/false
顔が枠を超えていますか
left_eye_high_vis_ratio
float
[0,1]
左目の特徴点のうち高視認度のものが占める割合
right_eye_high_vis_ratio
float
[0,1]
右目の特徴点のうち高視認度のものが占める割合
left_eyebrow_high_vis_ratio
float
[0,1]
左眉の特徴点のうち高視認度のものが占める割合
right_eyebrow_high_vis_ratio
float
[0,1]
右眉の特徴点のうち高視認度のものが占める割合
mouth_high_vis_ratio
float
[0,1]
口の特徴点のうち高視認度のものが占める割合
onAIEvent
AIイベントコールバック
/// @param event dictフォーマットのコールバック
- (void)onAIEvent:(id _Nonnull)event;
onTipsEvent
ヒントイベントコールバック
/// @param event dictフォーマットのコールバック
- (void)onTipsEvent:(id _Nonnull)event;
onAssetEvent
アセットイベントコールバック
/// @param event stringフォーマットのコールバック
- (void)onAssetEvent:(id _Nonnull)event;

YTSDKLogListener

ログ監視関連のコールバック
@protocol YTSDKLogListener <NSObject>

メンバー関数

返却値のタイプ
関数名
void
onLog

関数説明

onLog
ログ監視関連のコールバック
/// @param loggerLevel 現在のログレベルを返します
/// @param logInfo 現在のログ情報を返します
- (void)onLog:(YtSDKLoggerLevel) loggerLevel withInfo:(NSString * _Nonnull) logInfo;