智能云上手指南:如何使用万象优图服务的 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 条评论
登录 后参与评论

相关文章

来自专栏生信宝典

Bookdown文档生成教程

bookdown是一款及其方便的编写技术文档或教材的工具,语法简洁,数据处理灵活。支持Rmarkdown或普通markdown通过pandoc软件转换为HTML...

2325
来自专栏Python

Django admin 一些有用的设置

Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理数据。后台管理可以在各个app的admin.py文件中进行控制。以下是我最近摸索总结...

3207
来自专栏大数据文摘

手把手 | 范例+代码:一文带你上手Python网页抓取神器BeautifulSoup库

1653
来自专栏苍云横渡学习笔记

【第六部分-django博客从搭建到部署】一个完整Django入门指南

【学习目录】 【第一部分-django博客从搭建到部署】一个完整的Django入门指南学习笔记 【第二部分-django博客从搭建到部署】一个完整的Django...

3836
来自专栏黄Java的地盘

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

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

632
来自专栏跟着阿笨一起玩NET

使用FileSystemWatcher监视文件变化

本文转载:http://www.cnblogs.com/zanxiaofeng/archive/2011/01/08/1930583.html

251
来自专栏各种机器学习基础算法

如何通过jq和php实现返回父级页面(附带记忆功能)

在开发项目的时候,往往会有一些父级页面,例如这样: ? 点击即可返回上一层目录,可是这样是返回到父级页面的首页,我们原本的操作记录清空了(比如说我们翻到第3页博...

2796
来自专栏影子

Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享

34815
来自专栏葡萄城控件技术团队

Wijmo 更优美的jQuery UI部件集:C1 Wijmo Grids 更多惊喜

本文中,我将给大家介绍一系列非常棒的 Wijmo Grids功能。我们先以一个新的Wijmo Grids 来开始我们这次的 Wijmo Grids 之旅吧。 ?...

1907
来自专栏微信终端开发团队的专栏

XCode基本使用及调试技巧

对于初学iOS开发的同学,了解了Objective-C的基本使用后,最关心的应该是如何把OC程序运行起来。由于Xcode的基本使用比较简单,所以本文着重介绍一些...

4347

扫码关注云+社区