SampleBase
文件对自己的项目进行相关环境配置,详见 TuSDK-for-iOS-demo 。EditMultipleComponentSample
中的代码进行照片美化组件的调用。不要更改组件的代码顺序
。#import <TuSDKGeeV1/TuSDKGeeV1.h>
。 // 使用默认主题包的组件需要在组件启动前提前选择主题包的`style`,避免默认主题包组件 UI 显示异常。
// [TuSDK shared].style = lsqSdkUIDefault;
/**
* 照片美化组件范例
*/
@interface SimpleEditMultipleComponent ()
{
// ***** 这里很重要 *****
// 照片美化组件
TuSDKCPPhotoEditMultipleComponent *_photoEditMultipleComponent;
}
在需要使用组件的地方调用组件的启动方法
如果是直接在点击事件中启动组件,组件启动方法中传入的控制器的参数要写 self
。
_photoEditMultipleComponent =
[TuSDKGeeV1 photoEditMultipleWithController:controller
callbackBlock:^(TuSDKResult *result, NSError *error, UIViewController *controller)
{
// 获取图片失败
if (error) {
lsqLError(@"editMultiple error: %@", error.userInfo);
return;
}
[result logInfo];
//
// 可在此添加自定义方法,在编辑完成时进行页面跳转操,例如 :
// [controller presentViewController:[[UIViewController alloc] init] animated:YES completion:nil];
// 图片处理结果 TuSDKResult *result 具有三种属性,分别是 :
// result.image 是 UIImage 类型
// result.imagePath 是 NSString 类型
// result.imageAsset 是 TuSDKTSAssetInterface 类型
// 下面以 result.image 举例如何将图片编辑结果持有并进行其他操作
// 可在此添加自定义方法,将 result 结果传出,例如 : [self openEditorWithImage:result.image];
// 并在外部使用方法接收 result 结果,例如 : -(void)openEditorWithImage:(UIImage *)image;
// 用户也可以在 result 结果的外部接受的方法中实现页面的跳转操作,用户可根据自身需求使用。
// 用户在获取到 result.image 结果并跳转到其他页面进行操作的时候可能会出现无法持有对象的情况
// 此时用户可以将 result.image 对象转换成 NSData 类型的对象,然后再进行操作,例如 :
// NSData *imageData = UIImageJPEGRepresentation(result.image, 1.0);
// ViewController *viewController = [[ViewController alloc]init];
// [self.controller pushViewController:viewController animated:YES];
// viewController.currentImage = [UIImage imageWithData:imageData];
// 获取 result 对象的不同属性,需要对 option 选项中的保存到相册和保存到临时文件相关项进行设置。
//
}];
对组件图片的传输方式进行设置,启动组件
//
// ~~~~ 设置图片 ~~~~ 这里很重要,一定要选择一种图片传输方式,将图片传给组件
//
// UIImage 类型,图片
_photoEditMultipleComponent.inputImage = result.image;
// NSString 类型,文件保存路径
_photoEditMultipleComponent.inputTempFilePath = result.imagePath;
// TuSDKTSAssetInterface 类型,相册地址对象
_photoEditMultipleComponent.inputAsset = result.imageAsset;
// 是否在组件执行完成后自动关闭组件 (默认:NO)
_photoEditMultipleComponent.autoDismissWhenCompelted = YES;
// 编辑动作完成传出参数时,如果使用 UImage 对象,请注意组件关闭,控制器被销毁 UIImage 会被释放,持有方法参考上文。
[_photoEditMultipleComponent showComponent];
TuSDK 的照片美化组件为用户提供了多种功能模块,分别是 贴纸
滤镜
涂抹
美颜
裁切
调整
光圈
暗角
锐化
圣光
模糊
等。
选择性使用,示例代码中禁止了裁剪、滤镜、美颜三个功能模块,不使用的模块可使用此方法禁用,不设置该选项将默认加载全部模块
[_photoEditMultipleComponent.options.editMultipleOptions disableModule:lsqTuSDKCPEditActionCuter];
[_photoEditMultipleComponent.options.editMultipleOptions disableModule:lsqTuSDKCPEditActionFilter];
[_photoEditMultipleComponent.options.editMultipleOptions disableModule:lsqTuSDKCPEditActionSkin];
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = YES;
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbumName = @"TuSDK";
_photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = YES;
用户需要拿到临时文件,这个选项需要配置 NO
_photoEditMultipleComponent.options.editMultipleOptions.isAutoRemoveTemp = YES;
_photoEditMultipleComponent.options.editMultipleOptions.disableStepsSave = YES;
_photoEditMultipleComponent.options.editMultipleOptions.showResultPreview = NO;
如果设置了LimitSideSize, 将忽略LimitForScreen
_photoEditMultipleComponent.options.editMultipleOptions.limitForScreen = YES;
_photoEditMultipleComponent.options.editMultipleOptions.limitSideSize = 800;
继承 TuSDKPFEditMultipleController 类的子类
指定给组件,这样组件就会自动调用子类中重写的相应方法。 _photoEditMultipleComponent.options.editMultipleOptions.componentClazz = [TuSDKPFEditMultipleController class];
继承 TuSDKPFEditMultipleView 类的子类
指定给组件,这样组件就会自动调用子类中重写的相应方法。 _photoEditMultipleComponent.options.editMultipleOptions.viewClazz = [TuSDKPFEditMultipleView class];
滤镜
裁切
涂抹
美颜
贴纸
调整
光圈
暗角
锐化
圣光
模糊
等。常用的设置配置主要是裁剪,滤镜和涂抹功能注意
: 使用在线滤镜下载到本地的滤镜是分组显示的滤镜,如果设置了 filterGroup
,那么在线滤镜下载的滤镜将会无法显示。 _photoEditMultipleComponent.options.editFilterOptions.filterGroup = @[@"SkinNature", @"SkinPink", @"SkinJelly", @"SkinNoir", @"SkinRuddy", @"SkinPowder", @"SkinSugar"];
_photoEditMultipleComponent.options.editFilterOptions.outputCompress = 0.95f;
_photoEditMultipleComponent.options.editFilterOptions.filterBarCellWidth = 75;
_photoEditMultipleComponent.options.editFilterOptions.filterBarHeight = 100;
_photoEditMultipleComponent.options.editFilterOptions..displayFilterSubtitles = YES;
_photoEditMultipleComponent.options.editFilterOptions.isRenderFilterThumb = YES;
_photoEditMultipleComponent.options.editCuterOptions.enableTrun = YES;
_photoEditMultipleComponent.options.editCuterOptions.enableMirror = YES;
// 全部比例
lsqRatioAll = lsqRatioOrgin | lsqRatio_1_1 | lsqRatio_2_3 | lsqRatio_3_4 | lsqRatio_9_16 | lsqRatio_3_2 | lsqRatio_4_3 | lsqRatio_16_9;
// 默认比例
lsqRatioDefault = lsqRatioOrgin | lsqRatio_1_1 | lsqRatio_2_3 | lsqRatio_3_4 | lsqRatio_9_16;
// 默认设置
_photoEditMultipleComponent.options.editCuterOptions.ratioType = lsqRatioDefault;
// 自定义设置
_photoEditMultipleComponent.options.editCuterOptions.ratioType = lsqRatio_2_3 | lsqRatio_3_4 | lsqRatio_9_16;
// 全部比例
lsqRatioAll = lsqRatioOrgin | lsqRatio_1_1 | lsqRatio_2_3 | lsqRatio_3_4 | lsqRatio_9_16 | lsqRatio_3_2 | lsqRatio_4_3 | lsqRatio_16_9;
// 默认比例
lsqRatioDefault = lsqRatioOrgin | lsqRatio_1_1 | lsqRatio_2_3 | lsqRatio_3_4 | lsqRatio_9_16;
// 默认设置
_photoEditMultipleComponent.options.editCuterOptions.ratioTypeList = @[@(lsqRatioOrgin), @(lsqRatio_1_1), @(lsqRatio_2_3), @(lsqRatio_3_4), @(lsqRatio_9_16)];
// 自定义设置
_photoEditMultipleComponent.options.editCuterOptions.ratioTypeList = @[@(lsqRatio_16_9), @(lsqRatio_3_2), @(lsqRatio_2_3), @(lsqRatio_3_4), @(lsqRatio_9_16)];
_photoEditMultipleComponent.options.editSmudgeOptions.defaultBrushSize = lsqMediumBrush;
_photoEditMultipleComponent.options.editSmudgeOptions.saveLastBrush = YES;
_photoEditMultipleComponent.options.editSmudgeOptions.maxUndoCount = 5;
使用 TuSDK 的图片编辑组件,可以通过设置不同的属性以方便管理编辑结果及输出方式。
和相机类似,同样有三种方式获得图片的处理结果:
获取图片的 image 对象,此方式将不保存图片
获取图片的存储路径,此方式会将图片保存在相册中
将图片保存在临时文件中,并获取临时文件
您需要进行如下设置:
// 保存到系统相册
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = NO;
// 保存到临时文件
_photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = NO;
该方式将不会保存处理结果。
随后您可以在所设置的组件注释的方法中,按照提示写出回调方法将 result.image
,然后在外部使用方法接受图片的 image 对象。
您需要进行如下设置:
// 保存到系统相册
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = YES;
// 保存到临时文件
_photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = NO;
该方式会将处理结果保存到相册中。
同时您也可以设置
// 保存到系统相册的相册名称
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbumName = @"TuSdk";
将图片保存到名称为 TuSdk
的相册中。
随后您可以在所设置的组件注释的方法中,按照提示写出回调方法将 result
,然后在外部使用方法接受图片对象。
您需要进行如下设置:
// 保存到系统相册
_photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = NO;
// 保存到临时文件
_photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = YES;
该方式将会把处理结果保存到临时文件,同时您也可以设置
// 控制器关闭后是否自动删除临时文件
_photoEditMultipleComponent.options.editMultipleOptions.isAutoRemoveTemp = YES;
这样在处理完成之后将会自动删除临时文件。
随后您可以在所设置的组件注释的方法中,按照提示写出回调方法将 result.imagePath
,然后在外部使用方法接受图片对象。
当上面的配置完成之后,最后不要忘记加上下面的代码打开组件:
// 设置图片
_photoEditMultipleComponent.inputImage = result.image;
_photoEditMultipleComponent.inputTempFilePath = result.imagePath;
_photoEditMultipleComponent.inputAsset = result.imageAsset;
// 是否在组件执行完成后自动关闭组件 (默认:NO)
_photoEditMultipleComponent.autoDismissWhenCompelted = YES;
// 当上一个页面是NavigationController时,是否通过 pushViewController 方式打开编辑器视图 (默认:NO,默认以 presentViewController 方式打开)
// SDK 内部组件采用了一致的界面设计,会通过 push 方式打开视图。如果用户开启了该选项,在调用时可能会遇到布局不兼容问题,请谨慎处理。
_photoEditMultipleComponent.autoPushViewController = YES;
[_photoEditMultipleComponent showComponent];