基础介绍
TuSDKUIGeeV2
是图像 SDK 2.6.0 版本新增的主题包,主要包含了「相机组件」、「多选相册组件」和「多图编辑组件」,该主题包是一个完整的功能套件,请不要拆分使用。
下面文档以 demo 代码为例,展示了主题包的基本调用方法,最好和 demo 中的示例源码配合查阅以达到最好的效果。
多选相册连接多图编辑
设置组件回调方法
使用下面的代码指定组件的回调方法,当图片编辑完成之后会自动调用这个回调,用户可以在这个回调方法中获取编辑后的结果:
TuSdkComponentDelegate mDelegate = new TuSdkComponentDelegate() { @Override public void onComponentFinished(TuSdkResult result, Error error, TuFragment lastFragment) { // 在这里使用 result.images 获取编辑后的图片结果 TLog.d("PackageComponentSample onComponentFinished: %s | %s", result.images, error); } };
获取组件对象
可以使用 TuSdkGeeV2
类下的 richEditCommponent
方法获取组件对象,该方法有两个重载版本,分别是:
public static TuRichEditComponent richEditCommponent(Activity activity, TuSdkComponentDelegate delegate)
和
public static TuRichEditComponent richEditCommponent(TuFragment fragment, TuSdkComponentDelegate delegate)
即用户传入 Activity 或是 TuFragment 的实例都可;第二个参数是指定的组件的代理回调,这里将上一步获得的回调方法实例传给该方法即可。
调用示例如下:
TuRichEditComponent comp = TuSdkGeeV2.richEditCommponent(YourActivity.this, mDelegate);
开启组件
在上一步中获得了组件实例 comp
之后,就可以调用方法开启组件了,同时也可以设置组件执行完成后是否自动关闭,示例代码如下:
// 操作完成后是否自动关闭页面 comp.setAutoDismissWhenCompleted(true) // 显示组件 .showComponent();
传入图片地址到多图编辑
除了可以在多选相册选择图片传给多图编辑组件之外,SDK 还提供了一种方式,使用户可以直接将图片的地址传给多图编辑组件。
获取组件对象
这一步可以参考上一节「多选相册连接多图编辑」中的「设置组件回调方法」和「获取组件对象」这两个步骤,使用方法完全一样。
传入图片地址
可以将已经获取到的图片的地址放进 ImageSqlInfo
对象中,并将 ImageSqlInfo
对象放进 TuSdkResult
对象中,最后将该 TuSdkResult
对象传入开启组件的方法,如下:
TuSdkResult result = new TuSdkResult(); List<ImageSqlInfo> list = new ArrayList<ImageSqlInfo>(); ImageSqlInfo info = new ImageSqlInfo(); info.path = "/storage/emulated/0/DCIM/Camera/test.jpg"; list.add(info); result.images = list;
开启组件
最后将上一步中获取到的 TuSdkResult
对象传入开启组件的方法中,如下:
comp.openMultipleEditComponentWithResult(result);
到此即开启了多图编辑组件界面。
常见属性设置
多选相册的配置
设置打开相机时是否需要关闭相册
打开多选相册中带的相机时可以指定是否同时关闭相册界面
// 设置打开相机时是否需要关闭相册,(默认: false) comp.componentOption().albumMultipleComponentOption().setCloseAlbumWhenOpenCamera(true);
设置多选相册一次选择的最大照片数量
// 一次选择的最大照片数量 (默认: 3,0 < n <= 9) comp.componentOption().albumMultipleComponentOption().albumListOption().setMaxSelection(9);
相机的配置
设置是否开启拍照后预览
// 是否开启拍照后预览 (默认: false) comp.componentOption().cameraOption().setEnablePreview(true);
多图编辑组件的配置
设置最大编辑数量
// 设置最大编辑数量 (默认: 9,0 < n <= 9) comp.componentOption().editMultipleComponentOption().setMaxEditImageCount(9);
设置没有改变的图片是否保存
在编辑完图片并点击完成按钮之后,可以指定是否保存那些没有做修改的图片
// 设置没有改变的图片是否保存 (默认: false) comp.componentOption().editMultipleComponentOption().setEnableAlwaysSaveEditResult(false);
设置编辑时是否支持追加图片
指定在多图编辑界面是否支持追加图片
// 设置编辑时是否支持追加图片 (默认: true) comp.componentOption().editMultipleComponentOption().setEnableAppendImage(true);
配置功能模块选项
多图编辑组件为用户提供了 6 种功能模块,分别是:
编辑
贴纸
滤镜
美颜
调整
涂抹
所有的功能选项均可以设置开启或者禁用,比如可以使用下面方式禁用滤镜功能选项:
comp.componentOption().editMultipleComponentOption().editMultipleOption().disableModule(TuEditActionType.TypeFilter);
其中「编辑」模块中又包括了四种子模块,分别是:
裁切
旋转
模糊
光圈
同样可以设置开启或禁用这写模块,比如可以使用下面方式禁用光圈子模块:
comp.componentOption().editMultipleComponentOption().editOption().disableModule(TuEditActionType.TypeAperture);
同时也可以在组件打开之前对每个功能选项的属性分别进行设置,下面列出几个常用到的配置。
设置滤镜模块
在滤镜模块中设置只显示指定的滤镜项,如下:
// 需要显示的滤镜名称列表 (如果为空将显示所有自定义滤镜, 可选) String[] filters = { "SkinNature", "SkinPink", "SkinJelly", "SkinNoir", "SkinRuddy", "SkinPowder", "SkinSugar"}; comp.componentOption().editMultipleComponentOption().editFilterOption().setFilterGroup(Arrays.asList(filters));
设置涂抹模块
指定涂抹的默认笔刷大小
// 默认的笔刷大小 (默认: SizeType.MediumBrush,中等粗细) comp.componentOption().editMultipleComponentOption().editSmudgeOption().setDefaultBrushSize(SizeType.LargeBrush);
指定最大允许撤销的次数
// 允许撤销的次数 (默认: 5) comp.componentOption().editMultipleComponentOption().editSmudgeOption().setMaxUndoCount(5);
设置是否记住用户最后一次使用的笔刷
// 记住用户最后一次使用的笔刷 (默认: false) comp.componentOption().editMultipleComponentOption().editSmudgeOption().setSaveLastBrush(true);
获取编辑结果
多图编辑组件可以通过设置不同的属性管理编辑结果的输出方式,可以通过下面两种方式获得编辑后的结果:
将图片保存在相册中,并获取图片的存储路径(默认方式)
将图片保存在临时文件中,并获取临时文件路径
这两种结果都是在组件的回调方法 onComponentFinished(TuSdkResult result, Error error,TuFragment lastFragment)
中获取。
获取编辑结果的存储路径
这是多图编辑组件的默认获取图片的方式,即组件默认设置了将图片保存到相册,如下:
// 保存到系统相册 comp.componentOption().editMultipleComponentOption().editMultipleOption().setSaveToAlbum(true);
此时用户不用做任何设置即可在结果回调方法中获取编辑后的图片的存储路径。
编辑完成后在回调方法中根据 result.images
参数获取结果图片的路径,如下:
for (ImageSqlInfo info : result.images) { // 方式1:直接通过 ImageSqlInfo 生成 Bitmap Bitmap mImage = BitmapHelper.getBitmap(info, true); // 方式2:通过路径获取文件 File file = new File(info.path); }
可以看到,有两种方式可以获取结果,一是直接获取 Bitmap 对象,二是先使用info.path
属性获取图片保存在相册中的路径,然后再获取其 File 对象;
同时,ImageSqlInfo 类还可以使用户获取到处理后的照片的其他属性,比如拍摄时间、图片宽高等,具体可以参看 ImageSqlInfo 类的 API 文档。
获取编辑结果所在的临时文件路径
需要做如下设置:
// 保存到临时文件 (默认不保存, 处理完成后将自动清理原始图片) comp.componentOption().editMultipleComponentOption().editMultipleOption().setSaveToTemp(true);
编辑完成后组件默认会把临时文件清理掉,如果想要保留临时文件可以如下设置:
// 是否在编辑完成后自动删除临时文件 comp.componentOption().editMultipleComponentOption().editMultipleOption().setAutoRemoveTemp(false);
同获取编辑结果的存储路径
类似,编辑完成后可以在回调方法中根据 result.images
参数获取结果图片的路径,如下:
for (ImageSqlInfo info : result.images) { // 方式1:直接通过 ImageSqlInfo 生成 Bitmap Bitmap mImage = BitmapHelper.getBitmap(info, true); // 方式2:通过路径获取文件 File file = new File(info.path); }
可以看到,获取方式跟将图片保存到相册时的获取方式大致一样,只不过将图片保存到相册中时使用info.path
获取到的是图片在相册中的路径,而将图片保存到临时文件中时使用info.path
获取到的是临时文件的路径。
共同学习,写下你的评论
评论加载中...
作者其他优质文章