证件照处理动画演示

一键证照 · AI智能专业证件照制作

精准人脸分析:只需一张正面人像照片,全程无需手动调整,傻瓜式操作,一键生成各规格专业证件照

去背景:使用顶级专业抠图接口Remove.bg,精准提取人像,可任选证件照底色

专业:证件照,签证照全部规格可选,严格按照官方标准裁剪,并可任意自定义证件照规格

极速:上传一张原始照片,即可1秒生成任一证件照

限时免费活动进行中,欢迎体验......

一键证照 · 专业证件照处理流程演示

证件照处理步骤1

1. 上传一张正面人像原始照片

证件照处理步骤2

2. 对您的照片进行预处理,使用顶级抠图算法去除背景

证件照处理步骤3

3. 选择背景色及证件照规格,进行精准人脸分析,确定人脸五官位置

证件照处理步骤4

4. 严格遵照证件规格标准,头高标准确定缩放比例,眼顶距确定人像位置,生成专业证件照。

证件照制作

  • 一寸照 (319*437px 27*37mm)
  • 小一寸 (307*378px 26*32mm)
  • 驾照一寸 (260*378px 22*32mm)
  • 二寸照 (390*567px 33*48mm)
  • 社保卡 (358*441px 26*32mm)
  • 电子学生证 (272*354px 26*32mm)
  • 中国护照 (390*567px 33*48mm)
  • 港澳通行证 (390*567px 33*48mm)
  • 美国签证 (602*602px 51*51mm)
  • 日本签证 (413*531px 35*45mm)
  • 欧洲签证 (413*531px 35*45mm)
  • 入台签注 (413*531px 35*45mm)
  • 东南亚签证 (413*531px 35*45mm)
  • 泰国签证 (472*709px 40*60mm)
  • 马来西亚签证 (413*591px 35*50mm)
  • 新西兰签证 (413*531px 35*45mm)
  • 澳大利亚签证 (413*531px 35*45mm)
  • 加拿大签证 (413*531px 35*45mm)
  • 英国签证 (413*531px 35*45mm)
自定义尺寸
底色: ℹ️
📷 拍摄建议
勿戴黑框眼镜(影响人脸识别)
背景单一(白墙)
光线充足均匀
姿势端正
勿戴首饰
头发平整
露出耳眉

照片裁剪服务API文档

API 文档简介

本站特别为B端客户提供专业的证件照裁剪API接口服务,该服务不对个人用户开放。个人客户可以通过我们的网站、PC客户端、APP客户端或小程序等平台,享受便捷的证件照制作服务。

服务功能:

您只需发送一条HTTP POST请求,请求参数包括原始人像照片以及所需的证件照规格或自定义参数,即可获得符合要求的证件照。我们的服务包括照片去背景、人脸分析,按标准裁剪等操作,所有处理工作都将在我们的服务器上完成。此服务接口对接简便,处理请求简洁高效,能够快速提供精准的证件照,极大提升证件照裁剪处理的效率,广泛适用于各类需要证件照处理的领域。

服务特点:

. 高效精准:全程自动化处理,确保每张证件照符合标准要求。

. 简便易用:只需传入照片和规格参数,快速获取处理后的证件照。

. 广泛适用:适用于各种行业和平台,尤其适合需要批量或高频次证件照裁剪的企业客户。

注册接口

接口URL: https://openapi.ezidphoto.com/api/register

使用用户名密码参数请求注册新用户,注册成功后返回访问令牌和刷新令牌,后续照片裁剪等请求需要附带访问令牌数据,访问令牌有效期1小时,超时需要调用刷新接口来刷新令牌,python请求示例源代码:

                REGISTER_URL = "https://openapi.ezidphoto.com/api/register"
                USERNAME = "testuser"
                PASSWORD = "123456"

                def register():                
                  response = requests.post(REGISTER_URL, json={
                      "username": USERNAME,
                      "password": PASSWORD
                  })
                  if response.status_code == 200:                      
                      data = response.json()
                      access_token = data.get("access_token")
                      refresh_token = data.get("refresh_token")
                      print("注册成功:")
                      return access_token, refresh_token                  
                  else:
                      print("注册失败:", response.text)
                      return None, None
           
                access_token, refresh_token = register()
              

登录接口

接口URL: https://openapi.ezidphoto.com/api/login

使用用户名密码参数发送登录请求,登录成功后返回访问令牌和刷新令牌,后续照片裁剪等请求需要附带访问令牌数据,访问令牌有效期1小时,超时需要调用刷新接口来刷新令牌,python请求示例源代码:

                LOGIN_URL = "https://openapi.ezidphoto.com/api/login"
                USERNAME = "testuser"
                PASSWORD = "123456"

                def login_get_token():                
                  response = requests.post(LOGIN_URL, json={
                      "username": USERNAME,
                      "password": PASSWORD
                  })
                  if response.status_code == 200:                      
                      data = response.json()
                      access_token = data.get("access_token")
                      refresh_token = data.get("refresh_token")
                      print("登录成功:")
                      return access_token, refresh_token                      
                  else:
                      print("登录失败:", response.text)
                      return None, None
           
                access_token, refresh_token = login_get_token()
              

登录接口

接口URL: https://openapi.ezidphoto.com/api/refresh

访问令牌有效期1小时,超时需要调用刷新接口来刷新令牌,请求参数是注册或登录用户后保存的访问令牌和刷新令牌,python请求示例源代码:

              REFRESH_URL = "https://openapi.ezidphoto.com/api/refresh"              

              def login_refresh_token(token, refreshtoken):                  
                  headers = {
                      "Authorization": f"Bearer {token}",            
                      "X-Refresh-Token": refreshtoken
                  }
                  resp = requests.post(REFRESH_URL, headers=headers)
                  if resp.status_code == 200:
                      data = resp.json()
                      access_token = data.get("access_token")
                      refresh_token = data.get("refresh_token")
                      return access_token, refresh_token
                  else:
                      return None, None                  
              
              access_token, refresh_token = login_refresh_token(old_token,old_refreshtoken)
            

裁剪请求接口

接口URL: https://openapi.ezidphoto.com/api/crop

核心接口服务,通过此接口进行证件照裁剪请求,请求参数分为两部分:1. 是原始照片图像的字节数组; 2. 您的证件照需求,支持自定义尺寸规格或标准规格照片,会根据参数自适应处理。接口返回裁剪好的证件照图片。

接口请求参数:分为两部分: 1. 是原始照片图像的字节数组; 2. 您的证件照需求,支持自定义尺寸规格或标准规格照片,服务器根据请求参数自适应处理。

接口返回:裁剪处理好的证件照图片。

请注意: 1. 测试API用户未开通“去背景”功能,background相关参数值无效。2. 原始照片请不要戴黑框眼镜拍摄,可能会导致证件照人脸分析以及裁剪失败。

python请求示例源代码:

                #证件照规格需求请求参数,支持如下两种格式:

                #1. 自定义尺寸请求
                SPEC = {
                  "crop": True,                             #是否裁剪,设置为True
                  "Dpi": 300,                               #证件照保存的DPI值,默认300
                  "dimensions": {"width_px": 359, "height_px": 480},
                  "face": {"height_min": 280, "height_max": 330},
                  "eyes": {"y_min": 180, "y_max": 200},
                  "background": {"remove": False, "fillcolor": True, "color": "#FFFFFF"}}
                  
                  #尺寸值参数分别代表像素宽度、像素高度、最大头高、最小头高、最大眼顶距、最小眼顶距。可参考本站图示。

                #2. 标准规格证件照,以规格名称请求
                SPEC = {
                  "crop": True,
                  "Dpi": 300,
                  "name": "日本签证",
                  "background": {"remove": False, "fillcolor": False, "color": "#FFFFFF"}}

                # remove 是否使用“去背景”功能。 测试用户此参数值无效。
                # fillcolor 如果使用“去背景”功能,填充照片底色值,False时返回背景镂空PNG图片,后续自行处理底色。测试用户此参数值无效。
                    
                IMAGE_PATH = r"C:\test.jpg"
                CROP_URL = "https://openapi.ezidphoto.com/api/crop"

                # ---- 裁剪请求 ----
                def send_crop_request(token):                    
                    with open(IMAGE_PATH, "rb") as img_file:
                        multipart_data = MultipartEncoder(
                            fields={
                                "image": ("photo.jpg", img_file, "image/jpeg"),
                                "spec": (None, json.dumps(SPEC), "application/json")
                            }
                        )

                        headers = {
                            "Content-Type": multipart_data.content_type,
                            "Authorization": f"Bearer {token}"                            
                        }

                        response = requests.post(CROP_URL, data=multipart_data, headers=headers)

                        if response.status_code == 200:
                            with open("cropped_photo.jpg", "wb") as f:
                                f.write(response.content)
                            print("✅ 裁剪成功!图片已保存")
                        else:
                            print(f"❌ 请求失败 {response.status_code}: {response.text}")

                if __name__ == "__main__":                 
                  access_token, refresh_token = login_get_token()                    
                  if access_token:
                      send_crop_request(access_token)