XMagic.h
は、SDKの初期化、美顔の値の更新、モーションの呼出しなどの機能に使用されます。API | 説明 |
初期化インターフェース | |
初期化インターフェース | |
各美顔エフェクトを設定します | |
後処理のぼかし強度を設定します(すべてのぼかしコンポーネントに機能) | |
renderSizeを設定します | |
リソースを解放するインターフェース | |
データを処理するインターフェース | |
画像を処理します | |
美顔パラメーターの設定情報を取得します | |
ログを登録するインターフェース | |
SDKのイベント監視インターフェース | |
クリア用コールバックを登録するインターフェース | |
現在のGLのコンテキストを取得するインターフェース | |
SDKの一時停止インターフェース | |
SDKの再開インターフェース |
- (instancetype _Nonnull)initWithRenderSize:(CGSize)renderSizeassetsDict:(NSDictionary* _Nullable)assetsDict;
パラメータ | 意味 |
renderSize | レンダリングサイズ |
assetsDict | アセット Dict |
- (instancetype _Nonnull)initWithGlTexture:(unsigned)textureIDwidth:(int)widthheight:(int)heightflipY:(bool)flipYassetsDict:(NSDictionary* _Nullable)assetsDict;
パラメータ | 意味 |
textureID | テクスチャID |
width | レンダリングサイズ |
height | レンダリングサイズ |
flipY | 画像を反転しますか |
assetsDict | アセット Dict |
- (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];
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];
- (void)emitBlurStrengthEvent:(int)strength;
パラメータ | 意味 |
strength | エフェクトの値 |
- (void)setRenderSize:(CGSize)size;
パラメータ | 意味 |
size | レンダリングサイズ |
- (void)deinit;
- (YTProcessOutput* _Nonnull)process:(YTProcessInput * _Nonnull)input;
パラメータ | 意味 |
input | 入力データ |
- (UIImage* _Nullable)processUIImage:(UIImage* _Nonnull)inputImage needReset:(bool)needReset;
パラメータ | 意味 |
inputImage | 入力画像の最大サイズは2160×4096までとすることをお勧めします。このサイズを超えると、画像に対して顔認識がうまく機能できないまたは機能できないことがあり、またOOM問題も起こりやすいため、大きな画像を縮小してからアップロードすることをお勧めします |
needReset | 次の運用シーンでは、needResetにtrueを設定してください。 画像の切替 分割の初回利用 アニメーションの初回利用 メイクの初回利用 |
- (YTBeautyPropertyInfo * _Nullable)getConfigPropertyWithName:(NSString *_Nonnull)propertyName;
パラメータ | 意味 |
propertyName | 設定項目名 |
- (void)registerLoggerListener:(id<YTSDKLogListener> _Nullable)listener withDefaultLevel:(YtSDKLoggerLevel)level;
パラメータ | 意味 |
listener | ログをコールバックするインターフェース |
level | ログの出力レベル。デフォルトではERRORとします |
- (void)registerSDKEventListener:(id<YTSDKEventListener> _Nullable)listener;
パラメータ | 意味 |
listener | イベント監視関連のコールバック。主にAIイベント、Tipsイベント、Assetイベントに分けられています |
- (void)clearListeners;
- (nullable EAGLContext*)getCurrentGlContext;
/// @brief APPを一時停止する場合、SDKの一時停止インターフェースを呼び出します- (void)onPause;
/// @brief APPを再開する場合、SDKの再開インターフェースを呼び出します- (void)onResume;
API | 説明 |
この美顔パラメーターの権限情報を取得します |
/// @param featureId 美顔パラメーターを設定します/// @return 該当する美顔パラメーターの権限付与情報を返します+ (BOOL)isBeautyAuthorized:(NSString * _Nullable)featureId;
API | 説明 |
SDKの内部イベントコールバックインターエース | |
ログ監視関連のコールバック |
@protocol YTSDKEventListener <NSObject>
返却値のタイプ | 名前 |
void | |
void | |
void | |
void |
/// @param event NSString*フォーマットのコールバック- (void)onYTDataEvent:(id _Nonnull)event;
{"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] | 口の特徴点のうち高視認度のものが占める割合 |
/// @param event dictフォーマットのコールバック- (void)onAIEvent:(id _Nonnull)event;
/// @param event dictフォーマットのコールバック- (void)onTipsEvent:(id _Nonnull)event;
/// @param event stringフォーマットのコールバック- (void)onAssetEvent:(id _Nonnull)event;
@protocol YTSDKLogListener <NSObject>
返却値のタイプ | 関数名 |
void | onLog |
/// @param loggerLevel 現在のログレベルを返します/// @param logInfo 現在のログ情報を返します- (void)onLog:(YtSDKLoggerLevel) loggerLevel withInfo:(NSString * _Nonnull) logInfo;
この記事はお役に立ちましたか?