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

相关文章

来自专栏python3

bs4爬虫实战二:获取双色球中奖信息

访问双色球网站:http://www.zhcw.com/ssq/kaijiangshuju/index.shtml?type=0

712
来自专栏Android开发经验

微信小程序学习一初探“小程序”结语

792
来自专栏面朝大海春暖花开

前端小零碎

当进行事件绑定的时候可以直接obj.onclick=function(){}进行操作。当是进行for循环进行事件绑定就会出现问题,只会监听到最后数组最后的数据。

812
来自专栏ASP.NETCore

.NET Core中使用Razor模板引擎

 在MVC以外的场景中,我们往往需要完成一些模板引擎生成代码或页面的工作;在以前我们一般常用的有Razor、NVeocity、VTemplate。虽然所有的模...

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

在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView

背景 在前一篇文章《【初学者指南】在ASP.NET MVC 5中创建GridView》中,我们学习了如何在 ASP.NET MVC 中实现 GridView,类...

2078
来自专栏腾讯NEXT学位

《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

1222
来自专栏IMWeb前端团队

浏览器中的ECMAScript模块(译)

本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 原文:https://jakearchibald.com/20...

1958
来自专栏听雨堂

【3】利用Word模板生成文档的总结

阅读目录 Word二次开发概况 使用DsoFramer进行开发 使用Interop进行开发 打开、关闭和写入操作 批量替换文本 遍历段落替换文本 查找后逐个替换...

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

ActiveReports 报表应用教程 (8)---交互式报表之动态过滤

用户可以使用葡萄城ActiveReports报表参数 (Parameters)集合把数据提供给报表中的文本框或图表,也可以选择数据的一个子集显示到报表的特定区域...

1628
来自专栏dotnet core相关

WCF 入门 (21)

其实不太了解为什么第21集才讲这个Binding,下面都是一些概念性的东西,不过作为一个入门视频,了解一下也无妨吧。

725

扫码关注云+社区