还在为证件照审核不通过而烦恼?闭眼、阴阳脸、眼镜反光......这些坑你踩过几个?可立图ClipImg推出"制作+检测"二合一API,在生成证件照的同时完成40+项合规性检测,一次调用搞定全部流程,大幅提升审核通过率!
一、痛点:证件照审核,真的很难
无论是护照签证、高考考研报名,还是驾驶证采集,一张小小的证件照背后藏着无数"雷区":
- 拍了半天才发现闭眼了?
- 换了背景却出现阴阳脸?
- 眼镜反光导致整张照片作废?
- 头部比例不对,被系统自动驳回?
传统解决方案:先拍照,再用不同工具做检测,反复修改,效率低下。
可立图ClipImg证件照制作并检测API ,彻底改变这一局面。它将制作与质检合二为一,在生成证件照的同一刻,完成对成品照的40+项合规性检测,并精准反馈不合格项,让问题在源头解决!
二、什么是"制作+检测"一体化API?
这是可立图独具优势的接口,核心价值在于闭环处理 与即时纠错。
<code>graph LR A上传照片 --> B智能制作 B --> C合规性检测 C --> D{全部通过?} D -- 是 --> E返回成功结果 D -- 否 --> F返回详细错误信息 F --> G提示用户重拍 </code>
核心优势
| 特性 | 说明 |
|---|---|
| ✅ 闭环处理 | 一次调用完成"制作+质检",无需分别调用两个接口 |
| ✅ 精准反馈 | 检测针对的是最终生成的证件照(而非原图),结果更准确 |
| ✅ 即时纠错 | 发现闭眼、反光、阴影等问题,返回详细错误信息,前端可即时提示用户 |
| ✅ 节约点数 | /make_and_check调用本身不扣点,比分开调用更经济 |
典型适用场景
| 场景 | 说明 |
|---|---|
| 📜 护照/签证办理 | 各国签证对头部比例、背景色要求严格 |
| 🎓 国家级考试报名 | 高考、研考、公考等的自动审核机制 |
| 🚗 驾驶证/社保卡采集 | 对亮度、清晰度、无阴影要求极高 |
| 🏪 自助照相亭 | 自动判断质量并引导用户重拍 |
| 📇 证件照回执办理 | 确保照片符合官方入库标准 |
三、快速接入:调用流程
接口地址
POST https://www.clipimg.com/api/idphoto/make_and_check
请求头
X-API-Key: your_api_key_here
Content-Type: application/json
核心请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| file / file_url | string | 图片输入,Base64或URL(二选一) |
| width | int | 目标宽度(像素) |
| height | int | 目标高度(像素) |
| fair_level | float | 美颜等级,0.0-1.0 |
| color | array | 背景颜色配置 |
| eye_blink_check | int | 闭眼检测(1开启) |
| mouth_neutral_check | int | 表情检测(1开启) |
| glasses_glare | int | 眼镜反光检测(1开启) |
| face_balanced_light_check | int | 阴阳脸检测(1开启) |
四、代码示例(完全根据文档编写)
1. curl示例
curl -X POST "https://www.clipimg.com/api/idphoto/make_and_check" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"file": "BASE64_IMAGE_DATA",
"width": 295,
"height": 413,
"file_format": 1,
"dpi": 300,
"file_size_min": 60,
"file_size_max": 240,
"apply_sharpening": 1
}'
2. Python示例(requests库)
import base64
import json
import requests
api = "https://www.clipimg.com/api/idphoto/make_and_check"
headers = {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json"
}
with open("photo.jpg", "rb") as f:
img_b64 = base64.b64encode(f.read()).decode("ascii")
payload = {
"file": img_b64,
"width": 295,
"height": 413,
"file_format": 1,
"dpi": 300,
"file_size_min": 60,
"file_size_max": 240,
"apply_sharpening": 1
}
r = requests.post(api, headers=headers, data=json.dumps(payload), timeout=60)
print(r.status_code)
print(r.json())
3. Node.js示例(axios)
const fs = require('fs');
const axios = require('axios');
(async () => {
const imgB64 = fs.readFileSync('photo.jpg').toString('base64');
const resp = await axios.post(
'https://www.clipimg.com/api/idphoto/make_and_check',
{
file: imgB64,
width: 295,
height: 413,
file_format: 1,
dpi: 300,
file_size_min: 60,
file_size_max: 240,
apply_sharpening: 1
},
{
headers: {
'X-API-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
timeout: 60000
}
);
console.log(resp.data);
})();
4. PHP示例(cURL扩展)
<?php
$imgB64 = base64_encode(file_get_contents('photo.jpg'));
$data = [
'file' => $imgB64,
'width' => 295,
'height' => 413,
'file_format' => 1,
'dpi' => 300,
'file_size_min' => 60,
'file_size_max' => 240,
'apply_sharpening' => 1
];
$ch = curl_init('https://www.clipimg.com/api/idphoto/make_and_check');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
'X-API-Key: YOUR_API_KEY',
'Content-Type: application/json'
],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60
]);
$resp = curl_exec($ch);
if (curl_errno($ch)) { die('cURL Error: '.curl_error($ch)); }
curl_close($ch);
echo $resp;
?>
5. Java示例(OkHttp)
import java.nio.file.*;
import java.util.Base64;
import okhttp3.*;
public class Demo {
public static void main(String[] args) throws Exception {
String api = "https://www.clipimg.com/api/idphoto/make_and_check";
String apiKey = "YOUR_API_KEY";
byte[] img = Files.readAllBytes(Paths.get("photo.jpg"));
String imgB64 = Base64.getEncoder().encodeToString(img);
String json = "{" +
"\"file\":\"" + imgB64 + "\"," +
"\"width\":295,\"height\":413,\"file_format\":1,\"dpi\":300," +
"\"file_size_min\":60,\"file_size_max\":240,\"apply_sharpening\":1" +
"}";
OkHttpClient client = new OkHttpClient.Builder().build();
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
Request req = new Request.Builder()
.url(api)
.addHeader("X-API-Key", apiKey)
.post(body)
.build();
try (Response resp = client.newCall(req).execute()) {
System.out.println(resp.code());
System.out.println(resp.body().string());
}
}
}
6. C#示例(HttpClient + System.Text.Json)
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var api = "https://www.clipimg.com/api/idphoto/make_and_check";
var apiKey = "YOUR_API_KEY";
var imgB64 = Convert.ToBase64String(await File.ReadAllBytesAsync("photo.jpg"));
var payload = new {
file = imgB64,
width = 295,
height = 413,
file_format = 1,
dpi = 300,
file_size_min = 60,
file_size_max = 240,
apply_sharpening = 1
};
using var http = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, api);
req.Headers.Add("X-API-Key", apiKey);
req.Content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
var resp = await http.SendAsync(req);
Console.WriteLine((int)resp.StatusCode);
Console.WriteLine(await resp.Content.ReadAsStringAsync());
}
}
五、响应格式与状态码说明
成功响应(全部通过)
{
"code": 0,
"msg": "证件照制作和检测都成功",
"data": {
"make": {
"code": 0,
"result": {
"image_id": "unique_image_id",
"filenames": [
{
"img_name": "image_name",
"bg_color": "white",
"preview_img_name": "preview_name",
"print_img_name": "print_name",
"preview_print_img_name": "print_preview_name"
}
]
}
},
"check": {
"code": 0,
"result": {
"check_result": [
{
"key": "eye_blink_check",
"name": "闭眼检测",
"check": 1,
"error_msg": null
},
{
"key": "mouth_neutral_check",
"name": "表情检测",
"check": 1,
"error_msg": null
}
],
"check_info": [
{ "key": "face_ratio", "name": "最终人脸比例", "value": 0.6234 },
{ "key": "head_pitch", "name": "头部俯仰角", "value": 2.34 }
]
}
}
}
}
检测未通过响应
{
"code": 431,
"msg": "证件照制作成功但检测有部分项未通过",
"data": {
"make": {
"code": 0,
"result": { }
},
"check": {
"code": 0,
"result": {
"check_result": [
{
"key": "glasses_glare_check",
"name": "眼镜反光检测",
"check": 0,
"error_msg": "检测到眼镜反光"
}
]
}
}
}
}
完整状态码列表
| 状态码 | 说明 |
|---|---|
| 0 | ✅ 制作和检测都成功 |
| 400 | 参数错误 |
| 401 | 文件格式不支持 |
| 402 | API点数不足 |
| 407 | 未检测到人脸 |
| 408 | 包含多人 |
| 413 | 人脸未正对摄像头 |
| 416 | 处理超时 |
| 431 | 制作成功,但部分检测项未通过 |
| 432 | 制作成功,但检测失败 |
六、质量参数配置建议
质量检测参数详细说明
为了让开发者能精确控制检测标准,API提供了详细的参数配置:
| 检测项 | 参数 | 推荐值 | 说明 |
|---|---|---|---|
| 对比度 | contrast_min |
40-60(标准证件照) | 值越大要求越高 |
| 亮度下限 | brightness_check_min |
90-100(标准) | 低于此值视为过暗 |
| 亮度上限 | brightness_check_max |
200-210(标准) | 高于此值视为过曝 |
典型场景参数组合
{
"宽松标准(高通过率)": {
"contrast_min": 30,
"brightness_check_min": 70,
"brightness_check_max": 220,
"适用场景": "社交媒体、会员卡等"
},
"标准证件照(推荐)": {
"contrast_min": 45,
"brightness_check_min": 90,
"brightness_check_max": 210,
"适用场景": "大部分证件照应用"
},
"严格要求(高质量)": {
"contrast_min": 60,
"brightness_check_min": 100,
"brightness_check_max": 200,
"适用场景": "政府证件、护照等"
}
}
不同应用场景推荐亮度设置:
{
"身份证/护照": { "min": 100, "max": 200 },
"高考/考研": { "min": 90, "max": 210 },
"简历头像": { "min": 70, "max": 220 },
"员工证件": { "min": 80, "max": 220 }
}
七、扣点规则与优势对比
扣点规则
| 接口 | 调用费用 | 下载无水印原图 | 下载无水印排版照 |
|---|---|---|---|
/make_and_check |
免费 | 50点/次 | 50点/次 |
/make |
免费 | 30点/次 | 50点/次 |
/check |
1点/次 | - | - |
为什么推荐使用/make_and_check?
- 💰 更经济 :相比先
/make再单独调/check,一体化接口无需额外检测点数 - 🎯 更精准:检测针对的是最终成品照,能准确反映能否通过官方审核
- ⚡ 更高效:一次请求完成所有操作,减少开发和维护复杂度
结果保留说明 :制作结果保留1小时,1小时后自动删除,请及时保存。重复下载同一张照片不会重复扣费。
八、最佳实践建议
1. 合理配置检测参数
根据业务场景设置合适的检测阈值,既不过于宽松导致不合格照片漏网,也不过于严格导致大量误判。
2. 做好错误处理与用户提示
{
"建议": {
"错误处理": "对各种状态码进行完整的错误处理",
"参数校验": "发送请求前对参数进行本地校验",
"用户体验": "对检测未通过的项目,给用户提供具体的改进建议"
}
}
例如,检测到眼镜反光 时,提示用户"请摘下眼镜或调整拍摄角度";
检测到闭眼时,提示"请睁大眼睛,正面面对镜头"。
3. JPG格式体积控制
如果使用JPG格式(file_format: 1),可以设置:
{
"file_size_min": 60,
"file_size_max": 240,
"apply_sharpening": 1
}
file_size_min:确保文件不会太小(模糊)file_size_max:控制文件上限(节省存储)apply_sharpening:当文件过小时通过锐化增加体积,同时提升清晰度
4. 实物打印注意事项
如果需要打印实物照片,务必在打印机设置中选择:
✅ 缩放/比例:选择 "实际大小" 或设定缩放比例为 "100%"
✅ 边距范围:选择 "无边距" 模式
❌ 不要选择"适应纸张大小"或"调整为可打印区域大小"
否则打印机默认会将照片缩小,导致物理尺寸偏小、无法被常规裁切模具裁切。
九、总结
可立图ClipImg的证件照制作并检测一体化API ,以一次请求、双重功能的核心优势,为各类证件照应用场景提供了"制作+质检"的闭环解决方案。
无论是开发者构建自助照相亭 、在线报名系统 ,还是打造移动端证件照应用,这个API都能帮助你:
- ✅ 显著提升用户照片的审核通过率
- ✅ 降低因照片不合格带来的用户投诉和客服成本
- ✅ 简化开发流程,无需维护两套接口
现在就去注册,获取你的API Key,让每一张证件照都一次过审!
