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

相关文章

来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.5K7
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3338
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

3030
来自专栏杨龙飞前端

scrollto 到指定位置

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

c#实现打印功能

3852
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

8908
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2956
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2787
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

5548
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

7416

扫码关注云+社区