图像处理之滤镜、图文智能排版开发详解,从入门到起飞
在上一篇👉如何给应用增加图片编辑功能:剪裁、滤镜、贴纸、排版、标签,我们详细讲解了“图片”风口下,各类应用可能面临的“窘境”:由于应用内缺乏图片编辑设计能力,或者提供的图片编辑设计能力不足,导致原本功能强大的优质应用,没法提高用户留存率,影响应用自身竞争实力。华为图像服务旨在为各类交互应用解决这一问题,可以说是应时而生,应势而生。在详细介绍华为图像服务五大图像编辑能力分别是什么、各自的应用场景以及功能价值的基础上,接下来将为大家带来五大图片编辑功能的具体开发步骤。
滤镜服务
开发步骤
滤镜服务开发步骤如下,需要您提供图片和相关参数,得到相应的返回值。
1、导入滤镜服务包。
import com.huawei.hms.image.vision.*; import com.huawei.hms.image.vision.bean.ImageVisionResult;
2、获取滤镜服务实例。
// 获取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:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
projectId | String | M | 您在配置AppGallery Connect时得到的项目ID(agconnect-services.json文件中的product_id)。 |
appId | String | M | 当前App的APPID(agconnect-services.json文件中的app_id)。 |
authApiKey | String | M | 鉴权使用的Apikey(agconnect-services.json文件中的api_key)。 |
clientSecret | String | M | 客户端秘钥(agconnect-services.json文件中的client_secret)。 |
clientId | String | M | 客户端ID(agconnect-services.json文件中的client_id)。 |
token | String | O | 会话token,用于验证第三方App身份,建议由您的服务器通过client_id+client_secret从AGC获取。 |
说明:图文智能排版服务,图像主题标签服务token为必选值,获取方式参见:token获取方式。
4、构建参数对象。
参数列表 | 类型 | M/O(必选/可选) | 说明 |
requestJson | JSONObject | M | 图片处理请求参数。 |
imageBitmap | Bitmap | M | 需要处理的图片(宽高比在1:3和3:1之间,宽高像素均不超过8000)。 |
requestJson字段信息:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
requestId | String | O | 业务提供的请求ID。 |
taskJson | JSONObject | M | 具体的业务请求信息。 |
authJson | JSONObject | M | 鉴权参数。 |
滤镜的taskJson字段信息:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
filterType | int | O | 颜色映射的图片索引,索引范围[0,24](0为原图)。 |
intensity | float | O | 滤镜强度,取值范围[0,1.0],默认为1.0。 |
compressRate | float | O | 压缩率,取值范围(0,1.0],默认为1.0。 |
filterType映射表:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
黑白 | 棕调 | 慵懒 | 小苍兰 | 富士 | 桃粉 | 海盐 | 薄荷 | 蒹葭 | 复古 | 棉花糖 | 青苔 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
日光 | 时光 | 雾霾蓝 | 向日葵 | 硬朗 | 古铜黄 | 黑白调 | 黄绿调 | 黄调 | 绿调 | 青调 | 紫调 |
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。
// 获取visionResult返回值 new Thread(new Runnable() { @Override public void run() { ImageVisionResult visionResult = imageVisionAPI.getColorFilter(requestJson,imageBitmap); } }).start();
visionResult返回值:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
resultCode | int | M | |
response | JSONObject | O | 服务返回的结果。 |
image | Bitmap | O | 处理后的图片数据,对于直接返回图片的API,通过该字段传递处理后的图片数据。 |
response字段信息:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
requestId | String | O | 业务提供的请求id(如果请求携带此参数,则返回此参数值)。 |
serviceId | String | M | 调用的服务名。 |
说明:调用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、服务初始化,与滤镜服务一致,可参见开发步骤中的相关描述。
构建参数对象。
参数列表 | 类型 | M/O(必选/可选) | 说明 |
requestJson | JSONObject | M | 图片处理请求参数。 |
imageBitmap | Bitmap | M | 需要制作图文智能排版的图片(宽高比9:16)。 |
requestJson字段信息:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
requestId | String | O | 业务提供的请求ID。 |
taskJson | JSONObject | M | 具体的业务请求信息。 |
authJson | JSONObject | M | 鉴权参数。 |
图文智能排版的taskJson字段信息:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
title | String | M | 文案标题,必填字段,不超过7个中文汉字(总字符数量不超过10个),如果超过字数限制会被强制截断。 |
description | String | M | 文案内容,不超过44个中文汉字(总字符数量不超过66个),超过字数限制则进行截断,用‘…’代替。 |
copyRight | String | O | 图片版权归属的个人/公司名称,建议不超过7个中文汉字(总字符数量不超过10个),超过字数限制则进行截断,用‘…’代替。 |
anchor | String | O | “详情”或“查看更多”,建议4个中文汉字(总字符数不超过6个)超过字数限制则进行截断,用‘…’代替。 |
isNeedMask | boolean | O | 是否需要蒙层。 |
styleList构建参数 | JSONArray | O | 样式列表,默认[],若为默认值,依据描述文本是否有换行符选择文本;若用户传入list,从用户给出的版式中选择。 取值范围['info1', 'info2', …, 'info9']。 说明 styleList中,info8为竖板排版,当前仅支持中文版式,不支持其他语言版式;info3为默认兜底版式;若用户输入info8且输入标签、文本描述有非中文语种,返回用户info3版式。 |
authJson映射表:请参见authJson字段定义。
图文智能排版服务requestJson示例:
{ "requestId":"requestId", "taskJson":{"title":"轻奢新生代","description":"远离城市的喧嚣","copyRight":"华为杂志锁屏","isNeedMask":false,"anchor":"查看详情","styleList":["info1"]}, "authJson":{"projectId":"projectIdTest","appId":"appIdTest","authApiKey":"authApiKeyTest","clientSecret":"CSecretTest","clientId":"CIdTest","token":"tokenTest"} }
ImageLayoutInfo返回值:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
resultCode | int | M | 返回结果码。 |
viewGroup | ViewGroup | O | 返回的目标view。 |
maskView | View | O | 返回蒙层view(无蒙层时为null)。 |
response | JSONObject | O | 返回结果。 |
response字段:
参数列表 | 类型 | M/O(必选/可选) | 说明 |
locationX | int | O | 返回view位于手机的起始位置X。 |
locationY | int | O | 返回view位于手机的起始位置Y。 |
maskColor | int | O | 返回蒙层的颜色值。 |
colorHeigh | int | O | 返回蒙层的高度(无蒙层时为0)。 |
requestId | String | O | 业务提供的请求ID(如果请求时携带了就返回,没有携带就不返回)。 |
serviceId | String | M | 调用的服务名。 |
说明:①因为接口涉及网络请求,需要开启子线程去调用接口。②使用图文智能排版服务时,您需要保证提供的token是有效的,否则无法使用该服务。③token的获取方式可参见token获取方式。
6、停止服务。
当不再需要图文智能排版效果时,调用该接口停止服务,stopCode为0时,执行成功。
if (null != imageVisionAPI) { int stopCode = imageVisionAPI.stop(); }
在下一篇中,将继续带来在应用中添加图像裁剪能力、图像主题标签能力、贴纸花字能力的开发详解,敬请期待~
>>访问华为图像服务官网,了解更多相关内容
>>获取华为图像服务开发指导文档
>>华为HMS Core官方论坛
>>华为图像服务开源仓库地址:GitHub、Gitee
点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Pulsar 社区志愿者招募
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。 GitHub 地址:http://github.com/apache/pulsar/ Pulsar 社区的发展离不开社区小伙伴们的长时间辛苦付出和奉献,在此向所有社区小伙伴表示由衷的感谢! Pulsar 社区希望更多有志于改变技术未来的小伙伴加入我们,一起努力,一起成长!发挥你的才华,支持社区基础设施,让更多人看到 Pulsar 的魅力。现面向社区招募以下志愿者: 翻译贡献者 翻译内容 主要把国外 Pulsar 相关的新闻资讯、技术动态、技术论文、应用技巧、机制原理等文章翻译成中文。(本次主要为 Pulsar 技术文章的翻译 ) 基本要求 具有良好的英语阅读能力,拥有一定的翻译技巧和素质,逻辑思维能力强; 翻译要保证质量,力求准确完整,语法通顺,要达到在 Pulsar 社区发表的水平。 ...
- 下一篇
支持边云协同终身学习特性,KubeEdge 子项目 Sedna 0.3.0 版本发布!
Sedna基于KubeEdge提供的边云协同能力,实现AI的跨边云协同训练和协同推理能力。支持现有AI类应用无缝下沉到边缘,快速实现跨边云的增量学习,联邦学习,协同推理等能力,最终达到降低边缘AI服务构建与部署成本、提升模型性能、保护数据隐私等效果。 当前机器学习落地挑战 近二十年来,机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等领域。 在实际业务落地过程中,大部分大型云平台提供商均已提供机器学习算力等资源服务,同时支持多种机器学习框架等以提供开放灵活的部署环境。但是,机器学习模型所需的数据往往并非从云平台中产生,而是从传感器、手机、网关等边缘设备中产生。数据从边侧产生,而云端需从边侧采集数据以训练和不断完善机器学习模型。在实际落地时,当前机器学习需面对以下问题: 1)海量设备数据导致延迟和成本问题 假设即使有100 Mbps的专网连接,将10TB的数据运送到云端也需要10天。 面对大量边缘连接设备每天生成数百兆字节甚至TB数据,带来的延迟和成本对客户和服务提供方...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程