iOS
Tencent Effect SDKのコアインターフェースクラス
XMagic.h
は、SDKの初期化、美顔の値の更新、モーションの呼出しなどの機能に使用されます。Publicメンバー関数
API | 説明 |
初期化インターフェース | |
初期化インターフェース | |
各美顔エフェクトを設定します | |
後処理のぼかし強度を設定します(すべてのぼかしコンポーネントに機能) | |
renderSizeを設定します | |
リソースを解放するインターフェース | |
データを処理するインターフェース | |
画像を処理します | |
美顔パラメーターの設定情報を取得します | |
ログを登録するインターフェース | |
SDKのイベント監視インターフェース | |
クリア用コールバックを登録するインターフェース | |
現在のGLのコンテキストを取得するインターフェース | |
SDKの一時停止インターフェース | |
SDKの再開インターフェース |
initWithRenderSize
初期化インターフェース
- (instancetype _Nonnull)initWithRenderSize:(CGSize)renderSizeassetsDict:(NSDictionary* _Nullable)assetsDict;
パラメータ
パラメータ | 意味 |
renderSize | レンダリングサイズ |
assetsDict | アセット Dict |
initWithGlTexture
初期化インターフェース
- (instancetype _Nonnull)initWithGlTexture:(unsigned)textureIDwidth:(int)widthheight:(int)heightflipY:(bool)flipYassetsDict:(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;