编辑: sunny爹 | 2019-08-03 |
【商标声明】 及其它腾讯云服务相关的商标均为腾讯云计算(北京)有限责任公司及其关联公司所有.本文档涉及的第三方主体 的商标,依法由权利人所有. 【服务声明】 本文档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整.您 所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除非双方另有约定,否则, 腾讯云对本文档内容不做任何明示或模式的承诺或保证. 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第3 共29页 文档目录 API 文档 图片标签 API 鉴权签名 错误码说明 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第4 共29页 接口描述 接口请求域名: https://recognition.image.myqcloud.com/v1/detection/imagetag_detect 本接口(imagetag_detect)用于识别图片内容信息,并以标签的形式显示. 请求头 header 所有请求都要求含有以下头部信息: 参数名 必选 值 描述 host 是recognition.image.myqcloud.com 腾讯云图片标签服务器域名. content- length 否 包体总长度 整个请求包体内容的总长度,单位:字节 (Byte). content-type 是application/json 或multipart/form-data 根据不同接口选择: 1. 使用图片 url,选择 application/json. 2. 使用图片文件,选择 multipart/form- data. authorization 是 鉴权签名 多次有效签名,用于鉴权,生成方式见 鉴 权签名方法. API 文档 图片标签 API 最近更新时间:2019-04-25 18:45:59 注意: 本接口支持 HTTPS 协议,如果您现在使用的是 HTTP 协议,为了保障您的数据安全,请切换至 HTTPS. 注意: 如果选择 multipart/form-data,请使用 HTTP 框架/库推荐的方式,设置请求的 contenttype,不推荐直接 调用 setheader 等方法进行设置,否则可能导致由于 boundary 缺失引起的请求失败. 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第5 共29页 输入参数 参数名 必选 类型 说明 appid 是String 接入项目的唯一标识,可在 账号信息 或云API 密钥 中查看. image 否String 图像 Base64 编码,图像格式为 JPG/PNG/BMP 其中之一. url 否String 可下载的图片 url.如果 url 和image 都提供,仅使用 url. 输出参数 字段 类型 说明 code Int 错误码,0为成功. message String 服务器返回的信息. tags ImageTag 图像的分类标签列表,具体内容如下表. 其中 ImageTag 具体内容为: 字段 类型 说明 tag_name String 返回的图像标签名字. tag_confidence Int 图像标签的置信度,取值范围[0, 100],数值越大置信度越高. 示例 输入示例 POST /v1/detection/imagetag_detect HTTP/1.1 Host: recognition.image.myqcloud.com Content-Type: application/json authorization: WrE/BkJAorkCm0gg3/GKdVttlqVhPTEyNTcyMzc1MTEmaz1BS0lEZVE0WnN5b2I3MHl3b 0Y4aWpaRGo1SUo4YnpCSGZ1UWsmZT0xNTUwOTEzMTkwJnQ9MTU0ODMyMTE5MCZyPTE4MDQyO DkzODM= cache-control: no-cache { 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第6 共29页 appid :
1234567890 , image : 图片的base64 } 输出示例 { code : 0, message : success , tags : [ { tag_name : 大头照 , tag_confidence :
18 }, { tag_name : 女孩 , tag_confidence :
65 }, { tag_name : 海报 , tag_confidence :
12 } ] } 错误码 错误码 含义
3 错误的请求;
其中 message:account abnormal,errorno is:2 为账号欠费停服
4 签名为空
5 签名串错误
6 APPID/存储桶/url 不匹配
7 签名编码失败(内部错误)
8 签名解码失败(内部错误)
9 签名过期 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第7 共29页 错误码 含义
10 APPID 不存在
11 SecretId 不存在
12 APPID 不匹配
13 重放攻击
14 签名失败
15 操作太频繁,触发频控
16 内部错误
17 未知错误
200 内部打包失败
201 内部解包失败
202 内部链接失败
203 内部处理超时 -1300 图片为空 -1308 url 图片下载失败 -1400 非法的图片格式 -1403 图片下载失败 -1404 图片无法识别 -1505 url 格式不对 -1506 图片下载超时 -1507 无法访问 url 对应的图片服务器 -5062 url 对应的图片已被标注为不良图片,无法访问(专指存储于腾讯云的图片) 更多其他 API 错误码请查看 错误码说明 . 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第8 共29页 签名与鉴权 智能图像识别服务通过签名来验证请求的合法性.开发者将签名授权给客户端,使其具备上传下载及管理指定资源 的能力. 签名分为两种: 多次有效签名:签名中绑定或者不绑定文件 fileid,需要设置大于当前时间的有效期,最长可设置三个月,在此期 间内签名可多次使用. 单次有效签名:签名中绑定文件 fileid,有效期必须设置为 0,此签名只可使用一次,且只能应用于被绑定的文 件. 具体应用参见 签名适用场景. 签名算法 获取签名所需信息 生成签名所需信息必须使用主账号的,包括 APPID、Secret ID 和Secret Key. 注意: 如果您已使用过API 密钥,或在2018年4月1日后接入智能图像服务,请使用 API 密钥 . 如果您已使用过
100、101等开头的项目ID,可以继续使用 项目密钥,但建议使用API 密钥,2018年4月1 日后创建的项目ID,不再支持使用项目密钥. 目前仅支持使用主账号的 Secret ID 和Secret Key,暂不支持子账号的使用,计划后续实现. 拼接签名串 拼接多次有效签名串: a=[appid]&
b=[bucket]&
k=[SecretID]&
e=[expiredTime]&
t=[currentTime]&
r=[rand]&
f=[fileid] 拼接单次有效签名串: a=[appid]&
b=[bucket]&
k=[SecretID]&
e=[expiredTime]&
t=[currentTime]&
r=[rand]&
f=[fileid] 鉴权签名 最近更新时间:2019-04-01 20:04:35 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第9 共29页 注意: 多次有效签名串中 fileid 为可选参数. fileid 为空,表示不绑定资源,例如上传签名和下载签名. fileid 不为空,表示绑定资源,例如绑定资源的下载. 签名串中各字段含义如下: 字段 解释 a 开发者的 APPID,接入智能图像时由系统生成. b Bucket,图片资源的组织管理单元,历史遗留字段,可不填. k Secret ID. e 签名的有效期,是一个符合 UNIX Epoch 时间戳规范的数值,单位为秒;
单次签名时,e 必须设置为 0. t 当前时间戳,是一个符合 UNIX Epoch 时间戳规范的数值,单位为秒,多次签名时,e 应大于 t. r 随机串,无符号
10 进制整数,用户需自行生成,最长
10 位. f 资源存储的唯一标识,单次签名必填;
多次签名选填,如填写则会验证与当前操作的文件路径是否一 致. 注意: 拼接单次有效签名串时,有效期e必须设置为 0,以保证此签名只能针对固定资源使用一次. 删除和复制文件必须使用单次有效签名,上传必须使用多次有效签名. 具体应用参见 签名适用场景. 生成签名 1. 使用 HMAC-SHA1 算法对请求进行加密(SHA1算法加密后的输出必须是原始的二进制数据,否则签名失败). 2. 对orignal 使用 HMAC-SHA1 算法进行签名,然后将 orignal 附加到签名结果的末尾,再进行 Base64 编码,得 到最终的 sign. 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第10 共29页3. 生成签名的公式如下: SignTmp = HMAC-SHA1(SecretKey, orignal) Sign = Base64(SignTmp.orignal) 注意: 此处使用的是标准的 Base64 编码,不是 urlsafe 的Base64 编码. SecretKey 为API 密钥,orignal 为 拼接签名串 节中拼接好的签名串. PHP 签名示例 本节介绍生成签名的算法实例,实例中使用 PHP 语言,如果开发者使用其他与开发,请使用对应的算法. 获取签名所需信息 获取得到的签名所需信息如下: APPID:YOUR APPID_ID Bucket:tencentyun(可不填) Secret ID: YOUR SECRET_ID Secret Key: YOUR SECRET_KEY 拼接签名串 $appid = YOUR APPID_ID ;
$bucket = tencentyun ;
$secret_id = YOUR SECRET_ID ;
$secret_key = YOUR SECRET_KEY ;
$expired = time() + 2592000;
$onceExpired = 0;
$current = time();
$rdm = rand();
$userid =
0 ;
$fileid = tencentyunSignTest ;
$srcStr = '
a='
.$appid.'
&
b='
.$bucket.'
&
k='
.$secret_id.'
&
e='
.$expired.'
&
t='
.$current.'
&
r='
.$rdm.'
&
f='
;
$srcWithFile = '
a='
.$appid.'
&
b='
.$bucket.'
&
k='
.$secret_id.'
&
e='
.$expired.'
&
t='
.$current.'
&
r='
.$rdm.'
&
f='
.$fileid;
$srcStrOnce= '
a='
.$appid.'
&
b='
.$bucket.'
&
k='
.$secret_id.'
&
e='
.$onceExpired .'
&
t='
.$current.'
&
r='
.$rd 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第11 共29页m.'
&
f='
.$fileid;
生成签名 SHA1 算法加密后的输出必须是原始的二进制数据,否则签名失败: $signStr = base64_encode(hash_hmac('
SHA1'
, $srcStr, $secret_key, true).$srcStr);
$srcWithFile = base64_encode(hash_hmac('
SHA1'
, $srcWithFile , $secret_key, true).$srcWithFile );
$signStrOnce = base64_encode(hash_hmac('
SHA1'
,$srcStrOnce,$secret_key, true).$srcStrOnce);
echo $signStr. n ;
echo $srcWithFile . n ;
echo $signStrOnce. n ;
JAVA 签名示例 /* * Copyright 2017, Tencent Inc * All rights reserved. * * Created on 2017年9月12日*/ package sign;
import java.util.Base64;
import java.util.Random;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class Sign { /** * 生成 Authorization 签名字段 * * @param appId * @param secretId 图片标签 版权所有:腾讯云计算(北京)有限责任公司 第12 共29页*@param secretKey * @param bucketName * @param expired * @return * @throws Exception */ public static String appSign(long appId, String secretId, String secretKey, String bucketName, long expired) throws Exception { long now = System.currentTimeMillis() / 1000;
int rdm = Math.abs(new Random().nextInt());
........