智能云上手指南:如何接入腾讯云开放的计算机视觉能力?

6 月 21 日,腾讯云在 2017「云+未来」峰会上推出了战略新品——智能云,宣布将腾讯积累近 20 年的 AI 能力向政府、企业和开发者开放,其中首批开放计算机视觉、智能语音识别、自然语言处理的三大核心能力。腾讯云技术社区陆续推出了系列文章,向普通开发者分享如何快速接入并使用这三大 AI 能力,节省自身的开发成本,同时极大提升开发效率和用户体验。

本文将为广大云开发者介绍如何接入腾讯开放的计算机视觉能力,即万象优图

1 基本架构及业务流程

1.1基本架构

数据安全是云存储的重中之重,为了保护开发者的数据安全,腾讯云·万象优图的上传、复制、删除和下载(如果设置了防盗链)服务需要鉴权签名;鉴权签名的生成需要用到SecretKey,所以签名的生成需要在可信任的环境中进行,绝不能在客户端进行,否则会带来密钥泄漏的风险,危害开发者数据。腾讯云·万象优图推荐使用以下的服务器架构设计:

主要包括三个部分:

1 腾讯云·万象优图

提供高成功率、高可靠、高速的图片存储服务,以及强大的图像处理技术;

2. 开发者服务器

开发者服务器至少提供如下3个功能:

1)、生成签名。签名的生成不能在终端上进行,否则会产生极大的安全隐患; 2)、使用数据库管理用户信息、图片资源信息; 3)、响应终端的业务请求;

另外,开发者服务器还可以直接与腾讯云·万象优图通信对图片进行管理操作。

3. 终端

通常既上传图片也下载图片。在展示图片前,通常先从开发者服务器获取要展示的图片信息,比如图片的url;在上传图片前,通常先从开发者服务器获取签名,然后带着签名请求腾讯云·万象优图。

1.2 业务流程

1.2.1 图片上传

终端上传图片前先请求开发者服务器获取上传签名,然后再请求腾讯云·万象优图,腾讯云·万象优图会对上传签名进行验证,无效的签名会返回签名认证错误等信息。图片上传流程根据开发者是否设置回调可分为两种方案。

方案一:无回调设置

上传流程主要包括三个步骤:

  • 终端访问开发者服务器,获取签名(注意:签名的创建不能在终端上进行,否则可能会导致用户信息泄露等安全隐患);
  • 终端上传图片,腾讯云·万象优图验证签名、存储图片,生成文件ID,URL等信息返回给终端;
  • 终端将图片信息和用户信息反馈给开发者服务器。

方案二:有回调设置

如果有设置回调,则上传完成时腾讯云·万象优图会自动向开发者服务器发起设置的回调url请求。

上传流程主要包括四个步骤:

  • 终端访问开发者服务器,获取签名(注意:签名的创建不能在终端上进行,否则可能会导致用户信息泄露等安全隐患);
  • 终端上传图片,腾讯云·万象优图验证签名、存储图片,生成文件ID,URL等信息通过回调url传给开发者服务器;
  • 业务服务存储相应的图片信息,并将处理结果返还给腾讯云·万象优图;
  • 腾讯云·万象优图根据开发者服务器返回的处理信息返还给终端结果。

1.2.2 图片下载

图片下载使用图片上传成功后返回的的下载url直接访问,即直接访问download_url。

如果设置了Token防盗链,则使用下载url加签名的方式直接访问,即:download_url?sign=[签名]

2 接入服务

根据开发者业务的现有情况可将服务接入分为两种类型:回源镜像和一般接入。其中回源镜像适用于开发者的历史图片没有存储在腾讯云·万象优图,而要使用腾讯云·万象优图的下载(和其他服务,如果开发者希望接入)服务;一般接入是指开发者没有或者不考虑历史图片,使用腾讯云·万象优图对图片进行上传、下载和其他操作。

注:回源镜像可以用作开发者图片数据的灾备;也可以让开发者一键试用服务,方便快捷。

2.1 回源镜像

2.1.1 注册账号

前往腾讯云·万象优图控制台注册账号。

注:以下称图片空间为bucket。

2.1.2 场景接入

腾讯云·万象优图根据开发者的源站类型和所需服务,将回源镜像划分为四个场景。

注意: 腾讯云·万象优图针对四个场景分别进行了优化,请根据自身的情况选择合适场景接入,获取最优的服务体验。

场景一:使用万象优图下载,回源到其他云存储厂商

场景二:使用万象优图下载,回源到自己站点

场景三:使用万象优图上传和下载,历史图片回源到其他云存储厂商

场景四:使用万象优图上传和下载,历史图片回源到自己站点

2.2 一般接入

由2.1.1 基本架构章节可知,开发者如需接入腾讯云·万象优图服务,为了保护数据的安全,开发者需要在自己开发者服务器上面部署鉴权服务;终端需要向开发者服务器请求的签名,然后进行相应的服务操作,例如进行图片的上传,复制,删除,下载等。

2.2.1 接入流程

接入腾讯云·万象优图只需以下三步:

1 注册腾讯云·万象优图;

2 终端部署示例;

3 鉴权服务部署示例。

下面分别介绍终端部署简单示例,鉴权服务部署简单示例,以及终端和开发者服务器交互签名的过程。

说明:

  1. 文档中终端和开发者服务器的签名交互过程只是一个简单的例子,开发者需要根据自己业务需求开发交互过程。
  2. 如果开发者想使用本文档提供的例子进行简单测试,请确保终端和服务端的项目信息一致,如项目ID,空间名称,SecretID和SecretKey等。

2.2.1.1 注册腾讯云·万象优图

  1. 前往腾讯云·万象优图控制台注册账号;如果已经注册账号,请跳过此步骤;
  2. 腾讯云·万象优图控制台创建一个图片空间,获取空间名称(bucket)和项目ID;如果已创建过图片空间,请跳过此步骤;
  3. 腾讯云·万象优图控制台项目设置中添加密钥,获取SecretID和SecretKey;如果已经添加过密钥,请跳过此步骤。

2.2.1.2 终端部署示例

腾讯云·万象优图提供了丰富的Restful API接口,开发者可以参考Restful API部署和开发终端。

同时腾讯云·万象优图还为开发者提供了功能丰富的移动端SDK,以及web端部署示例。开发者也可是使用移动端SDK开发自己的服务,下面简单介绍使用终端SDK部署服务的简单示例,开发者需要根据自身业务情况开发相应的代码:

终端部署示例-Android

终端部署示例-iOS

web端部署示例

移动端SDK的详细文档说明请参见移动端SDK文档

2.2.1.3 鉴权服务部署示例

以下为鉴权服务部署的简单示例(使用了服务端SDK),开发者可以简单参考,开发自身业务鉴权服务,并集成到自身服务器中:

注意:下面的文档只是简单的示例,展示了服务端为终端提供签名的简单用法,开发者务必根据自身业务开发相应的鉴权服务逻辑,并集成到自身服务器中。

鉴权服务部署示例-Java

鉴权服务部署示例-PHP

鉴权服务部署示例-Python

鉴权服务部署示例-Nodejs

鉴权服务部署示例-GO

如需使用服务端更多功能,请参见服务端SDK文档

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Youngxj

怎样建网站?建网站教程?个人建网站必看教程

3774
来自专栏开源项目

Git 项目推荐 | 基于 Tiny Core 的 Linux 系统

百晓通Linux系统,DIY自Tiny Core的一款迷你Linux系统。 百晓通Linux,DIY自 Tiny Core Linux(非常感谢**TC**的开...

33511
来自专栏程序人生

从开发者的角度看:打包和部署

如今的互联网软件越来越碎片化(micro services),Queue无处不在,服务依赖越来越多,使得软件功能的开发,到软件功能的部署,中间有很长的一段路。这...

3409
来自专栏SAP最佳业务实践

SAP最佳业务实践:SD–外贸出口处理(118)-2付款保证

一、VX11N付款保证 在此活动中,你创建一份从客户开户行获得的信用证。 后勤 ®销售和分销 ®外贸/关税®付款保证 ®凭证的付款®财务凭证 ®创建 1. 在...

35511
来自专栏FreeBuf

看我如何发现价值三千美金的Facebook视频缩略图信息泄露漏洞

本文我要分享的是我的一个$3000美金Facebook漏洞发现过程。在我决定对Facebook网站进行安全测试之后,我熟读了很多相关的漏洞发现writeup,发...

1080
来自专栏逸鹏说道

锐捷网络NBR部分路由器cookie欺骗权限绕过

简要描述: 锐捷网络NBR部分路由器通过cookie欺骗轻松权限绕过 详细说明: 在 WooYun: 锐捷网络NBR系列产品存在越权读取所有账号密码等问题 白帽...

3356
来自专栏企鹅号快讯

python程序员开发必备的5大工具,你用过几个?

随着python的火热,不少的程序员业余时间都会研究这门编程语言。 利用python开发,大牛用vim,接了2个显示器写python,气场甚是强大。 有些程序员...

2217
来自专栏Android开发实战

别哭!程序员/开发人员的真实生活:)

各位程序员/开发人员,你们有过上面这些经历么?我是希望会有,如果没有,或许你不算是个真正的程序员/开发人员啊。O(∩_∩)O~

472
来自专栏安智客

Android8.0中CTS测试对TEE的要求(Google 9月1日文档)

我们知道TEE在Google Android7.0后成为一种强制性要求,那么Android8.0又是如何要求的呢? 我们来看在9.1日Google最新的文档。 ...

2576
来自专栏非著名程序员

GitHub 将为使用有漏洞开源库的开发者提供警告信息

众所周知,现在开发软件已经变得不难,因为现在软件项目通常使用大量的依赖库。开发者虽然非常容易开发项目,简单而又方便了,但是一旦上游库有 Bug 将会影响到下游软...

1976

扫码关注云+社区