使用下面代码创建组件委托,并将得到的委托对象传递给获取组件对象时调用的 editMultipleCommponent()
方法。
// 组件委托
TuSdkComponentDelegate delegate = new TuSdkComponentDelegate()
{
@Override
public void onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment)
{
TLog.d("onEditMultipleComponentReaded: %s | %s", result, error);
}
};
组件对象使用 TuSdkGeeV1 类中的 editMultipleCommponent(Activity, TuSdkComponentDelegate)
方法获得,如下:
TuEditMultipleComponent component = null;
component = TuSdkGeeV1.editMultipleCommponent(activity, 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指定给组件。
照片美化组件界面布局文件是 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 对象,此方式将不保存图片
获取图片的存储路径,此方式会将图片保存在相册中
将图片保存在临时文件中,并获取临时文件
需要进行如下设置:
// 是否保存到相册
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
获取临时文件。
©2019-2024 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号