iOS

Dynamically downloading resources

To reduce the SDK package size, you can dynamically download the necessary module resources and animated effect resources (MotionRes, not available in some basic editions of the SDK) from a URL and, after download, pass the path of the resources to the SDK.

  1. Upload a ZIP file of the effect resources to the cloud and generate a URL such as https://server address/LightCore.bundle.zip.

  2. In your project, download the file from the URL and decompress it to the sandbox (for example: Documents/Xmagic).

  3. When initializing the SDK, pass in the path of the sandbox to root_path.

    NSDictionary *assetsDict = @{@"core_name":@"LightCore.bundle",
                              @"root_path":_filePath ,//_filePath is the folder to which effect resources are downloaded: Documents/Xmagic,
                              @"tnn_"
                              @"beauty_config":beautyConfigJson
    };
    // Init beauty kit                                 @"root_path":Documents/Xmagic,
    self.beautyKit = [[XMagic alloc] initWithRenderSize:_inputSize assetsDict:assetsDict];
    
  4. Set the icons for different effects and get the images from the downloaded files.

    NSMutableArray *arrayModels = [NSMutableArray array];
    for (NSDictionary* dict in motionArray) {
    BeautyCellModel* model = [BeautyCellModel beautyWithDict:dict];
    // Load default mainbundle path of motionres
    if ([model.title isEqualToString:NSLocalizedString(@"item_none_label",nil)]) {
     model.icon = [NSString stringWithFormat:@"%@/%@.png", [[NSBundle mainBundle] bundlePath], model.key];
     [arrayModels addObject:model];
    } else {
     if(_useNetResource && _filePath != nil){ //When using resources from the internet
         NSString *DirPath = [_filePath stringByAppendingPathComponent:@"2dMotionRes.bundle/"]; //Get the absolute path of effect resources
         model.icon = [NSString stringWithFormat:@"%@/%@/template.png", DirPath, model.key];
     }else{
         model.icon = [NSString stringWithFormat:@"%@/%@/template.png", [[NSBundle mainBundle] pathForResource:@"2dMotionRes" ofType:@"bundle"], model.key];
     }
     if ([fileManager fileExistsAtPath:model.icon]) {
         [arrayModels addObject:model];
     }
    }
    }
    
  5. Set parameters for effects (For details, see API Documentation).

    /// @brief Configure effects
    /// @param propertyType: The effect type, which is a string. Valid values: beauty, lut, motion.
    /// @param propertyName: The effect name.
    /// @param propertyValue: The effect value.
    /// @param extraInfo: A reserved parameter, which can be used for dictionary configuration.
    /// @return: If 0 is returned, the configuration is successful. If other values are returned, the configuration has failed.
    /// @note: Notes
    /**
    | Effect Type | Effect Name | Effect Value| Description  | Remarks |
    | :---- | :---- |:---- | :---- | :---- |
    |  beauty  | Name of beautification effect | Effect strength |Beautification effect API | - |
    |  lut  | Filter path + Filter name | Filter strength | Filter API | - |
    |  motion  | Name of animated effect | Path of animated effect | Animated effect API| Make sure the path you pass in is writable. For ZIP files, you must manually unzip them first if you want to build the resources into your app.   |

**/

  • (int)configPropertyWithType:(NSString *_Nonnull)propertyType withName:(NSString _Nonnull)propertyName withData:(NSString_Nonnull)propertyValue withExtraInfo:(id _Nullable)extraInfo;

Examples

Configuring a beautification effect

No extra configuration is needed for beautification or body retouch effects. The SDK will automatically use the resource files downloaded. Below is a request sample for the skin brightening effect.

[self.beautyKitRef configPropertyWithType:@"beauty" withName:@"beauty.whiten" withData:@"30" withExtraInfo:nil];

Request parameters:

ParameterValue
propertyTypebeauty
propertyNamebeauty.whiten
propertyValue30
extraInfonil

Configuring filter effects

For filter effects, you need to configure key first. You can use the SDK’s built-in effect resources or resources downloaded from the internet.

NSString *key = [_model.lutIDs[index] path];
if (key != nil) {
   key = [@"lut.bundle/" stringByAppendingPathComponent:key];//The relative path of the filter effect image
}
if(_useNetResource && _filePath != nil){ //If a resource downloaded from the internet is used
   key = [_filePath stringByAppendingPathComponent:key];//Get the absolute path of the image
}
[self.beautyKitRef configPropertyWithType:@"lut" withName:key withData:[NSString 
stringWithFormat:@"%f",value] withExtraInfo:nil];

Configuring the brightening filter

Request parameters:

ParameterValue (Local Resource)Value (Internet Resource)Remarks
propertyTypelutlut-
propertyNamelut.bundle/n_baixi.png/var/mobile/Containers/Data/Application/25C7D01A-73F6-4F1B-AEB6-5EE03A221D18/Documents/Xmagic/lut.bundle/n_baixi.pngThe file path.
propertyValue60.00000060.000000-
extraInfonullnull-

Configuring animated, makeup, and keying effects

For animated, makeup, and keying effects, you need to configure propertyValue first. You can use the SDK’s built-in effect resources or resources downloaded from the internet.

NSString *key = [_model.motionIDs[index] key];
       NSString *path = [_model.motionIDs[index] path];
       NSString *motionRootPath = path==nil?[[NSBundle mainBundle] pathForResource:@"MotionRes" ofType:@"bundle"]:path;
       if(_useNetResource && _filePath != nil){ //If a resource downloaded from the internet is used
           motionRootPath = [_filePath stringByAppendingPathComponent:@"2dMotionRes.bundle"];//Get the absolute path of `2dMotionRes`
       }
       [self.beautyKitRef configPropertyWithType:@"motion" withName:key withData:motionRootPath withExtraInfo:nil];

Configuring the animated 2D cute effect

Request parameters:

ParameterValue (Local Resource)Value (Internet Resource)Remarks
propertyTypemotionmotion-
propertyNamevideo_keaituyavideo_keaituya-
propertyValue/private/var/containers/Bundle/Application/FD2D7912-E58E-4584-B7E4-8715B8D2338F/BeautyDemo.app/2dMotionRes.bundle/var/mobile/Containers/Data/Application/25C7D01A-73F6-4F1B-AEB6-5EE03A221D18/Documents/Xmagic/2dMotionRes.bundleThe file path.
extraInfonilnil-