[特殊字符] 证件照制作+检测一体化API:一次调用,过审无忧!

还在为证件照审核不通过而烦恼?闭眼、阴阳脸、眼镜反光......这些坑你踩过几个?可立图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,让每一张证件照都一次过审!

相关推荐
qcx232 小时前
【AI Daily 2026-06-05】「持续迭代」已成为 2026 年 Agent 研究的核心命题
人工智能·python·agent
是有头发的程序猿2 小时前
AI Agent自动化实战!基于OpenClaw淘宝商品详情API,实现无人化商品采集与分析
大数据·人工智能·自动化
奔袭的算法工程师2 小时前
论文解读--BEV-radar:: bidirectional radar-camera fusion for 3D object detection
人工智能·算法·目标检测·计算机视觉·自动驾驶·信号处理
fan65404142 小时前
教育培训行业AI搜索优化服务商选型:4个技术评估标准
人工智能
烛之武2 小时前
《深度学习基础与概念》笔记(2)
人工智能·笔记·深度学习
甲维斯2 小时前
这个帅啊!真·无限流冒险游戏!
人工智能
勤自省2 小时前
OpenCV 30 讲学习总结:从零基础到机器人视觉
人工智能·opencv·计算机视觉·机器人
腾视科技AI2 小时前
安全驾驶 智在掌控|腾视科技ES06车载智能终端,为车辆运营赋能
大数据·人工智能·科技·安全·ai·边缘计算·车载智能终端
chsmiao2 小时前
深度学习之概率论
人工智能·深度学习·概率论