涂图

  • 首页
  • 解决方案
    • 拍照和图片编辑
    • 视频录制和后期编辑
    • 模板视频
    • 人像美颜
    • 人脸特效
    • 滤镜特效
    • 贴纸特效
  • API服务
    • 人像服务
    • 视频融合
    • 人脸云
    • 在线滤镜
  • 客户案例
  • 下载
  • 文档
  • 关于我们
  • 控制台
  • 一、新手上路
  • 控制台操作说明
    • 控制台使用说明
    • 自定义资源上传说明
  • 二、SDK 文档
  • 图像 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 相册组件的使用
      • 照片美化组件的使用
      • 主题包基础使用
      • 自定义滤镜
      • 自定义贴纸
      • 自定义界面
      • 自定义 ProgressHUD 提示框(2.0.0~3.2.7)
      • 自定义 ProgressHUD 提示框
      • API 文档
      • 致谢
    • Android 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 照片美化组件的使用
      • 头像设置组件的使用
      • 多选相册组件的使用
      • 主题包基础使用
      • 自定义贴纸
      • 自定义滤镜
      • 自定义界面
      • 自定义进度信息提示框
      • 自定义 Activity 打开相机
      • API 文档
      • 致谢
    • iOS 技术问题
      • 「Incorrenct app key」
      • 更换滤镜效果图
      • 导航栏与状态栏
      • 组件中使用部分滤镜
      • Cocoapods 相关问题
      • 图片尺寸变化
      • Photos.framework 相关错误
      • 多包名发布
      • GPUImage 的相关错误
      • TuSDKTSALAsset 转换系统对象
      • 滤镜无法显示名称
      • 获取相机的点击事件
    • Android 技术问题
      • Incorrenct app key
      • 重复引用包
      • Recyclerview 库缺失
      • 方法数超出 65536 限制
      • 传入图片路径
      • 指定裁剪比例
      • 指定相册每行列数
      • 禁用相册自动跳转
      • 如何使用部分滤镜?
      • 代码混淆
      • TuSDK 使用的依赖库
      • 多渠道打包
      • 设置相机输出尺寸
      • 相机横屏设置
      • 自定义照片美化组件各功能模块效果默认参数值
    • 拼图设计
      • 拼图模板导出
    • 版本更新日志
      • iOS 版本更新日志
      • Android 更新日志
  • 视频剪辑 SDK
    • 产品说明
      • 产品指南
    • iOS文档
      • TuSDK Video Editor iOS 接入文档
    • Android文档
      • TuSDK Video Editor Android 接入文档
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 流处理(特效相机) SDK
    • 产品说明
      • 产品指南
    • iOS 文档
      • TuSDK特效相机接入文档-iOS
      • TuSDK直播特效接入说明-iOS
    • Android 文档
      • TuSDK特效相机接入文档-Android
      • TuSDK直播特效接入说明-Android
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 视频融合 SDK
    • 产品说明
      • 产品指南
      • 模板管理
    • iOS 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 2.0
      • API文档
    • Android 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 (2.0.0+)
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 短视频 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • Android 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • iOS 技术问题
      • 常见问题
    • Android 技术问题
      • 常见问题
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 三、云服务文档
  • 人像服务
    • 使用文档
      • 快速入门
      • 核心功能
    • API概述
      • API 概述
      • API 文档
    • 常见问题
      • 常见问题
  • 视频融合(云渲染)
    • 使用文档
      • 快速入门
      • 模板管理
    • API概述
      • API概述
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 常见问题
    • 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 人脸云
    • 使用文档
      • 快速入门
      • 核心功能
    • API 概述
      • API 概述
    • 常见问题
      • 常见问题
  • 在线滤镜
    • 使用文档
      • 快速入门
      • 核心功能
      • FILTER API
      • API 错误码表
    • API概述
      • API 概述
    • 常见问题
      • 常见问题
  • 四、综合
  • 涂图隐私协议
  • 用户退出机制
  • 动态贴纸设计规范
  • 美妆贴纸设计规范
  • 云服务账单说明
  • 应用包名与密钥
  • 基础服务开发者升级流程
  • 五、常见问题
  • 常见问题
  • 遇到问题,怎么办?
  • 如何使用贴纸管理、滤镜管理?

主题包基础使用

  • TuSDKGeeV2 主题包是 2.6.0 之后新增的一个主题包,主要的功能是多图编辑组件,包含:相机组件,多选相册组件,拍照预览组件和图片编辑组件。文档以 Demo 代码为例,展示组件的使用方法。
  • 多图片编辑组件是一个完整的功能套件,请不要拆分使用。
  • 请用户直接使用 GeeV2Sample 中的代码进行组件的调用。
  • 请按照官方 Demo 中给出的方法进行使用,不要更改组件的代码顺序。

启动组件

引入头文件

  • 在需要使用组件的地方导入头文件 #import <TuSDKGeeV2/TuSDKGeeV2.h>。

声明变量

  • 创建组件对象,需要将组件声明成全局变量。
@interface GeeV2Sample()<GeeV2PFCameraDelegate>{
    // ****这里很重要****
    // 需要组件声明称全局变量
    // 多图片编辑组件
    GeeV2CPPhotoEditMultipleComponent *_photoEditMultipleComponent;
    // 相册组件
    GeeV2CPAlbumMultipleComponent *_albumComponent;
    // 照片美化最大可编辑数量 和 多选相册选择的最大照片数量必须保持一致
    NSUInteger _maxSelection;
}
@end

启动相册

  • 在需要使用组件的地方调用组件的启动方法
  • 如果是直接在点击事件中启动组件,组件启动方法中传入的控制器的参数要写 self 。
  • 在启动组件的地方,提前设置相册多选的图片数量。例如: _maxSelection = 9;
    // 使用 G2 主题包多图片编辑组件需要在提前选择主题包的`style`。
    [TuSDK shared].style = @"ui_geeV2";

    // 使用默认主题包的组件需要在组件启动前提前选择主题包的`style`,避免默认主题包组件 UI 显示异常。
    // [TuSDK shared].style = lsqSdkUIDefault;

    // 开启组件(开启之前请设置 _maxSelection )
    _albumComponent =
    [TuSDKGeeV2 albumMultipleCommponentWithController:controller
                                        callbackBlock:^(TuSDKResult *result, NSError *error, UIViewController *controller)
     {
         if (error) {
             lsqLError(@"album reader error: %@", error.userInfo);
             return;
         }
         [result logInfo];

         // 从 result.imageAssets 中取出相册选择的照片对象
         // 创建一个数组存放选择的照片对象,以便于最后图片编辑完成之后编辑结果的输出
         NSMutableArray *resultArray = [NSMutableArray arrayWithCapacity:result.imageAssets.count];
         for (id<TuSDKTSAssetInterface> asset in result.imageAssets) {
             TuSDKResult *result = [TuSDKResult result];
             result.imageAsset = asset;
             [resultArray addObject:result];
         }

         // 开启多图片编辑组件,并将创建的数组 resultArray 传给多图片编辑组件。
         [self openEditMultipleWithController:controller result:resultArray];
     }
     openCameraCallback:^(GeeV2PFAlbumMultipleViewController *controller) {
         // 开启访问相机权限
         [TuSDKTSDeviceSettings checkAllowWithController:controller
                                                    type:lsqDeviceSettingsCamera
                                               completed:^(lsqDeviceSettingsType type, BOOL openSetting)
          {
              if (openSetting) {
                  lsqLError(@"Can not open camera");
                  return;
              }
              [self showCamera:controller];
          }];
     }
     // 设置最大选择的图片 (默认为 3 ,最大可以设置 9)
     maxSelectionNumber:_maxSelection];

    // 组件选项配置(API 网址链接,可查看对应的接口介绍)
    // @see-https://tusdk.com/docs/ios/image/api-geev2/Classes/GeeV2CPAlbumMultipleOptions.html
    // _albumComponent.options

    // @see-https://tusdk.com/docs/ios/image/api-geev2/Classes/GeeV2PFAlbumMultipleOptions.html
    // _albumComponent.options.albumOptions

    // @see-https://tusdk.com/docs/ios/image/api-geev2/Classes/GeeV2PFCameraOptions.html
    // _albumComponent.options.cameraOptions

    // 是否在组件执行完成后自动关闭组件 (默认:NO)
    // _albumComponent.autoDismissWhenCompelted = YES;

    [_albumComponent showComponent];

启动相机

/**
 *  启动相机
 *
 *  @param controller 启动控制器
 */
- (void)showCamera:(GeeV2PFAlbumMultipleViewController *)controller;
{
    // 组件选项配置
    // @see-https://tusdk.com/docs/ios/image/api-geev2/Classes/GeeV2PFCameraOptions.html
    GeeV2PFCameraViewController *cameraController = _albumComponent.options.cameraOptions.viewController;
    // 添加委托
    cameraController.delegate = self;
    cameraController.openedByAlbumController = YES;
    [controller pushViewController:cameraController animated:YES];
}

启动多图片编辑器

  • 开启组件的方法,需要给编辑器 (NSArray<TuSDKResult >)inputResults 的数组对象
- (void)openEditMultipleWithController:(UIViewController *)controller
                                result:(NSArray<TuSDKResult *>*)inputResults;
  • 开启组件的代码
    _photoEditMultipleComponent =
    [TuSDKGeeV2 photoEditMultipleWithController:controller
                                  callbackBlock:^(NSArray<TuSDKResult *> *outputResults, NSError *error, UIViewController *controller)
     {
         // 获取图片失败
         if (error) {
             lsqLError(@"editMultiple error: %@", error.userInfo);
             return;
         }

         // 输出 outputResults 中的图片信息
         for (TuSDKResult *result in outputResults)
         {
             [result logInfo];
         }

         //
         // 可在此添加自定义方法,在编辑完成时进行页面跳转操,例如 :
         // [controller presentViewController:[[UIViewController alloc] init] animated:YES completion:nil];

         // 图片处理结果 NSArray<TuSDKResult *> 的数组,数组中是 TuSDKResult 类型的对象。
         // TuSDKResult *firstResult 可获取的数据类型是 :
         // firstResult.imagePath 是 NSString 类型
         // firstResult.imageAsset 是 TuSDKTSAssetInterface 类型

         // 可使用以下方式进行转换
         // 从数组中获取到第一张图片的 TuSDKResult 对象
         // TuSDKResult *firstRusult = [outputResults objectAtIndex:0];
         // 通过转换 firstRusult.imageAsset 获取 UIImage
         // UIImage *firstOriginalImage = [firstRusult.imageAsset fullResolutionImage];
         // 通过转换 firstRusult.imagePath 获取 UIImage
         // UIImage *firstTempFileImage = [UIImage imageWithContentsOfFile:firstRusult.imagePath];

         // 下面以 UIImage 类型的编辑结果举例,如何将编辑结果持有并进行其他操作。
         // 使用 TuSDKTSAssetInterface 和 NSString 类型。
         // 可在此添加自定义方法,将编辑结果结果传出,例如 :  [self openEditorWithImage:firstOriginalImage];
         // 并在外部使用方法接收编辑结果,例如 : -(void)openEditorWithImage:(UIImage *)image;
         // 用户也可以在编辑结果的外部接受的方法中实现页面的跳转操作,用户可根据自身需求使用。

         // 用户在获取到 firstOriginalImage 结果并跳转到其他页面进行操作的时候可能会出现无法持有对象的情况
         // 此时用户可以将 UIImage 类型的对象转换成 NSData 类型的对象,然后再进行操作,例如 :
         // NSData *imageData = UIImageJPEGRepresentation(firstOriginalImage, 1.0);
         // UIViewController *viewController = [[UIViewController alloc]init];
         // [self.controller pushViewController:viewController animated:YES];
         // viewController.currentImage = [UIImage imageWithData:imageData];

         // 获取 result 对象的不同属性,需要对 option 选项中的保存到相册和保存到临时文件相关项进行设置。
         // 获取多个编辑结果,请将多个编辑结果一起处理或者添加至数组中,将对应数组传出。
         // 

     }];
  • 对组件图片的传输方式进行设置,启动组件
    _photoEditMultipleComponent.options.editMultipleOptions.maxSelectionNumber = _maxSelection;
    _photoEditMultipleComponent.inputResources = inputResults;
    // 是否在组件执行完成后自动关闭组件 (默认:NO)
    _photoEditMultipleComponent.autoDismissWhenCompelted = YES;
    // 当上一个页面是NavigationController时,是否通过 pushViewController 方式打开编辑器视图 (默认:NO,默认以 presentViewController 方式打开)
    // SDK 内部组件采用了一致的界面设计,会通过 push 方式打开视图。如果用户开启了该选项,在调用时可能会遇到布局不兼容问题,请谨慎处理。
    _photoEditMultipleComponent.autoPushViewController = YES;
    [_photoEditMultipleComponent showComponent];

配置功能

  • TuSDK 的多图片编辑组件为用户提供了 6 种功能模块,分别是 编辑 贴纸 滤镜 美颜 调整 涂抹。

  • 选择性使用,示例代码禁止贴纸功能模块,不使用的模块可禁用,不设置该选项将默认加载全部模块

   [_photoEditMultipleComponent.options.editMultipleOptions disableModule:lsqTuSDKCPEditActionSticker];
  • 保存到系统相册, YES 是保存系统相册
    _photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = YES;
  • 保存到系统相册的相册名称,相册名称可以修改
    _photoEditMultipleComponent.options.editMultipleOptions.saveToAlbumName = @"TuSDK";
  • 保存到临时文件,YES 是保存到临时文件
    _photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = YES;
  • 控制器关闭后是否自动删除临时文件,用户需要拿到临时文件,这个选项需要配置 NO
    _photoEditMultipleComponent.options.editMultipleOptions.isAutoRemoveTemp = YES;
  • 设置水印选项 (默认为空,如果设置不为空,则输出的图片上将带有水印)
    _photoEditMultipleComponent.options.editMultipleOptions.waterMarkOption = [self waterMarkOption];
  • 设置可编辑的图片数量,需要和多选相册的图片选择数量保持一致 (默认为 3 张,最大可设置 9 张)
    _photoEditMultipleComponent.options.editMultipleOptions.maxSelectionNumber = _maxSelection; 
  • 禁用操作步骤记录,编辑界面上代表前进和后退的两个按钮,可以查看编辑记过,禁用此功能,用户将无法恢复上一步的编辑效果。
    _photoEditMultipleComponent.options.editMultipleOptions.disableStepsSave = YES;
  • 显示处理结果的预览图,默认是 NO ,开启功能后,在最后完成图片编辑的时候会出现预览图效果
    _photoEditMultipleComponent.options.editMultipleOptions.showResultPreview = NO;
  • 最大输出图片按照设备屏幕,默认是 NO, 如果设置了LimitSideSize, 将忽略LimitForScreen
    _photoEditMultipleComponent.options.editMultipleOptions.limitForScreen = YES;
  • 最大输出图片边长,使用该属性设置输出图片的最大边长,系统会自动计算图片的长宽。
    _photoEditMultipleComponent.options.editMultipleOptions.limitSideSize = 800;
  • 是否保存所有图片到相册 (默认:NO 只保存编辑过的图片,设置 YES 结果保存所有选中图片到相册)
    _photoEditMultipleComponent.options.editMultipleOptions.enableAlwaysSaveEditResult = YES;
  • 指定界面控制器类型,进行自定义界面,使用该方法将继承 GeeV2PFEditMultipleController 类的子类指定给组件,这样组件就会自动调用子类中重写的相应方法。
    _photoEditMultipleComponent.options.editMultipleOptions.componentClazz = [GeeV2PFEditMultipleController class];
  • 指定界面视图类型,进行自定义界面,使用该方法将继承 GeeV2PFEditMultipleView 类的子类指定给组件,这样组件就会自动调用子类中重写的相应方法。
    _photoEditMultipleComponent.options.editMultipleOptions.viewClazz = [GeeV2PFEditMultipleView class];

配置功能模块参数

  • TuSDK 的多图片编辑组件为用户提供了 6 种功能模块,分别是 编辑 贴纸 滤镜 美颜 调整 涂抹。常用的设置配置主要是裁剪,滤镜和涂抹功能

滤镜控制器配置选项

  • 照片输出压缩率, 如果设置为 0 ,将保存为PNG格式
    _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;

涂抹控制器配置选项

  • 默认的笔刷大小 (默认: lsqBrushMedium,中等粗细)
    _photoEditMultipleComponent.options.editSmudgeOptions.defaultBrushSize = lsqMediumBrush;
  • 是否保存上一次使用的笔刷 (默认: YES)
    _photoEditMultipleComponent.options.editSmudgeOptions.saveLastBrush = YES;
  • 默认撤销的最大次数 (默认: 5)
    _photoEditMultipleComponent.options.editSmudgeOptions.maxUndoCount = 5;

获取编辑结果图片

使用 TuSDK 的多图片编辑组件,可以通过设置不同的属性以方便管理编辑结果及输出方式。

两种方式获得图片的处理结果:

  • 获取图片的存储路径,此方式会将图片保存在相册中

  • 将图片保存在临时文件中,并获取临时文件

获取编辑的照片对象的存储路径

您需要进行如下设置:

    // 保存到系统相册
    _photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = YES;
    // 保存到临时文件
    _photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = NO;

该方式会将处理结果保存到相册中。

同时您也可以设置

    // 保存到系统相册的相册名称
    _photoEditMultipleComponent.options.editMultipleOptions.saveToAlbumName = @"TuSdk";

将图片保存到名称为 TuSdk 的相册中。

同时,此方法还可以使您获取到处理后的照片的其他属性,比如拍摄时间、文件长宽等,具体可以参看 ImageSqlInfo 类的API。

随后您可以在所设置的组件注释的方法中,按照提示写出回调方法将 result ,然后在外部使用方法接受图片对象。

获取编辑结果所在的临时文件

您需要进行如下设置:

    // 保存到系统相册
    _photoEditMultipleComponent.options.editMultipleOptions.saveToAlbum = NO;
    // 保存到临时文件
    _photoEditMultipleComponent.options.editMultipleOptions.saveToTemp = YES;

该方式将会把处理结果保存到临时文件,同时您也可以设置

    // 控制器关闭后是否自动删除临时文件
    _photoEditMultipleComponent.options.editMultipleOptions.isAutoRemoveTemp = YES;

这样在处理完成之后将会自动删除临时文件。


当上面的配置完成之后,最后不要忘记加上下面的代码打开组件:

    _photoEditMultipleComponent.inputResources = inputResults;
    // 是否在组件执行完成后自动关闭组件 (默认:NO)
    _photoEditMultipleComponent.autoDismissWhenCompelted = YES;
    // 当上一个页面是NavigationController时,是否通过 pushViewController 方式打开编辑器视图 (默认:NO,默认以 presentViewController 方式打开)
    // SDK 内部组件采用了一致的界面设计,会通过 push 方式打开视图。如果用户开启了该选项,在调用时可能会遇到布局不兼容问题,请谨慎处理。
    _photoEditMultipleComponent.autoPushViewController = YES;
    [_photoEditMultipleComponent showComponent];

  • 启动组件
  • 配置功能
  • 配置功能模块参数
  • 获取编辑结果图片
  • 在线技术支持
  • 专业售前售后团队
  • 版本定期更新
  • 全方位解决方案

商务合作

  • 177-6716-7529
  • 2969573855
  • sales@tusdk.com
  • 浙江省 杭州市 西湖区 西斗门9号 福地创业园1号楼3楼301室

关注我们

qrcode

©2019-2025 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号

  • 177-6716-7529
  • sales@tusdk.com
  • 2969573855