智能云上手指南:如何使用万象优图服务的 Python SDK

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

本文将为广大云开发者介绍如何使用万象优图服务的 Python SDK。

1、开发准备

在使用万象优图服务的 python sdk 前,你需要先下载 python sdk,下载地址:github地址

1.1 前期准备

获取项目ID(appid),bucket,secret_id和secret_key;

1.2 获取SDK方法

  • pip获取:

在开发环境命令行直接执行下面的命令即可导入 python-sdk 包。

pip install tencentyun

然后,参考api说明和sdk中提供的sample,开发代码即可。sample对应v1版本的restful api, samplev2对应v2版本的restful api。

  • 直接下载源码集成:

您也可以直接下载github上提供的源代码,集成到您的开发环境即可(依赖requests)。

2、 API详细说明

2.1 生成签名

1.接口说明

签名生成方法,可以在服务端生成签名,供移动端app使用。

其中签名分为2种: 多次有效签名(有一定的有效时间) 单次有效签名(绑定资源url,只能生效一次) 签名的详细描述及使用场景参见鉴权服务技术方案

2. 方法

签名函数会自动根据传入的URL,进行不同方式的签名,这里对使用者是透明的。

V2加强版的签名:

def get_app_sign_v2(bucket, fileid, expired)

V2版本的签名:

def app_sign_v2(self, url, expired=0)

V1版本的签名:

def app_sign(self, url, expired=0)

3. 参数和返回值

参数说明:

参数名

类型

必须

默认值

参数描述

url

String

需要操作的url

expired

Int

签名过期时间戳

返回值:

参数名

类型

参数描述

httpcode

Int

http响应码,请求正常时为200

code

Int

API 错误码,成功时为0

message

String

API错误信息

data

Array

API 返回数据

data.sign

String

签名串

示例代码:

# 生成私密下载url
auth = tencentyun.Auth(secret_id,secret_key)
expired = int(time.time()) + 999
sign = auth.get_app_sign_v2(bucket, fileid, expired)
download_url = statRet['data']['download_url']
print 'download_url:', download_url + '?sign=' + sign

# 生成上传签名
fileid = 'sample'+str(int(time.time()))
expired = int(time.time()) + 999
sign = auth.get_app_sign_v2(bucket, fileid, expired)
print fileid, sign

2.2 图片上传

1. 接口说明

用于图片的上传,调用者可以通过此接口上传图片并获得图片的url和唯一标识fileid(用于调用其他api)。

2. 方法

def upload(self, filepath, bucket, fileid='', userid='0', magic_context='', params={})
def upload_binary(self, file_binary, bucket, fileid = '', userid = '0', magic_context = '', params = {})

3. 参数和返回值

参数说明:

参数名

类型

必须

默认值

参数描述

filePath

String

本地图片文件路径

file_binary

String

base64编码后的字符串数据

bucket

String

空间名称

fileid

String

用户自定义文件名

userid

String

0

开发者的账号体系的userid, 如果没有,请使用默认值0

magicContext

String

上传成功后,用户自定义的回调参数

params

array

空数组

可选处理项,目前支持params[‘get’] => array() 用于指定上传是url中携带的get请求参数

返回值:

参数名

类型

参数描述

httpcode

Int

http响应码,请求正常时为200

code

Int

API 错误码,成功时为0

message

String

API错误信息

data

Dict

API 返回数据

data.url

String

图片的管理URL

data.downloadUrl

String

图片的下载和访问URL

data.fileid

String

图片的唯一ID

data.info.0.0.width

int

图片宽度

data.info.0.0.height

int

图片高度

示例代码:

image = tencentyun.ImageV2(appid,secret_id,secret_key)
  obj = image.upload('/tmp/amazon.jpg', bucket, fileid);
  print obj

2.3 图片复制

1. 接口说明

用于图片的复制,调用者可以通过此接口复制已经上传的图片并获得新图片的url和唯一标识fileid(用于调用其他api)。

2. 方法

def copy(self, bucket, fileid, userid='0')

3. 参数和返回值

参数说明:

参数名

类型

必须

默认值

参数描述

bucket

String

空间名称

fileid

String

图片唯一ID

userid

String

0 开发者的账号

体系的userid, 如果没有,请使用默认值0

返回值:

参数名

类型

参数描述

httpcode

Int

http响应码,请求正常时为200

code

Int

API 错误码,成功时为0

message

String

API错误信息

data

Dict

API 返回数据

data.downloadUrl

String

图片的下载和访问URL

data.url

String

管理url

示例代码:

// 复制
  copyRet = image.copy(bucket, fileid)
  download_url = copyRet['data']['download_url']
  print copyRet

2.4 图片查询

1. 接口说明

用于图片的查询,调用者可以通过此接口查询已经上传的图片并获得图片的各种参数信息。

2. 方法

def stat(self, bucket, fileid, userid='0')

3. 参数和返回值

参数说明:

参数名

类型

必须

默认值

参数描述

bucket

String

空间名称

fileid

String

图片唯一ID

userid

String

0

开发者的账号体系的userid, 如果没有,请使用默认值0

返回值:

参数名

类型

参数描述

httpcode

Int

http响应码,请求正常时为200

code

Int

API 错误码,成功时为0

message

String

API错误信息

data

Dict

API 返回数据

data.downloadUrl

String

图片的下载和访问URL

data.url

String

管理url

data.fileid

String

图片的唯一ID

data.upload_time

String

图片的上传时间

data.size

String

图片的大小(Bytes)

data.md5

String

图片的md5值

data.md5

String

图片的md5值

data.width

String

图片的宽度(pixels)

data.height

String

图片的高度(pixels)

示例代码:

 // 查询管理信息
  statRet = image.stat(bucket, fileid)

2.5 图片删除

1. 接口说明

用于图片的删除,调用者可以通过此接口删除已经上传的图片。

2. 方法

def delete(self, bucket, fileid, userid='0')

3. 参数和返回值

参数说明:

参数名

类型

必须

默认值

参数描述

bucket

String

空间名称

fileid

String

图片唯一ID

userid

String

0

开发者的账号体系的userid, 如果没有,请使用默认值0

返回值:

参数名

类型

参数描述

httpcode

Int

http响应码,请求正常时为200

code

Int

API 错误码,成功时为0

message

String

API错误信息

data

Dict

空字典

示例代码:

print image.delete(bucket, fileid)

2.6 图片下载

图片的下载直接使用图片下载url进行下载,

请求示例:

GET test0706-10000037.image.myqcloud.com/tencentyunRestfulAPITest HTTP/1.1
Host: test0706-10000037.image.myqcloud.com

如果在控制台上面设置了空间样式或者样式下载别名,并且设置了样式分隔符,则访问样式图片的方式如下:

download_url+样式分隔符+样式名。

注:空间样式和样式下载别名的名字统称样式名。 例如设置了样式名“160x160.jpeg”,样式分隔符“/”,则样式图片的访问方式如下:

GET v2test-10000812.image.myqcloud.com/tencentyunRestfulAPITest/160x160.jpeg HTTP/1.1
Host: v2test-10000812.image.myqcloud.com/

若开启了token防盗链,图片下载只能是私密下载,即必须download_url +?sign=[签名]。 请求示例:

GET http://test0706-10000037.image.myqcloud.com/951b0e3b-db35-40e2-8c31-ed38dab5ae69?sign=Ea5aPdBMeVm5O
T332nSYh1nqyJhhPTEwMDAwMDM3JmI9dGVzdDA3MDYmaz1BS0lEcG9LQmZNSzdhWWNZTmxxeG5FdFlBMWFqQXFqaTJQN1QmZT0xNDQy
MjE0NzMwJnQ9MTQ0MTg1NDczMCZyPTE0NDE4NTQ3MzAmdT0wJmY9 HTTP/1.1
Host: test0706-10000037.image.myqcloud.com

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

webStorm 3.0配置使用主题背景色等

http://www.cnblogs.com/jikey/archive/2012/01/16/2323590.html

1401
来自专栏Danny的专栏

【MyEclipse】——MyEclipse设置注释模板

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1153
来自专栏我的博客

安卓开发遇到的奇葩问题

第一个问题:R cannot be resolved to a variable 来自网络: Android开发过程中,碰到R cannot be resolv...

3206
来自专栏mathor

配置404、Error页面以及其他常用技巧

 假设你jsp项目里java代码片出现某些问题,产生异常等等之类的,网页总是显示一堆英文提示,那你就等着电话被客户打爆吧......开玩笑的,举个简单的例子,你...

1331
来自专栏Aloys的开发之路

Linux乱码问题解决方案

linux系统中文件名内容为urf8编码, windows系统中文件名默认为gbk编码, 多数文档使用gbk编码,系统采用utf8编码 无中文输入法导致的乱码 ...

3578
来自专栏编程直播室

使用Ionic2开发Todo应用0 开始之前1 创建新的Ionic 2工程2. 设置主页(Home page)3 持久化数据保存4 总结

2515
来自专栏黄Java的地盘

提高开发效率之VS Code基础配置篇

VS Code可以通过名为代码片段的功能像编辑器中插入一段指定的文本,具体操作步骤为首选项->用户代码片段->新建全局代码片段。

2232
来自专栏猫哥学前班

99%的程序都没有考虑的网络异常

绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中。

3558
来自专栏编程

14个你可能不知道的JavaScript调试技巧

问题:我怎么才能收到你们公众号平台的推送文章呢? ? 熟悉工具可以让工具在工作中发挥出更大的作用。尽管江湖传言 JavaScript 很难调试,但如果你掌握了几...

1989
来自专栏Spring相关

nodejs的事件处理机制以及事件环机制

ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是Common...

691

扫码关注云+社区