ITPub博客

首页 > 移动开发 > ANDROID > 图像处理之滤镜、图文排版的开发详解,从入门到起飞

图像处理之滤镜、图文排版的开发详解,从入门到起飞

原创 ANDROID 作者:华为开发者论坛 时间:2021-07-07 11:02:06 0 删除 编辑

在上一篇 如何给应用增加图片编辑功能:剪裁、滤镜、贴纸、排版、标签,我们详细讲解了“图片”风口下,各类应用可能面临的“窘境”:由于应用内缺乏图片编辑设计能力,或者提供的图片编辑设计能力不足,导致原本功能强大的优质应用,没法提高用户留存率,影响应用自身竞争实力。 华为图像服务旨在为各类交互应用解决这一问题,可以说是应时而生,应势而生。在详细介绍 华为图像服务五大图像编辑能力分别是什么、各自的应用场景以及功能价值的基础上,接下来将为大家带来五大图片编辑功能的具体开发步骤。

滤镜服务

开发步骤

滤镜服务开发步骤如下,需要您提供图片和相关参数,得到相应的返回值。

1、导入滤镜服务包。

Java代码

import com.huawei.hms.image.vision.*;    import com.huawei.hms.image.vision.bean.ImageVisionResult;

2、获取滤镜服务实例。

Java代码

// 获取ImageVisionImpl对象     ImageVisionImpl imageVisionAPI = ImageVision.getInstance(this);

3、服务初始化,调用 setVisionCallBack时需要实现 ImageVision.VisionCallBack接口,重写其中的 onSuccess(int successCode)和 onFailure(int errorCode)方法。

  • 框架初始化成功后会回调onSuccess方法,在onSuccess方法中,需要再初始化滤镜服务。调用滤镜初始化接口时,只有通过校验,第三方应用才能使用滤镜服务,initCode必须为0,滤镜服务初始化成功。

  • 框架初始化失败时会回调onFailure方法,传回失败错误码。

    imageVisionAPI.setVisionCallBack(new ImageVision.VisionCallBack() {    @Override    public void onSuccess(int successCode) {       int initCode = imageVisionAPI.init(context, authJson);       ...    }    @Override    public void onFailure(int errorCode) {        ...    }});

入参authJson:

说明:图文智能排版服务,图像主题标签服务token为必选值,获取方式参见: token获取方式。

4、构建参数对滤镜服务requestJson示例:象。

requestJson字段信息:

滤镜的taskJson字段信息:

filterType映射表:

authJson映射表:请参见 authJson表。

滤镜服务requestJson示例:

{  "requestId":"requestId",  "taskJson":{"intensity":"1","filterType":"1","compressRate":"1"},  "authJson":{"projectId":"projectIdTest","appId":"appIdTest","authApiKey":"authApiKeyTest","clientSecret":"CSecretTest","clientId":"CIdTest","token":"tokenTest"}}

5、滤镜服务获取结果。

您在调用 getColorFilter接口时,需要输入待处理图片的Bitmap,并选择需要的滤镜效果。滤镜服务根据传入的参数对原始图片进行处理后,返回处理后图片的Bitmap。

Java 代码

// 获取visionResult返回值new Thread(new Runnable() {    @Override        public void run() {        ImageVisionResult visionResult = imageVisionAPI.getColorFilter(requestJson,imageBitmap);        }               }).start();

visionResult返回值:

response字段信息:

说明:调用 getColorFilter接口时,需要开启一个子线程去执行,不能在主线程执行。

6、停止服务。

当不再需要滤镜效果时,调用该接口停止服务,stopCode为0时,停止服务成功。

if (null != imageVisionAPI) {    int stopCode = imageVisionAPI.stop();}

图文智能排版服务

开发步骤

图文智能排版服务开发步骤如下,需要您提供图片和相关参数,得到相应的返回值。

1、导入图文智能排版服务包。

import com.huawei.hms.image.vision.bean.ImageLayoutInfo ;import com.huawei.hms.image.vision.*;

2、获取图文智能排版服务实例。

// 获取ImageVisionImpl 对象ImageVisionImpl imageVisionAPI = ImageVision.getInstance(this);

3、服务初始化,与滤镜服务一致,可参见 开发步骤中的相关描述。

构建参数对象。

图文智能排版的taskJson字段信息:

说明

styleList中,info8为竖板排版,当前仅支持中文版式,不支持其他语言版式;info3为默认兜底版式;若用户输入info8且输入标签、文本描述有非中文语种,返回用户info3版式。

authJson映射表:请参见 authJson字段定义。

图文智能排版服务requestJson示例:

Java 代码

{  "requestId":"requestId",  "taskJson":{"title":"轻奢新生代","description":"远离城市的喧嚣","copyRight":"华为杂志锁屏","isNeedMask":false,"anchor":"查看详情","styleList":["info1"]},  "authJson":{"projectId":"projectIdTest","appId":"appIdTest","authApiKey":"authApiKeyTest","clientSecret":"CSecretTest","clientId":"CIdTest","token":"tokenTest"}}

5、图文智能排版服务获取结果。

在调用 analyzeImageLayout接口时,需要输入待处理图片Bitmap并选择样式和需要添加的文字等( 构建参数)。图文智能排版服务需要联网,如不联网,则默认反回info3样式。图文智能排版服务会返回 ImageLayoutInfo封装类,根据封装类的参数进行view绘制(可以参见 示例代码绘制方式)。

// 获取ImageLayoutInfo返回值new Thread(new Runnable() {    @Override        public void run() {            ImageLayoutInfo imageLayoutInfo = imageVisionAPI.analyzeImageLayout(requestJson, imageBitmap);        }               }).start();

ImageLayoutInfo返回值:

response字段:

说明:①因为接口涉及网络请求,需要开启子线程去调用接口。②使用图文智能排版服务时,您需要保证提供的token是有效的,否则无法使用该服务。③token的获取方式可参见 token获取方式。

6、停止服务。

当不再需要图文智能排版效果时,调用该接口停止服务,stopCode为0时,执行成功。

if (null != imageVisionAPI) {    int stopCode = imageVisionAPI.stop();}

原文链接: https://developer.huawei.com/consumer/cn/forum/topic/0202568908557260771?fid=18

原作者:胡椒


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69970551/viewspace-2780057/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-04-21

  • 博文量
    402
  • 访问量
    726967