手记

【App图片开发快速教程】照片美化组件的使用

开启组件

设置组件委托

使用下面代码创建组件委托,并将得到的委托对象传递给获取组件对象时调用的 editMultipleCommponent() 方法。

 // 组件委托
 TuSdkComponentDelegate delegate = new TuSdkComponentDelegate()
 {
     @Override
     public void onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment)
     {
        TLog.d("onEditMultipleComponentReaded: %s | %s", result, error);
     }
 };

获取组件对象

组件对象使用 TuSdkGeeV1 类中的 editMultipleCommponent() 方法获得,该方法有两个版本的重载方式,分别是

editMultipleCommponent(TuFragment fragment, TuSdkComponentDelegate delegate)

editMultipleCommponent(Activity activity, TuSdkComponentDelegate delegate)

因此获取组件对象就有两种方式,分别是使用 Activity 和 TuFragment 的对象作为 editMultipleCommponent() 方法的第一个参数,该方法的第二个参数即是上面定义的组件委托。

这两种方式都会新打开一个 Activity,并将代表组件的 Fragment 附在该 Activity 上面,唯一的不同只是在打开和关闭编辑组件时使用的动画效果不同。

如下面代码所示, lastFragment 是传递进来的 TuFragment 类型的参数,当 lastFragment 为空的时候就取得一个 Activity 的实例并将其传递到 editMultipleCommponent() 方法中;而当 lastFragment 不为空的时候就将 lastFragment 传递给 editMultipleCommponent() 方法:

 TuEditMultipleComponent component = null;

 if (lastFragment == null)
 {
    component = TuSdkGeeV1.editMultipleCommponent(this.componentHelper.activity(), delegate);
 } else
 {
    component = TuSdkGeeV1.editMultipleCommponent(lastFragment, delegate);
 }

开启组件

获得组件对象之后下一步就该是为组件设置图片了,设置图片有三种方式,分别是 setImage(result.image)setImageSqlInfo(result.imageSqlInfo) 以及 setTempFilePath(result.imageFile) 。

同时也可以设置组件执行完成后自动关闭,最后调用 showComponent() 方法开启组件,如下代码所示:

 // 设置图片
 component.setImage(result.image)
 // 设置系统照片
 .setImageSqlInfo(result.imageSqlInfo)
 // 设置临时文件
 .setTempFilePath(result.imageFile)
 // 在组件执行完成后自动关闭组件
 .setAutoDismissWhenCompleted(true)
 // 开启组件
 .showComponent();

常见属性设置

获取属性控制对象

可以通过配置 TuEditMultipleOption 来指定照片美化组件的各个属性,通过以下方式获得 TuEditMultipleOption 的对象:

TuEditMultipleOption option = component.componentOption().editMultipleOption();

指定界面控制器类型

自定义界面的时候,需要使用该方法将继承 TuEditMultipleFragment 类的子类指定给组件,这样组件就会自动调用子类中重写的相应方法。

option.setComponentClazz(TuEditMultipleFragment.class);

指定界面视图资源ID

需要给控制器重新指定一个主界面资源ID的时候,使用该方法将新的视图ID指定给组件。

照片美化组件界面布局文件是 tusdk_impl_component_edit_multiple_fragment.xml,放在 TuSDK/res/layout 目录下,建议用户修改界面的时候不要直接在该文件上做修改,而是把该文件复制到自己的项目下的 res/layout 目录中并重命名,这样可以防止将来升级 SDK 的时候造成覆盖。

option.setRootViewLayoutId(TuEditMultipleFragment.getLayoutId());

将处理结果保存到相册

option.setSaveToAlbum(true);

将处理结果保存到临时文件

option.setSaveToTemp(true);

在控制器结束后自动删除临时文件

option.setAutoRemoveTemp(true);

禁用操作步骤记录

如果想去除编辑界面上代表前进和后退的两个按钮,可以禁用操作步骤记录,这样用户就不能再回退到上一次编辑效果。

option.setDisableStepsSave(true);

设置最大输出图片边长

默认不限制最大输出图片边长,使用该属性设置输出图片的最大边长,图片长宽将按照原图片长宽比率变化。

option.setLimitSideSize(800);

限制图片最大输出尺寸为设备屏幕尺寸

默认不限制最大输出图片尺寸,使用该属性限制最大输出图片尺寸为屏幕大小,如果设置了LimitSideSize, 将忽略此属性。

option.setLimitForScreen(true);

禁用功能选项

照片美化组件中的八个功能选项可以选择启用或者禁用,可以使用下面的设置禁用贴纸功能:

option.disableModule(TuEditActionType.TypeSticker);

配置功能选项

照片美化组件中包括了十一个功能选项,分别是:

  • 贴纸

  • 滤镜

  • 美颜

  • 裁切

  • 涂抹

  • 调整

  • 模糊

  • 光圈

  • 圣光

  • 暗角

  • 锐化

所有的功能选项均可以设置开启或者禁用,可以使用下面方式禁用贴纸功能选项:

component.componentOption().editMultipleOption().disableModule(TuEditActionType.TypeSticker);

同时也可以在组件打开之前对每个功能选项的属性分别进行设置,下面列出几个常用到的配置。

只使用指定的滤镜

 // 需要显示的滤镜名称列表 (如果为空将显示所有自定义滤镜, 可选)
 String[] filters = {
 "SkinNature", "SkinPink", "SkinJelly", "SkinNoir", "SkinRuddy", "SkinPowder", "SkinSugar"};

 component.componentOption().editFilterOption().setFilterGroup(Arrays.asList(filters));

禁用滤镜历史记录

 component.componentOption().editFilterOption().setEnableFiltersHistory(false);

显示指定的裁切比例类型

裁剪组件提供了八种比例类型,分别是:
ratio_orgin ratio_1_1 ratio_2_3 ratio_3_4 ratio_9_16
ratio_3_2 ratio_4_3 ratio_16_9

默认只显示了前五种比例;如果想要显示所有的比例类型,可以如下设置:

 component.componentOption().editCuterOption().setRatioTypeList(RatioType.ratioTypes);

同时也支持设置裁切界面只显示指定的一个或多个比例类型,比如设置只显示 9:16 类型和 1:1 类型:

 component.componentOption().editCuterOption().setRatioTypeList(new int[]{RatioType.ratio_9_16, RatioType.ratio_1_1});

裁切界面禁用镜像或旋转功能

可以设置裁切界面禁用镜像或旋转功能,如下:

 // 禁用镜像功能
 component.componentOption().editCuterOption().setEnableMirror(false);
 // 禁用旋转功能
 component.componentOption().editCuterOption().setEnableTrun(false);

获取编辑结果

照片美化组件可以通过设置不同的属性管理编辑结果的输出方式,可以通过下面三种方式获得编辑后的结果:

  • 获取图片的 Bitmap 对象,此方式将不保存图片

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

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

获取编辑结果的 Bitmap 对象

需要进行如下设置:

// 是否保存到相册
component.componentOption().editMultipleOption().setSaveToAlbum(false);
// 是否保存到临时文件
component.componentOption().editMultipleOption().setSaveToTemp(false);

该方式将不会保存处理结果。

随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment) 方法中使用 result.image 获取图片的 Bitmap 对象。

获取编辑结果的存储路径

需要进行如下设置:

// 是否保存到相册
component.componentOption().editMultipleOption().setSaveToAlbum(true);
// 是否保存到临时文件
component.componentOption().editMultipleOption().setSaveToTemp(false);

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

同时也可以设置

component.componentOption().editMultipleOption().setSaveToAlbumName("TuSDKEdit");

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

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

随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment) 方法中使用 result.imageSqlInfo.path 获取图片路径。

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

需要进行如下设置:

// 是否保存到相册
component.componentOption().editMultipleOption().setSaveToAlbum(false);
// 是否保存到临时文件
component.componentOption().editMultipleOption().setSaveToTemp(true);

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

// 自动清理临时文件
component.componentOption().editMultipleOption().setAutoRemoveTemp(true);

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

随后可以在所设置的组件委托中的 onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment) 方法中使用 result.imageFile 获取临时文件。

原文链接:http://www.apkbus.com/blog-918768-68564.html

0人推荐
随时随地看视频
慕课网APP