*温馨提示:*
*1,app_key为接口调用有效凭证,为确保安全,请将接口请求放置于自己的服务器上进行,并注意不要泄露。*
*2,当接口调用剩余次数在20000,5000,2000,1000,500,100次的时候,邮箱和注册的手机号会收到充值提醒。*
*3, 若返回的结果里存在result,则表内后续数据为result对象内的数据,即:result:{column1:...,...}*
*4, 为方便查阅,以下列出常见响应状态码,非 2XX 状态码的提示字段为“error”:*
状态码 | 描述 | 解决方案 |
---|---|---|
200 | 请求成功 | |
400 | 规格不存在(或者请求错误) | 输入已有规格(检查json格式) |
401 | app_key不存在 | 输入已申请的正确app_key |
403 | 身份验证不通过 | 检查secret_key是否正确 |
412 | app类型不正确 | 输入已申请的对应类型的app_key |
417 | 已达到最大调用次数 | 购买调用次数 |
422 | 缺少对应的参数 | 检查上传的参数中缺少的对应项 |
506 | 上传的base64数据不是图片 | |
507 | 算法制作照片失败 | 查看错误信息或联系开发人员 |
*5, 除环境检测接口外,其他接口的 file 都可传图片的云端路径,云端路径不是外链!*
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/env_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
证件照环境检测,此接口多用于调用制作照片的接口之前,用于预检测
调用此接口不会增加已调用次数
对应的app_key应用类型必须为证件照环境检测
本接口环境检测采用设定阈值的方式,通过参数传过来的阈值,与算法检测出来的各项对应值比较,得到通过与否的结果(共7个检测项)。设定的阈值越大检测越不严格,越容易通过;阈值越小检测越严格,越不容易通过。
比如facepose检测项用户传过来阈值为 20,检测结果为 30,则该检测项不通过,如果想要放宽facepose此检测项的要求,可以调整阈值,将上传的阈值改为 40,则此检测项即为通过(用户看不到算法检测出来的各项对应值)。
用户可以根据自己需求不断调整传送的阈值,建议阈值依次顺序为40,40,35,20,50,50,60
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file | true | string | 图片的base64数据 |
app_key | true | string | 已申请的app_key |
facepose | true | string/ number | 人脸是正对镜头(姿态) 阈值 |
eyegaze | true | string/ number | 视线是否正常 阈值 |
eyeskew | true | string/ number | 眼睛是否歪斜(双眼连线不水平) 阈值 |
shoulderskew | true | string/ number | 肩膀是否水平正对镜头 阈值 |
darkillum | true | string/ number | 照片光照是否昏暗 阈值 |
unbalanceillum | true | string/ number | 人脸是否为阴阳脸 阈值 |
bfsimilarity | true | string/ number | 衣服和背景颜色是否相似 阈值 |
响应格式:
参数名称 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
code | number | 200 | 状态码 |
msg | number | SUCCESS | 接口调用信息 |
total_result | number | 1 | 检测结果汇总,各检测项中有一项未通过则为0,全部通过则为1 |
*result* | object | 各个参数的检查结果:1代表通过,0代表未通过 | |
facepose | number | 1 | 人脸是正对镜头(姿态) |
eyegaze | number | 1 | 视线是否正常 |
eyeskew | number | 1 | 眼睛是否歪斜(双眼连线不水平) |
shoulderskew | number | 1 | 肩膀是否水平正对镜头 |
darkillum | number | 1 | 照片光照是否昏暗 |
unbalanceillum | number | 1 | 人脸是否为阴阳脸 |
bfsimilarity | number | 1 | 衣服和背景颜色是否相似 |
示例:
ximport requests, json, base64
url = "http://apicall.id-photo-verify.com/api/env_pic"
with open('test.png', 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"app_key": "13c1815dbca2413c2db75b5ac50349f4e1dd9786",
"file": base64.b64encode(pic).decode(),
# 下列项可以改为需要的阈值
'facepose': "40", # 人脸是正对镜头(姿态)
'eyegaze': "40", # 视线是否正常
'eyeskew': "35", # 眼睛是否歪斜(双眼连线不水平)
'shoulderskew': "20", # 肩膀是否水平正对镜头
'darkillum': "50", # 照片光照是否昏暗
'unbalanceillum': "50", # 人脸是否为阴阳脸
'bfsimilarity': "60", # 衣服和背景颜色是否相似
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
返回数据示例:
xxxxxxxxxx
{
"code": 200,
"msg": "SUCCESS",
"result": {
"bfsimilarity": 0,
"darkillum": 1,
"eyegaze": 1,
"eyeskew": 1,
"facepose": 1,
"shoulderskew": 1,
"unbalanceillum": 1
},
"total_result": 0
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/cut_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
制作证件照,推荐使用制作并检测接口
调用此接口不会增加已调用次数
结果返回带水印图片,无水印图片和无水印已排版图片名字(均为多种颜色)
带水印图片存储时间为 1 天,无水印图片存储时间为 7 天
通过名字获取带水印图片不会增加已调用次数
(通过获取图片的api获取无水印图片或无水印已排版图片会增加 1 次调用次数)
官网上对应的app_key应用类型必须为证件照制作
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file | true | string | 图片的base64数据,或者图片在oss的key(见第十三个接口) |
spec_id | true | string | 已有的规格ID |
app_key | true | string | 已申请的app_key |
is_fair | false | int | 是否美颜,0代表不美颜,1代表美颜,默认为美颜 |
fair_level | false | int | 美颜等级, |
original | false | int | 程序会按照px = mm/25.4*original去设定照片的像素大小 |
face_width_min | false | string/int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最小比例 |
face_width_max | false | string/int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最大比例 |
*print_type | false | int | 排版类型,1表示默认(一寸8张),2表示紧凑型(一寸10张) |
响应格式:
参数名称 | 是否必须 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
code | true | number | 200 | 状态码 |
result | true | object | ||
file_name_wm | true | list | ["56cf9c38d9a111e7a0a300163e06132ablue2_wm", "56cf9c39d9a111e7a0a300163e06132awhite2_wm", "56cf9c3ad9a111e7a0a300163e06132ared2_wm", "579b75b0d9a111e7a0a300163e06132ablue22_wm", "579b75b1d9a111e7a0a300163e06132agrey2_wm", "579b75b2d9a111e7a0a300163e06132ablue32_wm"] | 带水印图片名字,包括多种可选颜色 |
file_name_print_wm | true | list | ["56cf9c38d9a111e7a0a300163e06132ablue2_print_wm", "56cf9c39d9a111e7a0a300163e06132awhite2_print_wm", "56cf9c3ad9a111e7a0a300163e06132ared2_print_wm", "579b75b0d9a111e7a0a300163e06132ablue22_print_wm", "579b75b1d9a111e7a0a300163e06132agrey2_print_wm", "579b75b2d9a111e7a0a300163e06132ablue32_print_wm"] | 带水印排版图片名字,包括多种可选颜色 |
file_name | true | list | ["56cf9c38d9a111e7a0a300163e06132a68798blue2", "56cf9c39d9a111e7a0a300163e06132a65760white2", "56cf9c3ad9a111e7a0a300163e06132a03509red2", "579b75b0d9a111e7a0a300163e06132a71632blue22", "579b75b1d9a111e7a0a300163e06132a38271grey2", "579b75b2d9a111e7a0a300163e06132a81312blue32"] | 无水印图片名字,包括多种可选颜色 |
file_name_print | true | list | ["56cf9c38d9a111e7a0a300163e06132a68798blue2_print", "56cf9c39d9a111e7a0a300163e06132a65760white2_print", "56cf9c3ad9a111e7a0a300163e06132a03509red2_print", "579b75b0d9a111e7a0a300163e06132a71632blue22_print", "579b75b1d9a111e7a0a300163e06132a38271grey2_print", "579b75b2d9a111e7a0a300163e06132a81312blue32_print"] | 无水印排版图片名字,包括多种可选颜色 |
is_print | true | number | 1 | 有无排版 |
size | true | list | [295, 413] | 图片尺寸 |
size_print | true | list | [1795, 1205] | 排版后图片尺寸 |
one_sheet_num | true | number | 8 | 排版的照片数量 |
img_wm_url_list | true | list | ["https://...",...], | 带水印单张照url列表 |
print_wm_url_list | true | list | ["https://...",...], | 带水印排版照url列表 |
注:名称列表和url列表内颜色顺序一一对应,url链接有效期为1个小时。
示例:
xxxxxxxxxx
import requests, json, base64
url = "http://apicall.id-photo-verify.com/api/cut_pic"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 391, # 规格ID
"app_key": "对应的app_key",
"file": base64.b64encode(pic).decode(),
# 可选参数还有: is_fair int 是否美颜 0 or 1,默认 1
# fair_level int ~~美颜等级1~5~~,传其他数字默认是1,只有is_fair是1才生效
# original int 程序会按照px = mm/25.4*original去设定照片的像素大小
# face_width_min string/int 人脸脸颊宽度(不包含耳朵)与照片宽度的最小比例
# face_width_max string/int 人脸脸颊宽度(不包含耳朵)与照片宽度的最大比例
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
:
xxxxxxxxxx
{
"code": 200,
"result": {
"file_name": [
"1dfea61a967811ea9cf900163e0070b651966blue2",
"1dfea61a967811ea9cf900163e0070b645912white2",
"1dfea61a967811ea9cf900163e0070b636201red2",
"1dfea61a967811ea9cf900163e0070b660723blue22",
"1dfea61a967811ea9cf900163e0070b610453grey2",
"1dfea61a967811ea9cf900163e0070b610308blue32"
],
"file_name_print": [
"1dfea61a967811ea9cf900163e0070b651966blue2_print",
"1dfea61a967811ea9cf900163e0070b645912white2_print",
"1dfea61a967811ea9cf900163e0070b636201red2_print",
"1dfea61a967811ea9cf900163e0070b660723blue22_print",
"1dfea61a967811ea9cf900163e0070b610453grey2_print",
"1dfea61a967811ea9cf900163e0070b610308blue32_print"
],
"file_name_print_wm": [
"1dfea61a967811ea9cf900163e0070b6blue2_print_wm",
"1dfea61a967811ea9cf900163e0070b6white2_print_wm",
"1dfea61a967811ea9cf900163e0070b6red2_print_wm",
"1dfea61a967811ea9cf900163e0070b6blue22_print_wm",
"1dfea61a967811ea9cf900163e0070b6grey2_print_wm",
"1dfea61a967811ea9cf900163e0070b6blue32_print_wm"
],
"file_name_wm": [
"1dfea61a967811ea9cf900163e0070b6blue2_wm",
"1dfea61a967811ea9cf900163e0070b6white2_wm",
"1dfea61a967811ea9cf900163e0070b6red2_wm",
"1dfea61a967811ea9cf900163e0070b6blue22_wm",
"1dfea61a967811ea9cf900163e0070b6grey2_wm",
"1dfea61a967811ea9cf900163e0070b6blue32_wm"
],
"img_wm_url_list": ["https://...","..."],
"is_print": 1,
"one_sheet_num": 8,
"print_wm_url_list": ["https://...","..."],
"size": [
260,
378
],
"size_print": [
1795,
1205
]
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/check_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
检测证件照是否合格
调用此接口增加 1 次已调用次数
官网上对应的app_key应用类型必须为证件照检测
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file | true | string | 图片的base64数据,或者图片在oss的key(见第十三个接口) |
app_key | true | string | 已申请的app_key |
spec_id | true | string | 已有的规格ID |
响应格式(随着传入的spec_id的不同,响应数据的种类会有一些变化,未出现的字段可在下一个api内查找):
参数名称 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
code | number | 200 | 状态码 |
check_result | number | 1 | 检测结果汇总,各检测项中有一项未通过则为0,全部通过则为1 |
all_check_result | obj | {...} | 各检测项详细数值 |
result | object | 各个参数的检查结果:1代表通过,0代表未通过 | |
background_color | number | 1 | 背景色 |
bg_shadow | number | 1 | 背景阴影 |
chin_bottom | number | 1 | 下巴距图像下边缘 |
clothes_similar | number | 1 | 服装相似度 |
eye_space | number | 1 | 眼部距离 |
eyes_center_left | number | 1 | 双眼中心距图像左边缘 |
eyes_close | number | 1 | 闭眼程度 |
eyes_nature | number | 1 | 视线 |
eyes_space_bottom | number | 1 | 双眼中心距图像下边缘 |
face_blur | number | 1 | 模糊 |
face_center | number | 1 | 脸部居中 |
number | 1 | ||
face_expression | number | 1 | 脸部表情 |
face_noise | number | 1 | 脸部噪音 |
face_unbalance | number | 1 | 阴阳脸 |
facial_pose | number | 1 | 脸部姿态 |
facial_shelter | number | 1 | 脸部遮挡 |
facial_width | number | 1 | 脸部宽度 |
file_size | number | 1 | 文件大小 |
glasses | number | 1 | 眼镜样式 |
glasses_glare | number | 1 | 眼镜反光 |
hairline_top | number | 1 | 头顶发际线 |
head_length | number | 1 | 头部长度 |
head_occupy | number | 1 | 头部占比 |
left_right_empty | number | 1 | 左右是否各空 |
mouse_nature | number | 1 | 嘴巴自然 |
name | string | 英语四六级考试 | 规格名字 |
photo_format | number | 1 | 文件类型 |
ppi | number | 1 | 检测ppi |
px_and_mm | number | 1 | 像素和毫米大小 |
shoulder_equal | number | 1 | 肩膀自然 |
sight_line | number | 1 | 视线水平 |
pn_neck_shadow_exist | number | 1 | 脖子阴影 |
spec_id | number | 23 | 规格ID |
示例:
xxxxxxxxxx
import requests, json, base64
url = "http://apicall.id-photo-verify.com/api/check_pic"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 391,
"app_key": "您申请的app_key",
"file": base64.b64encode(pic).decode()
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
返回数据示例:
xxxxxxxxxx
{
"check_result": 0,
"code": 200,
"result": {
"background_color": 0,
"clothes_similar": 1,
"eyes_close": 1,
"face_blur": 1,
"face_center": 1,
"face_noise": 1,
"facial_pose": 1,
"headpose_pitch": 1,
"headpose_roll": 1,
"headpose_yaw": 1,
"name": "简历照片(一寸)",
"photo_format": 0,
"px_and_mm": 0,
"shoulder_equal": 1,
"sight_line": 1,
"spec_id": 391
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/cut_check_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
制作并检测证件照
调用此接口,不会增加调用次数
此接口的程序会先制作证件照,然后对证件照进行检测,
结果返回带水印图片、无水印图片、无水印已排版图片名字(均为多种颜色)和检测的结果。
带水印图片存储时间为 1 天,无水印图片存储时间为 7 天
通过名字获取带水印图片不会增加已调用次数
(通过获取图片的api获取无水印图片或无水印已排版图片会增加 1 次调用次数)
请求参数中“必须”项为false的,可以不用传递。如果传递自定义值,将会使用用户自定义阈值处理照片,阈值越高越容易检测通过,不传的话默认使用已经定义好的阈值处理。
官网上对应的app_key应用类型必须为证件照检测与制作
请求格式:
参数名称 | 是否必须 | 类型 | 描述 | 示例值 |
---|---|---|---|---|
file | true | string | 图片的base64格式,或者图片在oss的key(见第十三个接口) | |
spec_id | true | string | 已有的规格ID | 1 |
app_key | true | string | 已申请的app_key | |
is_fair | false | int | 是否美颜,默认为美颜 | |
fair_level | false | int | 美颜等级, | 1 |
head_length_max_p | false | int | 脸部长度max | |
head_length_min_p | false | int | 脸部长度min | |
head_occupy_max_p | false | int | 脸部占比max | |
head_occupy_min_p | false | int | 脸部占比min | |
eye_space_max_p | false | int | 双眼间距max | |
eye_space_min_p | false | int | 双眼间距min | |
hairline_top_max_p | false | string | 发际线距边缘max | 300px |
hairline_top_min_p | false | string | 发际线距边缘min | 10px |
eyes_center_left_max_p | false | int | 双眼中心距图像左边缘max | |
eyes_center_left_min_p | false | int | 双眼中心距图像左边缘min | |
eyes_space_bottom_max_p | false | int | 双眼距图像下边缘max | 414 |
eyes_space_bottom_min_p | false | int | 双眼距图像下边缘min | 324 |
shoulder_occupy | false | int | 肩部占比 | |
left_right_empty | false | int | 左右各空 | |
facial_width_max_p | false | int | 脸部宽度max | 284 |
facial_width_min_p | false | int | 脸部宽度min | 180 |
width_px | false | int | 像素宽度,最大不能超过1050 | |
height_px | false | int | 像素高度,最大不能超过1500 | |
false | int | |||
false | int | |||
file_size_max | false | int | 文件大小最大值 | 40960 |
file_size_min | false | int | 文件大小最小值 | 20480 |
size_options | false | string | 尺寸说明 | |
ppi | false | int | 分辨率 | 300 |
photo_format | false | string | 照片格式 | |
bit_depth | false | int | 位深度 | 24 |
compress | false | int | 压缩比 | |
facial_pose | false | int | 人脸姿态,是人脸姿态 yaw pitch roll的集中判断见参数说明1 | 35 |
sight_line | false | int | 视线水平 | 35 |
facial_shelter | false | int | 面部无遮挡(见下方参数说明2) | |
eyes_close | false | int | 闭眼 | 50 |
eyes_nature | false | int | 视线自然 | 50 |
mouse_nature | false | int | 嘴巴自然 | 50 |
shoulder_equal | false | int | 肩膀等高 | 50 |
face_unbalance | false | int | 阴阳脸 | 50 |
glasses_glare | false | int | 眼镜反光 | |
glasses | false | int | 是否佩戴眼镜,是thin_frame_glasses、thick_black_frame_glasses、sunglasses的综合判断 | 10 |
thin_frame_glasses | false | int | 细框/无框 眼镜 | 50 |
thick_black_frame_glasses | false | int | 粗黑框眼镜 | 50 |
sunglasses | false | int | 墨镜 | 50 |
face_expression | false | int | 脸部表情 | |
face_center | false | int | 脸部居中,此参数为必检项,不受传参的影响 | 1 |
false | int | |||
face_blur | false | int | 模糊程度 | 50 |
face_noise | false | int | 噪声程度 | 20 |
face_over_kbt | false | int | 过曝光 | 60 |
bg_shadow | false | int | 背景阴影 | 60 |
clothes_similar | false | int | 服装突出 | 90 |
chin_bottom_min_p | false | int | 下巴距图像下边缘min | |
shoulder_missed | false | int | 身体完整性,是肩部完整 头部完整 下半身悬空的集中判断 | 60 |
face_width_min | false | int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最小比例 | |
face_width_max | false | int | 人脸脸颊宽度(不包含耳朵)与照片宽度的最大比例 | |
original | false | int | 程序会按照px = mm/25.4*original去设定照片的像素大小 | |
missing_shoulder | false | int | 肩部完整 | 30 |
incomplete_head | false | int | 头部完整 | 60 |
lower_body_hanging | false | int | 下半身悬空 | 30 |
headpose_yaw | false | int | 人脸姿态(见下方参数说明1) | 50 |
headpose_pitch | false | int | 人脸姿态(见下方参数说明1) | 50 |
headpose_roll | false | int | 人脸姿态(见下方参数说明1) | 50 |
face_too_dark | false | int | 照片过暗 | 60 |
face_contrast | false | int | 对比度异常 | 60 |
body_posture | false | int | 身体姿态 身子不正,自拍时斜向下,举手,手放脑后,抠鼻孔,托腮等 | 60 |
hat_threshold | false | int | 帽子检测 | 20 |
bare_shouldered | false | int | 光膀检测 | 60 |
id_exist | false | int | 手持证件照检测 | 60 |
watermark_exist | false | int | 照片有水印 | 50 |
pn_mask_exist | false | int | 照片有挂戴口罩 | 90 |
background_color | false | list | 自定义照片背景色,详见“参数说明4” | |
ratios | false | list | 自定义证件照制作比率,详见“参数说明5” | |
print_type | false | int | 排版类型,1表示默认(一寸8张),2表示紧凑型(一寸10张) | |
image_enhancement | false | int | 图像细节增强控制参数,1表示是,0表示否,默认否, 处理后图片模糊程度会有所改善 | 1 |
need_adjust_lighting | false | int | 是否需要光照处理,1表示是,0表示否,默认否, 处理后图片亮度会有所增强 | 1 |
响应格式(随着传入的spec_id的不同,响应数据的种类会有一些变化):
参数名称 | 数据类型 | 示例值 | 描述 |
---|---|---|---|
code | number | 200 | 状态码 |
result | object | ||
source_file | str | app/5f6caba546c5ec889feffa88e4fb6dc1.jpg | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
check | object | 1 | 检测结果汇总,各检测项中有一项未通过则为0,全部通过则为1 |
check_result | object | 各个参数的检查结果:1代表通过,0代表未通过 | |
background_color | number | 1 | 背景色 |
bg_shadow | number | 1 | 背景阴影 |
chin_bottom | number | 1 | 下巴距图像下边缘 |
clothes_similar | number | 1 | 服装相似度 |
eye_space | number | 1 | 眼部距离 |
eyes_center_left | number | 1 | 双眼中心距图像左边缘 |
eyes_close | number | 1 | 闭眼程度 |
eyes_nature | number | 1 | 视线 |
eyes_space_bottom | number | 1 | 双眼中心距图像下边缘 |
face_blur | number | 1 | 模糊 |
face_center | number | 1 | 脸部居中 |
number | 1 | ||
face_expression | number | 1 | 脸部表情 |
face_noise | number | 1 | 脸部噪音 |
face_unbalance | number | 1 | 阴阳脸 |
facial_pose | number | 1 | 脸部姿态 |
facial_shelter | number | 1 | 脸部遮挡 |
facial_width | number | 1 | 脸部宽度 |
file_size | number | 1 | 文件大小 |
glasses | number | 1 | 眼镜样式 |
glasses_glare | number | 1 | 眼镜反光 |
hairline_top | number | 1 | 头顶发际线 |
head_length | number | 1 | 头部长度 |
shoulder_missed | number | 1 | 肩膀完整性(包括肩膀、头部和胸部完整性) |
shoulder_equal | number | 1 | 肩膀等高 |
headpose_pitch | number | 1 | 头部姿态 |
headpose_roll | number | 1 | 头部姿态 |
headpose_yaw | number | 1 | 头部姿态 |
eyebrow_occlusion | number | 1 | 眉毛遮挡 |
eye_occlusion | number | 1 | 眼睛遮挡 |
nose_occlusion | number | 1 | 鼻子遮挡 |
mouth_occlusion | number | 1 | 嘴巴遮挡 |
cheek_occlusion | number | 1 | 脸颊遮挡 |
ear_occlusion | number | 1 | 耳朵遮挡 |
decoration_occlusion | number | 1 | 饰品遮挡 |
missing_shoulder | number | 1 | 肩膀完整性 |
incomplete_head | number | 1 | 头部完整性 |
lower_body_hanging | number | 1 | 下半身悬空 |
face_too_dark | number | 1 | 照片过暗 |
face_over_kbt | number | 1 | 过曝光 |
face_contrast | number | 1 | 对比度异常 |
body_posture | number | 1 | 身体姿态 身子不正,自拍时斜向下,举手,手放脑后,抠鼻孔,托腮等 |
hat_detection | number | 1 | 帽子检测 |
bare_shouldered | number | 1 | 光膀检测 |
id_exist | number | 1 | 手持证件照检测 |
watermark_exist | number | 1 | 照片有水印 |
pn_neck_shadow_exist | number | 1 | 脖子阴影 |
ppi | number | 1 | 分辨率 |
name | string | 图片的规格名称 | 图片的规格名称 |
file_name_wm | list | ["56cf9c38d9a111e7a0a300163e06132ablue3_wm", "56cf9c39d9a111e7a0a300163e06132awhite3_wm", "56cf9c3ad9a111e7a0a300163e06132ared3_wm", "579b75b0d9a111e7a0a300163e06132ablue23_wm", "579b75b1d9a111e7a0a300163e06132agrey3_wm", "579b75b2d9a111e7a0a300163e06132ablue33_wm"] | 带水印图片名字,包括多种可选颜色 |
file_name_print_wm | list | ["56cf9c38d9a111e7a0a300163e06132ablue3_print_wm", "56cf9c39d9a111e7a0a300163e06132awhite3_print_wm", "56cf9c3ad9a111e7a0a300163e06132ared3_print_wm", "579b75b0d9a111e7a0a300163e06132ablue23_print_wm", "579b75b1d9a111e7a0a300163e06132agrey3_print_wm", "579b75b2d9a111e7a0a300163e06132ablue33_print_wm"] | 带水印排版图片名字,包括多种可选颜色 |
file_name | list | ["56cf9c38d9a111e7a0a300163e06132a68798blue3", "56cf9c39d9a111e7a0a300163e06132a65760white3", "56cf9c3ad9a111e7a0a300163e06132a03509red3", "579b75b0d9a111e7a0a300163e06132a71632blue23", "579b75b1d9a111e7a0a300163e06132a38271grey3", "579b75b2d9a111e7a0a300163e06132a81312blue33"] | 无水印图片名字,包括多种可选颜色 |
file_name_print | list | ["56cf9c38d9a111e7a0a300163e06132a68798blue3_print", "56cf9c39d9a111e7a0a300163e06132a65760white3_print", "56cf9c3ad9a111e7a0a300163e06132a03509red3_print", "579b75b0d9a111e7a0a300163e06132a71632blue23_print", "579b75b1d9a111e7a0a300163e06132a38271grey3_print", "579b75b2d9a111e7a0a300163e06132a81312blue33_print"] | 无水印排版图片名字,包括多种可选颜色 |
is_print | number | 1 | 有无排版 |
size | list | [295, 413] | 图片尺寸 |
size_print | list | [1795, 1205] | 排版后图片尺寸 |
one_sheet_num | number | 8 | 排版的照片数量 |
not_check_result | list | [{"check_param": "face_blur", "param_message": "脸部模糊","check_value":40},...] | 检测未通过参数,check_value表示算法检测出的结果值,为null时表示结果值未以明确的方式给出 |
img_wm_url_list | list | ["https://...",...], | 带水印单张照url列表 |
print_wm_url_list | list | ["https://...",...], | 带水印排版照url列表 |
注:名称列表和url列表内颜色顺序一一对应,url链接有效期为1个小时。
示例:
xxxxxxxxxx
import requests, json, base64
url = "http://apicall.id-photo-verify.com/api/cut_check_pic"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 391,
"app_key": "您申请的app_key",
"file": base64.b64encode(pic).decode()
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
返回数据示例:
xxxxxxxxxx
{
"code": 200,
"not_check_result": [],
"result": {
"check": 1,
"check_result": {
"background_color": 1,
"clothes_similar": 1,
"eyes_close": 1,
"face_blur": 1,
"face_center": 1,
"face_noise": 1,
"facial_pose": 1,
"file_size": 1,
"headpose_pitch": 1,
"headpose_roll": 1,
"headpose_yaw": 1,
"name": "简历照片(一寸)",
"photo_format": 1,
"px_and_mm": 1,
"shoulder_equal": 1,
"sight_line": 1,
"spec_id": 391
},
"file_name": [
"0d8400b2967a11ea9cfa00163e0070b633342blue3",
"0d8400b2967a11ea9cfa00163e0070b629211white3",
"0d8400b2967a11ea9cfa00163e0070b639814red3",
"0d8400b2967a11ea9cfa00163e0070b639486blue23",
"0d8400b2967a11ea9cfa00163e0070b688485grey3",
"0d8400b2967a11ea9cfa00163e0070b672410blue33"
],
"file_name_print": [
"0d8400b2967a11ea9cfa00163e0070b633342blue3_print",
"0d8400b2967a11ea9cfa00163e0070b629211white3_print",
"0d8400b2967a11ea9cfa00163e0070b639814red3_print",
"0d8400b2967a11ea9cfa00163e0070b639486blue23_print",
"0d8400b2967a11ea9cfa00163e0070b688485grey3_print",
"0d8400b2967a11ea9cfa00163e0070b672410blue33_print"
],
"file_name_print_wm": [
"0d8400b2967a11ea9cfa00163e0070b6blue3_print_wm",
"0d8400b2967a11ea9cfa00163e0070b6white3_print_wm",
"0d8400b2967a11ea9cfa00163e0070b6red3_print_wm",
"0d8400b2967a11ea9cfa00163e0070b6blue23_print_wm",
"0d8400b2967a11ea9cfa00163e0070b6grey3_print_wm",
"0d8400b2967a11ea9cfa00163e0070b6blue33_print_wm"
],
"file_name_wm": [
"0d8400b2967a11ea9cfa00163e0070b6blue3_wm",
"0d8400b2967a11ea9cfa00163e0070b6white3_wm",
"0d8400b2967a11ea9cfa00163e0070b6red3_wm",
"0d8400b2967a11ea9cfa00163e0070b6blue23_wm",
"0d8400b2967a11ea9cfa00163e0070b6grey3_wm",
"0d8400b2967a11ea9cfa00163e0070b6blue33_wm"
],
"img_wm_url_list": ["https://...","..."],
"is_print": 1,
"one_sheet_num": 8,
"print_wm_url_list": ["https://...","..."],
"size": [
260,
378
],
"size_print": [
1795,
1205
]
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/take_pic_wm/<file_name>
请求方式: GET
响应类型: Image
接口状态: 启用
接口描述:
获取带水印图片
调用此接口不会增加调用次数
示例:
xxxxxxxxxx
from PIL import Image
import requests, io
url = "http://apicall.id-photo-verify.com/api/take_pic_wm/0d8400b2967a11ea9cfa00163e0070b6grey3_wm"
res = requests.get(url)
if res.status_code == 200:
bytes_data = res.content
file = io.BytesIO(bytes_data)
img = Image.open(file)
img.show()
file.close()
img.close()
返回数据示例:
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/take_cut_pic
请求方式: POST
数据类型: JSON
响应类型: Image
接口状态: 启用
接口描述:
获取无水印图片
调用此接口会增加已调用次数,无换装证件照扣一次,换装证件照扣三次 同一文件名再次获取,不会增加已调用次数
对应的app_key必须和制作时所用的app_key一致
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file_name | TRUE | string | 需要获取图片的名字 |
app_key | TRUE | string | 已申请的app_key |
示例:
xxxxxxxxxx
from PIL import Image
import requests, io
url = "http://apicall.id-photo-verify.com/api/take_cut_pic"
headers = {"Content-Type": "application/json"}
file_name = "调用'制作证件照api'时获取的无水印图片列表内的图片名"
app_key = "对应的app_key必须和制作时所用的app_key一致"
data = {
"file_name": file_name,
"app_key": app_key
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
if response.status_code == 200:
file = io.BytesIO(response.content)
img = Image.open(file)
img.show()
file.close()
img.close()
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/take_cut_pic_v2
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
同时获取无水印单张和排版图片
调用此接口会增加已调用次数,无换装证件照扣一次,换装证件照扣三次 同一文件名再次获取,不会增加已调用次数
对应的app_key必须和制作时所用的app_key一致
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file_name | TRUE | string | 获取的无水印单张图片的名字 |
app_key | TRUE | string | 已申请的app_key |
示例:
xxxxxxxxxx
import requests, json
url = "http://apicall.id-photo-verify.com/api/take_cut_pic_v2"
headers = {"Content-Type": "application/json"}
file_name = "调用'制作证件照api'时获取的无水印图片列表内的图片名"
app_key = "对应的app_key必须和制作时所用的app_key一致"
data = {
"file_name": file_name,
"app_key": app_key
}
data_json = json.dumps(data)
response = requests.post(url, headers=headers, data=data_json)
print(response.text)
返回数据示例:
xxxxxxxxxx
{
"data": {
"code": 200,
"file_name": "https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result%2F1dfea61a967811ea9cf900163e0070b645912white2.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1589617826&Signature=quH43abhfbXBKnqRcjx9nHO5rG0%3D",
"file_name_list": "https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result%2F1dfea61a967811ea9cf900163e0070b645912white2_print.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1589617826&Signature=sVcN%2FpPJ19EoqmhPui2RvthPnp4%3D"
}
}
说明:code为201时,表示制作的证件照只有单张电子照,没有排版照片。
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/cut_change_clothes
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
对原图按证件照规格裁剪,并为其换上正装。
调用此接口不扣使用次数,通过此接口的返文件名去获取无水印图片,扣3次使用次数。 同一个图片名称(包括单张和排版),如果需要再次获取,不会增加已调用次数
官网上对应的app_key应用类型必须为剪裁换正装
请求格式:
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
file | FALSE | string | 图片的base64格式,或者图片在oss的key(见第十三个接口) |
app_key | TRUE | string | 已申请的app_key |
spec_id | TRUE | int | 规格id |
width_px | FALSE | int | 自定义像素宽度值,最大不能超过1050 |
height_px | FALSE | int | 自定义像素高度值,最大不能超过1500 |
clothes | TRUE | string | 正装模板名称(模板信息见下表) |
fair_level | FALSE | dict | 美颜级别(默认为0,代表不美颜,级别0-1,美颜程度依次增强) |
origin_pic_name | FALSE | string | 初始图片名称,同一张照片进行不同换装时,请传入此参数 |
background_color | FALSE | list | 自定义照片背景色,详见第四个接口“制作并检测证件照”下方的“参数说明4” |
ratios | FALSE | list | 自定义证件照制作比率,详见第四个接口的“参数说明5” |
file_size_max | FALSE | int | 文件大小最大值 |
file_size_min | FALSE | int | 文件大小最小值 |
print_type | FALSE | int | 排版类型,1表示默认(一寸8张),2表示紧凑型(一寸10张) |
need_adjust_lighting | FALSE | int | 是否需要做光照处理,1表示是,0表示否,默认否 |
enhanced_type | FALSE | int | 图像增强控制参数,1表示不增强,2表示粗裁剪增强,3表示结果图增强, 默认不增强, 详细见参数说明6 |
模板信息:
响应格式:
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码 |
final_pic_name | list | 无水印图片名称列表(同‘带水印图片url列表’顺序),调获取无水印图片接口,进行获取。 |
origin_pic_name | str | 原始图片名 |
print_pic_name | list | 无水印排版图片名称列表(同‘带水印图片url列表’顺序),调获取无水印图片接口,进行获取。 |
print_wm_pic_url | list | 带水印排版图片url列表(同‘带水印图片url列表’顺序) |
wm_pic_url | list | 带水印图片url列表 |
error | str | 错误信息提示 |
one_sheet_num | int | 排版的照片数量 |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
示例:
ximport requests, json
url = "http://apicall.id-photo-verify.com/api/cut_change_clothes"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 3,
"app_key": "对应的app_key",
"file": base64.b64encode(pic).decode(),
# 再次换装时,只需要传入下方的参数即可
# "origin_pic_name": "83da1ba4dab211e9ab4900163e0aee01.jpg",
"fair_level": 0,
"clothes": "applet_boy1",
}
data_json = json.dumps(data)
start = time.time()
response = requests.post(
url=url,
headers=headers,
data=data_json)
print(response.text)
返回数据示例:
xxxxxxxxxx
{
"code": 200,
"final_pic_name": [
"2c585d52968f11ea9d1100163e0070b6clothesred"
],
"one_sheet_num": 8,
"origin_pic_name": "2c585d52968f11ea9d1100163e0070b6.jpg",
"print_pic_name": [
"2c585d52968f11ea9d1100163e0070b6clothesred_print"
],
"print_wm_pic_url": [
"https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result_wm%2F2c585d52968f11ea9d1100163e0070b6red_print.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1589621634&Signature=lwVKr6MRCBlXggiWMIP0BVi5nhg%3D"
],
"wm_pic_url": [
"https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result_wm%2F2c585d52968f11ea9d1100163e0070b6red.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1589621634&Signature=bDV8FnrjU1Kyx77Uvf81mYdfVm8%3D"
]
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/get_specs/<spec_id>
请求方式: GET
数据类型: spec_id 需为int类型
响应类型: JSON
接口状态: 启用
接口描述:
传入spec_id,获取对应的规格详情。
调用此接口不会增加调用次数
响应格式:
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求,401为传入的规格id不存在) |
spec_id | int | 规格id |
spec_name | str | 规格名称 |
width_px | int | 规格宽度像素 |
height_px | int | 规格高度像素 |
width_mm | int | 规格对应的宽度毫米尺寸 |
height_mm | int | 规格对应的高度毫米尺寸 |
file_size_max | int | 规格文件大小最大值(单位:b),为null则表示没有限制 |
file_size_min | int | 规格文件大小最小值(单位:b),为null则表示没有限制 |
ppi | int | 规格分辨率 |
background_color | str | 规格背景色信息 |
is_print | int | 是否有排版照(1,表示有;0,表示没有) |
error | str | 错误信息提示 |
示例:
xxxxxxxxxx
import requests
spec_id = 1
url = "http://apicall.id-photo-verify.com/api/get_specs/" + str(spec_id)
res = requests.get(url)
print(res.text)
返回数据示例:
xxxxxxxxxx
{
"background_color": "[{\"enc_color\": 4427483, \"color_name\": \"blue\", \"start_color\": 4427483}]",
"code": 200,
"file_size_max": null,
"file_size_min": null,
"height_mm": 35,
"height_px": 413,
"is_print": 1,
"ppi": 300,
"spec_id": 1,
"spec_name": "一寸(蓝底)",
"width_mm": 25,
"width_px": 295
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/cut_wedding
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
此方法是对双人照片进行换底裁剪,其中裁剪结果图为一张宽高比为3:2
的图片,图片的大小会影响响应的时间
调用此接口不会增加调用次数 结果返回带水印图片,无水印图片和无水印已排版图片名字(均为多种颜色) 带水印图片存储时间为 1 天,无水印图片存储时间为 7 天 通过名字获取带水印图片不会增加已调用次数 (通过获取图片的api获取无水印图片或无水印已排版图片会增加 2 次调用次数) 同一个图片名称(包括单张和排版),如果需要再次获取,不会增加已调用次数
对应的app_key应用类型必须为结婚照制作 为保证图片质量,请上传的图片尽量遵循“男右女左”的顺序、且不戴首饰 考虑到算法响应速度,图片最好不超过 6Mb
请求格式:
参数名称 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file | string | 否 | app/123.jpg | 图片的base64格式,或者图片在oss的key(见第十三个接口) |
app_key | string | 否 | 已申请的app_key | |
process | string | 是 | image/resize,mxxx | 缩放规则 |
img_size | list | 是 | [926,617] | 制作结果宽高,宽高比例必须为3:2,若为空,则返回宽高比为3:2的未缩放图 |
fair_level_right | dict | 是 | None | 右人像美颜级别,详细见下方说明 |
fair_level_left | dict | 是 | None | 左人像美颜级别,详细见下方说明 |
need_beauty_buffer | bool | 是 | True | 是否需要美颜中间参数,默认为False,在客户端本地美颜时,需要此参数为True,且img_size字段将失效 |
use_cache | bool | 是 | True | 是否需要使用缓存,默认为True |
bg_type | string | 是 | RGB | 背景色类型,默认为暗红色图片背景,选择RGB则为(200, 37, 40)背景色 |
fair_level说明(以下各项默认为0):
xxxxxxxxxx
{
"leyelarge": 1, # 左眼放大程度(0~5)
"reyelarge": 1, # 右眼放大程度(0~5)
"mouthlarge": 1, # 嘴巴缩小程度(0~5)
"skinwhite": 1, # 皮肤美白程度(0~5)
"skinsoft": 1, # 皮肤美肤程度(去皱纹、祛斑等)(0~5)
"coseye": 1, # 美瞳程度(0~5)
"facelift": 1 # 瘦脸程度(0~5)
}
响应格式(详见下方返回示例):
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求,401为传入的规格id不存在) |
result | object | |
file_name | str | 无水印图片名称 |
file_name_wm | str | 带水印图片名称 |
img_wm_url | str | 带水印图片URL |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
size | list | 图片尺寸(只有传递img_size才会有) |
beauty_buffer | object | |
left | str | base64编码后的左脸的美颜中间结果 |
right | str | base64编码后的左脸的美颜中间结果 |
示例:
xxxxxxxxxx
# 同步请求
import requests, json, base64
url = "http://apicall.id-photo-verify.com/api/cut_wedding"
with open("90.jpg", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"app_key": "your cut_wedding app_key",
"file": base64.b64encode(pic).decode(),
}
data_json = json.dumps(data)
res = requests.post(url,headers=headers, data=data_json)
print(res.text)
# 异步请求
import asyncio, requests, json, io, base64
from aiohttp import ClientSession
async def cut_wedding():
url = "http://apicall.id-photo-verify.com/api/cut_wedding"
with open("63.jpg", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"app_key": "your cut_wedding app_key",
"file": base64.b64encode(pic).decode(),
}
data_json = json.dumps(data)
async with ClientSession() as session:
async with session.post(url, headers=headers, data=data_json) as res:
result = await res.read()
print(json.loads(result))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(cut_wedding())
返回示例:
xxxxxxxxxx
{
'code': 200,
'result': {
'beauty_buffer': {'left': '', 'right': ''},
'file_name': '0141b4129bf111ea97cf00163e0aee0131125red2',
'file_name_wm': '0141b4129bf111ea97cf00163e0aee01red_wm',
'img_wm_url': 'https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result_wm%2F0141b4129bf111ea97cf00163e0aee01red_wm.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1590213432&Signature=k9gEFMtfVB8ACcUK27bggQLRiGY%3D',
'print_file': '0141b4129bf111ea97cf00163e0aee0131125red2_print',
'print_wm_url': 'https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result%2F0141b4129bf111ea97cf00163e0aee01red_print_wm.jpg?OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1590213432&Signature=Z%2BQOxxc9Jdd1qdtE5XyoEjTsQYg%3D',
'size': []
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/sdk_cut_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
此接口是为了适配集成本地美颜SDK的项目(没有集成可以使用线上的美颜),返回一张透明底色带水印的图片,可在本地美颜后请求对应的制作接口获取心仪的图片。推荐使用“制作并检测接口”获取最终图片。
调用此接口不会增加调用次数 结果返回透明底色带水印的图片URL及其名称,存储时间为 1 天 通过名字获取带水印图片不会增加已调用次数 (通过获取图片的api获取无水印图片或无水印已排版图片会增加 1 次调用次数) 同一个图片名称(包括单张和排版),如果需要再次获取,不会增加已调用次数
对应的app_key应用类型必须为本地美颜SDK适配 考虑到算法响应速度,图片最好不超过 6Mb SDK使用方式会在后续进行丰富
最新SDK下载地址:
请求格式:
参数名称 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file | string | 否 | app/123.jpg | 图片的base64格式,或者图片在oss的key(见第十三个接口) |
spec_id | int | 否 | 361 | 已有的规格ID |
app_key | string | 否 | 已申请的app_key | |
process | string | 是 | image/resize,mxxx | 缩放规则(非特殊要求可无视) |
img_size | list | 是 | [926,617] | 制作结果宽高,若为空,则返回原比例未缩放图 |
ratios | list | 是 | [1,2,3,4,5] | 自定义证件照制作比率,详见第四个接口的“参数说明5” |
fair_level | dict | 是 | None | 左人像美颜级别,详细见下方说明 |
clothes | string | 是 | applet_boy1 | 正装模板名称(模板信息见换装接口) |
local_beauty | bool | 是 | False | 是否本地美颜,此参数为True时返回值beauty_intermediate_result字段才有意义 |
fair_level说明(以下各项默认为0):
xxxxxxxxxx
{
"leyelarge": 1, # 左眼放大程度(0~5)
"reyelarge": 1, # 右眼放大程度(0~5)
"mouthlarge": 1, # 嘴巴缩小程度(0~5)
"skinwhite": 1, # 皮肤美白程度(0~5)
"skinsoft": 1, # 皮肤美肤程度(去皱纹、祛斑等)(0~5)
"coseye": 1, # 美瞳程度(0~5)
"facelift": 1 # 瘦脸程度(0~5)
}
注:因为历史遗留的原因,制作并检测或换装接口的 fair_level 都需要除以5后再传递
响应格式(详见下方返回示例):
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求,401为传入的规格id不存在) |
result | object | |
size | list | 图片大小(像素宽高比) |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
img_wm_url | str | 带水印图片URL |
background_color | list | 对应规格的背景色,也可用于其他接口自定义背景色,详见第4接口参数说明4 |
beauty_intermediate_result | str | 美颜算法的中间结果,用于本地美颜 |
示例:
xxxxxxxxxx
# 同步请求
import requests, json, base64
def sdk_cut_pic():
url = "http://apicall.id-photo-verify.com/api/sdk_cut_pic"
with open("test.png", 'rb') as f:
pic = f.read()
headers = {"Content-Type": "application/json"}
data = {
"spec_id": 391,
# "img_size": [480, 640], # 有需求可自行设置
'local_beauty': True, # 本地美颜
"app_key": "your sdk app_key",
"file": base64.b64encode(pic).decode(),
}
data_json = json.dumps(data)
res = requests.post(url, headers=headers, data=data_json)
print(res.status_code)
print(res.text)
返回示例:
xxxxxxxxxx
{
"code": 200,
"result": {
"background_color": [
{
"color_name": "blue",
"enc_color": 4427483,
"start_color": 4427483
},
{
"color_name": "white",
"enc_color": 16777215,
"start_color": 16777215
},
{
"color_name": "red",
"enc_color": 16711680,
"start_color": 16711680
}
],
"beauty_intermediate_result": "...", # 美颜算法的中间结果,在本地美颜时有用
"file_name_wm": "ef02d846a0bc11ea97cf00163e0aee0153925_SDK_wm",
"img_wm_url": "https://leqi-imgcall.oss-cn-shanghai.aliyuncs.com/result_wm%2Fef02d846a0bc11ea97cf00163e0aee0153925_SDK_wm.jpg?Signature=3OAaU6uk%2BILD%2Bbp5zxA%2F1Ot6GTk%3D&OSSAccessKeyId=LTAIQ8Lif1HHVkXd&Expires=1590740797",
"size": [
480,
640
]
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/get_beauty_version
请求方式: GET
响应类型: JSON
接口状态: 启用
接口描述:
此接口是为了配合本地美颜SDK接口,用于获取线上美颜版本号。
调用此接口不会增加调用次数
响应格式:
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求) |
beauty_version | str | |
error | str | 错误信息提示 |
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/get_upload_policy
请求方式: GET/POST
响应类型: JSON
接口状态: 启用
接口描述:
为了降低服务器压力,提高接口响应效率,故新增获取OSS直传凭证的接口。
调用此接口不会增加调用次数 图片保存时间为 1 天
接口说明:
服务端签名后直传的原理如下:
通过此方式访问证件照制作接口,将提高算法的响应速度,如何保证双方正常通信请查看下方“响应格式”。
请求格式:
参数名 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file_name | str | 否 | test.png | 带后缀的图片名称,目的就是提取图片格式,必填 |
响应格式:
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求) |
result | object | |
OSSAccessKeyId | str | 上传凭证之一 |
dir | str | 上传图片前缀(不要改动) |
key | str | 图片在oss的key,此参数作为除第一个接口外,其他接口需要上传图片的“file”参数的值 |
expire | int | 过期时间(时间戳) |
host | str | 请求网址 |
policy | str | 上传凭证之一 |
signature | str | 签名,上传凭证之一 |
origin_pic_url | str | 即将上传的图片的预览链接,请在上传后访问查看 |
注:具体使用请参考下方示例代码,上传时文件的参数是 *file*(图片的二进制)
返回示例:
xxxxxxxxxx
{
"code": 200,
"result": {
"OSSAccessKeyId": "LTAIQ8Lif1HHVkXd",
"dir": "app/",
"expire": 1591090150,
"host": "https://testleqi.oss-cn-shanghai.aliyuncs.com",
"key": "app/22161fdaa4ab11ea97cf00163e0aee01.png",
"policy": "eyJjb25kaXRpb25zIjogW1sic3RhcnRzLXdpdGgiLCAiJGtleSIsICJhcHAvIl1dLCAiZXhwaXJhdGlvbiI6ICIyMDIwLTA2LTAyVDA5OjI5OjEwWiJ9",
"signature": "pUo3eb9ZP/05uVUzt6N7CKZsu2M=",
"origin_pic_url": "http://...."
}
}
使用方法(ajax):
xxxxxxxxxx
<script>
$('#upload_img').click(function () {
// 获取文件,请修改参数
var img_file = $("#file")[0].files[0]
$.ajax({
type: 'GET',
url: 'http://apicall.id-photo-verify.com/api/get_upload_policy',
data: { file_name: img_file.name },
dataType: 'json',
success: function (res) {
if (res.code == 200) {
// 构建上传参数
var formData = new FormData()
formData.append("key", res.result.key)
formData.append("OSSAccessKeyId", res.result.OSSAccessKeyId)
formData.append("signature", res.result.signature)
formData.append("policy", res.result.policy)
formData.append("success_action_status", 200)
formData.append("file", img_file)
var host = res.result.host
$.ajax({
type: "POST",
url: host,
cache: false,
contentType: false,
processData: false,
data: formData,
async: false,
success: function (data) {
console.log("success", data) // 实际上不会返回任何消息,可自定义逻辑
},
})
} else {
console.log(res.error)
}
},
})
});
</script>
注意点:以上代码仅为示例代码,不代表推荐使用代码。请根据具体业务要求更改或重新构建代码。
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/whole_body_change
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
此接口传入一张单人照(人物头部完整就行,不需要传全身照!!!不需要传全身照!!!不需要传全身照!!!),选择服装模板后返回对应的透明底换装图片,可参考剪裁并换装接口。目前主要用于毕业照的换装。
若需要定制服装或添加服装请联系销售人员。
调用此接口不会增加调用次数 结果返回透明底色带水印的图片URL及其名称,存储时间为 1 天 通过名字获取带水印图片不会增加已调用次数 (通过获取图片的api获取无水印图片或无水印已排版图片会增加 1 次调用次数) 同一个图片名称(包括单张和排版),如果需要再次获取,不会增加已调用次数
对应的app_key应用类型必须为全身(半身)换装
考虑到响应速度,图片请用上方获取OSS直传凭证上传文件后使用图片的云端路径访问
效果展示(灵魂画师):
请求格式:
参数名称 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file | string | 否 | app/123.jpg | 图片文件oss存储的key,见第十三个接口 |
clothes_id | string | 否 | 1 | 已有的服装ID |
app_key | string | 否 | 已申请的app_key | |
process | string | 是 | image/resize,mxxx | 缩放规则(非特殊要求可无视) |
img_size | list | 是 | [926,617] | 制作结果宽高(非特殊要求可无视) |
need_resize | bool | 是 | False | 是否需要缩放,img_size只是确定比例,但是不会缩放(默认不缩放) |
ratios | list | 是 | [1,2,3,4,5] | 自定义证件照制作比率,详见第四个接口的“参数说明5” |
fair_level | dict | 是 | None | 人像美颜级别,详细见下方说明 |
hat_id | string | 是 | 1 | 已有帽子ID,若不需要帽子可不传 |
hat_params | dict | 是 | None | 帽子的参数,为字典格式,详见下方说明(非必要情况无需传递此参数) |
fair_level说明(以下各项默认为0):
xxxxxxxxxx
{
"leyelarge": 1, # 左眼放大程度(0~5)
"reyelarge": 1, # 右眼放大程度(0~5)
"mouthlarge": 1, # 嘴巴缩小程度(0~5)
"skinwhite": 1, # 皮肤美白程度(0~5)
"skinsoft": 1, # 皮肤美肤程度(去皱纹、祛斑等)(0~5)
"coseye": 1, # 美瞳程度(0~5)
"facelift": 1 # 瘦脸程度(0~5)
}
帽子hat_params参数说明:
xxxxxxxxxx
**hat_params**字段为字典格式,当非空时,其有必须要有如下四个点的坐标
xxxxxxxxxx
{
'left_top': [0, 181],
'right_top': [493, 181],
'left_brim': [61, 298],
'right_brim': [429, 298]
}
全身服装模板:
clothes_id | 效果图 | 备注 |
---|---|---|
1 | ![]() | 毕业照模板1 |
帽子模板:
hat_id | 效果图 | 备注 |
---|---|---|
1 | ![]() | 学士帽1 |
响应格式(详见下方返回示例):
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求,401为传入的规格id不存在) |
result | object | |
size | list | 图片大小(像素宽高比) |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
img_wm_url | str | 带水印图片URL |
file_name | list | 无水印图片名称 |
示例:
xxxxxxxxxx
# 同步请求
import requests, json, base64
def whole_body_change():
url = "http://apicall.id-photo-verify.com/api/whole_body_change"
headers = {"Content-Type": "application/json"}
data = {
"clothes_id": 1,
"hat_id": 1,
"need_resize": True,
"app_key": "your app_key",
"file": "图片云端路径",
}
data_json = json.dumps(data)
res = requests.post(url, headers=headers, data=data_json)
print(res.status_code)
print(res.text)
返回示例:
xxxxxxxxxx
{
"code": 200,
"result": {
"file_name": "change_plus637e927fa3324a52312552b5c3e1d3.png",
"img_wm_url": "https://...",
"size": [
316,
806
],
"source_file": "app/637e927fa3324a52312552b5c3e1d3.jpg"
}
}
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/cutout_pic
请求方式: POST
数据类型: JSON
响应类型: JSON
接口状态: 启用
接口描述:
此接口可以进行完整的人体抠图,也可以通过设置裁剪参数来对人体进行粗略的裁剪,多人脸也能正常抠图,不过只扣算法选中的第一张人脸。结果返回扣好图后的透明底图片。
若需要换背景可使用我们提供的本地换背景并保存的代码,目前支持语言:HTML、微信小程序、安卓、iOS、python
调用此接口不会增加调用次数 结果返回透明底色带水印的图片URL及其名称,存储时间为 1 天 通过名字获取带水印图片不会增加已调用次数 (通过获取图片的api获取无水印图片或无水印已排版图片会增加 1 次调用次数) 同一个图片名称(包括单张和排版),如果需要再次获取,不会增加已调用次数
对应的app_key应用类型必须为半身照/全身照抠图
考虑到响应速度,图片请用上方获取OSS直传凭证上传文件后使用图片的云端路径访问
请求格式:
参数名称 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file | string | 否 | app/123.jpg | 图片文件oss存储的key,见第十三个接口 |
app_key | string | 否 | 已申请的app_key | |
img_size | list | 是 | [926,617] | 制作结果宽高(非特殊要求不要传) |
need_resize | bool | 是 | False | 是否需要缩放,img_size只是确定比例,但是不会缩放(默认不缩放,非特殊要求不要传) |
head_height | list | 是 | [0.25, 0.50] | 头高 与 照片高度的比例范围(非特殊要求不要传) |
headtop_margin | list | 是 | [0.05, 0.10] | 头顶部到照片上边框距离与照片高度的比例范围(非特殊要求不要传) |
注:若想自定义裁剪,img_size、need_resize、head_height、headtop_margin四个参数必填,具体可咨询技术人员
响应格式(详见下方返回示例):
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求,401为传入的规格id不存在) |
result | object | |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
img_wm_url | str | 带水印图片URL |
file_name | list | 无水印图片名称 |
示例:
xxxxxxxxxx
# 同步请求
import requests, json
def cutout_pic():
url = "http://apicall.id-photo-verify.com/api/cutout_pic"
headers = {"Content-Type": "application/json"}
data = {
"app_key": "your app_key",
"file": "图片云端路径",
}
data_json = json.dumps(data)
res = requests.post(url, headers=headers, data=data_json)
print(res.status_code)
print(res.text)
返回示例:
{ "code": 200, "result": { "file_name": "cutout9e3422a3271f1442b73502a137fcf2.png", "img_wm_url": "https://...", "source_file": "app/9e3422a3271f1442b73502a137fcf2.jpg" } }
基本信息:
请求类型: HTTP/HTTPS
接口地址: http://apicall.id-photo-verify.com/api/face_feature
请求方式: POST
响应类型: JSON
接口状态: 启用
接口描述:
此接口用于提取照片中的人脸特征信息,目前主要用于活体检测(例如:图片是否是对着照片的翻拍),后期可以通过对比此特征值来判断人脸的相似度(暂未开放,可联系销售人员进行商谈)。
调用此接口不会增加调用次数
请求格式:
参数名称 | 参数类型 | 是否可空 | 参数示例 | 参数说明 |
---|---|---|---|---|
file | string | 否 | app/123.jpg | 图片文件oss存储的key,见第十三个接口 |
app_key | string | 否 | 已申请的app_key | |
liveness_threshold | int | 是 | 80 | 活体检测阈值(可无视,设不设置都要结果) |
need_feature | bool | 是 | False | 是否需要特征值,可用于判断人脸相似度,默认是False(暂未开放,若有需要请联系销售) |
响应格式:
参数名 | 参数类型 | 参数说明 |
---|---|---|
code | int | 状态码(200为正常请求) |
error | str | 错误信息提示 |
result | object | |
source_file | str | 原图的云端存储路径(使用此路径作为此接口请求中的file将大大提高效率) |
face_feature | str | 人脸特征信息(暂不提供,为保留字段) |
liveness_threshold | int | 活体的检测阈值,不管有没有liveness_threshold 参数都会返回 |
返回示例:
{ "code": 200, "error": "", "result": { "face_feature": "", "liveness_threshold": 100, "source_file": "app/d321c45c7b6a411f7dce0dd332c6.jpg" } }
参数说明1,headpose_yaw、headpose_pitch、headpose_roll参数说明示意:
参数说明2,facial_shelter参数说明:面部各部位遮挡置信度(眉毛、眼睛、鼻子、嘴巴、脸颊、耳朵 饰品遮挡) 当传了facial_shelter参数后, 此参数将会分别与七个遮挡检测项匹配,并且会返回具体每个项的匹配结果,七个参数分别是: 眉毛 eyebrow_occlusion 眼睛 eye_occlusion 鼻子 nose_occlusion 嘴巴 mouth_occlusion 脸颊 cheek_occlusion 耳朵 ear_occlusion 饰品遮挡 decoration_occlusion
参数说明3,fair_level对应的值可以是字典的形式(注:不支持全部传0的情况),如: "fair_level": {"leyelarge":0.1, #左眼放大程度 "reyelarge":0.1, #右眼放大程度 "mouthlarge":0.1, #嘴巴缩小程度 "skinwhite":1, #皮肤美白程度 "skinsoft":0.1, #皮肤光滑度 "coseye":0.1, #美瞳程度 "facelift":0.1 #瘦脸程度 }, # 美颜等级,有效范围在0到1,数值越大,则美颜程度越高
参数说明4,background_color须为list类型,最多能够设置6种背景色,如: [{"start_color": 16777215,"color_name": "white", "enc_color": 16777215}, {"start_color": 4427483, "color_name": "blue", "enc_color": 4427483}] start_color 为照片上部色值,对应的是RGB色值的十进制形式, color_name 为颜色名称,str类型,制作成功时,此字段对应的值会出现在图片名称里, enc_color 为照片下部色值,如与上部色值一致,则背景为纯色,如不一致则为渐变色。
参数说明5,ratios为照片制作比率参数,须为list类型,取值范围均在0到1之间,每个参数均不可省略,如没有特定要求,可将最小值和最大值范围设宽一些;参数设定不合理,将直接影响制作的成功率,如: [0.5, 0.7, 0.5, 0.72, 0.05, 0.15, 0.35, 0.75] 第一个参数为,head_h/pic_h 的最小值, 第二个参数为,head_h/pic_h 的最大值, 第三个参数为,eye_h/pic_h 的最小值, 第四个参数为,eye_h/pic_h 的最大值, 第五个参数为,top_h/pic_h 的最小值, 第六个参数为,top_h/pic_h 的最大值, 第七个参数为,face_w/pic_w的最小值, 第八个参数为,face_w/pic_w的最大值。
参数说明6,enhanced_type为2时,算法处理时会使用缓存,处理速度较快,适合To C场景使用,enhanced_type为3时,效果较好速度较慢,适合报名审核、政务类的证件照场景。推荐和光照处理参数need_adjust_lighting一起使用,适合手机拍摄的图片质量较差的图片处理。
2021年06月10日
1,制作并检测接口新增佩戴眼睛样式的检测项参数:thin_frame_glasses、thick_black_frame_glasses、sunglasses。
2021年05月17日
1,第8个接口,新增男装模板17,女装模板16、17,童装模板21、22、23
2021年04月1日 1,第4个接口新增图片处理参数:image_enhancement,need_adjust_lighting; 2,第8个接口新增图片处理参数:enhanced_type
2021年01月12 1,2、4、8接口新增排版参数:print_type; 2, 新增检测项:脖子阴影--“pn_neck_shadow_exist”; 3,弃用 面部颜色(face_color)检测
2020年10月 08 1,剪裁换正装 接口新增参数 file_size_max、file_size_min;
2020年08月28 1,制作并检测 与 检测 接口返回参数新增all_check_result; 2, 结婚照接口新支持 默认的RGB 背景色;
2020年08月21 1,美颜更新至1004版本,项目中有用到本地美颜SDK的请及时更新。
2020年07月23 1,获取OSS直传凭证接口返回结果新增原图返回路径 origin_pic_url。
2020年07月20 1,新增人脸特征检测接口; 2, 全身(半身)换装新增衣领参数、服装id与帽子id类型改为string;
2020年06月13 1,全身(半身)换装新增多个服装与帽子模板; 2, 本地美颜SDK新增file_name返回字段; 3, 半身照/全身照抠图新增本地换背景代码示例;
2020年06月10 1,新增全身(半身)换装接口; 2, 新增半身照/全身照抠图接口。
2020年06月04 1,剪裁换正装接口“file”可为图片存储于云端的路径,并增加缓存功能。
2020年06月02 1,新增获取OSS直传凭证接口。 2, 制作并检查证件照、结婚照制作、本地美颜SDK接口新增返回参数“source_file”,即源图片存储于云端的路径,使用方法请查看下一条说明。 3, 制作并检查证件照、结婚照制作、本地美颜SDK接口的上传参数“file”可为图片存储于云端的路径。 4 , 制作并检查证件照、结婚照制作、本地美颜SDK接口新增缓存功能,同一张图片(无论是base64还是云端路径)的多次访问的响应速度大大提升。
2020年05月28 1,新增本地美颜SDK适配接口。 2, 剪裁换正装接口请求参数fair_level类型换为dict。 3 , 换装模板新增 男装模板14~16,女装模板13~15,童装模板19、20。
2020年05月22 1,新增结婚照制作接口。 2, 优化api文档,下载api文档改为markdown文件。
2020年05月12 1,制作并检测接口,新增“pn_mask_exist”参数。
2020年04月13日 1,换装接口,请求参数新增“ratios”字段 2,增加了换装模板
2019年12月19日 1,换装接口,返回值新增“one_sheet_num”字段
2019年12月16日 1,换装接口,新增自定义背景色功能
2019年12月9日 1,新增了一些正装模板
2019年11月19日 1,“制作并检测证件照”接口新增background_color,ratios参数。
2019年11月13日 1,新增了一些正装模板
2019年11月4日 1,新增“规格详情”接口
2019年10月22日 1,“制作并检测证件照”新增检测项:照片存在水印,检测项参数“watermark_exist”
2019年10月21日 1,“裁剪换正装”接口,请求参数支持自定义宽高像素。
2019年9月30日更新内容: 1,此次更新内容为:新增“裁剪换正装”接口。
2019年9月25日更新内容: 1,“制作证件照”和“制作并检测证件照”接口返回内容中,新增字段“img_wm_url_list”,表示单张带水印照片的url列表,新增字段“print_wm_url_list”,表示带水印排版照的url列表。
2019年9月6日更新内容: 1,“制作证件照”和“制作并检测证件照”接口返回内容中,新增字段“one_sheet_num”,表示排版的照片张数。 2,“制作并检测证件照”接口返回内容中,新增字段“not_check_result”,表示检测未通过项的参数。
2019年7月1日更新内容: 1,此次更新为新加光膀检测,参数:bare_shouldered。
2019年6月25日更新内容: 1,此次更新参数“fair_lever”的说明,支持以字典形式传输。
2019年5月10日更新内容: 1,“制作并检测证件照”接口的检测算法更新,新加检测项参数:missing_shoulder、incomplete_head、lower_body_hanging、headpose_yaw、headpose_pitch、headpose_roll、face_too_dark、face_contrast。 2,“制作并检测证件照”接口参数“facial_shelter”更新,面部遮挡检测更加全面。 3,“证件照制作”和“制作并检测证件照”接口中返回的排版照间距进行了优化,方便手动裁切。