ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

HivisionIDPhotos 如何使用 set_kb 接口把证件照大小精确调整到指定 KB?

HivisionIDPhotos 如何使用 set_kb 接口把证件照大小精确调整到指定 KB? HivisionIDPhotos 如何使用 set_kb 接口把证件照大小精确调整到指定 KB【免费下载链接】HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。项目地址: https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos很多报名系统、考试报名或招聘网站会对上传的证件照做文件大小限制比如“照片大小 20–100 KB”。HivisionIDPhotos 的 API 服务提供了set_kb接口接收一张图像和目标文件大小以 KB 为单位如果设置的 KB 值小于原文件则调整压缩率如果设置的 KB 值大于源文件则通过给文件头添加信息的方式调大 KB 值目标是让图像的最终大小与设置的 KB 值一致。本文给出启动服务、调用接口、验证结果大小的完整操作路径。前提启动 API 后端服务set_kb是 API 服务的一个接口请求前先启动后端。环境要求来自 READMEPython 3.7项目主要测试在 python 3.10建议使用 conda 创建 python3.10 虚拟环境安装依赖pip install -r requirements.txt pip install -r requirements-app.txt下载模型python scripts/download_model.py --models all然后在仓库根目录启动服务详见 README 与 API 文档python deploy_api.pydeploy_api.py 内部使用uvicorn.run(app, host0.0.0.0, port8080)启动 FastAPI 服务即接口基地址为http://127.0.0.1:8080。调用 set_kb 接口接口请求参数来自 docs/api_CN.md参数名类型必填说明input_imagefile和input_image_base64二选一传入的图像文件图像文件需为 RGB 三通道图像。input_image_base64str和input_image二选一传入的图像文件的 base64 编码图像文件需为 RGB 三通道图像。kbint否输出照片的 KB 值。dpiint否图像分辨率默认为300。返回参数参数名类型说明statusint状态码true表示成功image_base64str设置 KB 大小之后的图像的 base64 编码注意接口对输入有明确要求图像需为 RGB 三通道图像所以建议传入加好背景色的 JPG 证件照而不是透明底 RGBA 图。方式一cURLdemo/images/test0.jpg是仓库自带的测试图约 204 KB把它压缩到 50 KBcurl -X POST \ http://127.0.0.1:8080/set_kb \ -H accept: application/json \ -H Content-Type: multipart/form-data \ -F input_imagedemo/images/test0.jpg;typeimage/jpeg \ -F kb50 \ -F dpi300需要换成自己的照片时替换demo/images/test0.jpg为实际图片路径kb改成目标 KB 值即可dpi不传时默认300。方式二Python requestsimport requests # 设置请求的 URL url http://127.0.0.1:8080/set_kb # 设置文件和其他表单数据 input_image_path demo/images/test0.jpg files {input_image: open(input_image_path, rb)} data {kb: 50, dpi: 300} # 发送 POST 请求 response requests.post(url, filesfiles, datadata) # 检查响应 if response.ok: # 输出响应内容 print(response.json()) else: # 输出错误信息 print(fRequest failed with status code {response.status_code}: {response.text})代码中的input_image_path需替换为你自己的 RGB 图像路径data里的kb为目标 KB 值。验证结果大小接口返回的是 base64 编码要核对实际文件大小需要解码落盘。上面的 Python 代码可以改成import base64 if response.ok: result response.json() if result[status]: image_bytes base64.b64decode(result[image_base64]) with open(output_kb.jpg, wb) as f: f.write(image_bytes) print(len(image_bytes) / 1024, KB) else: print(result)判断方式以文档返回参数为准status为true表示处理成功image_base64即调整后的图像把落盘文件的实际大小与kb参数对照即可确认是否达到目标值。若status为false响应中会带error信息。实现机制与限制从 hivision/utils.py 中set_kb最终调用的resize_image_to_kb可以看到具体做法以 JPEG 格式编码初始quality为 95若文件仍大于目标 KB每次将 quality 降低 5 再试直到文件小于等于目标 KB 或 quality 降到 1编码结果小于目标 KB 时通过追加填充字节把文件补齐到目标大小这就是文档所说“给文件头添加信息的方式调大 KB 值”因此目标 KB 越小压缩率压得越低图像清晰度损失越大设置目标值时应留有余量输入必须能解码为 RGB 三通道图像接口内用cv2.imdecode(..., cv2.IMREAD_COLOR)读取传入 RGBA 透明底图时透明通道会被处理掉应先调用add_background接口加上背景色再调set_kb。另外add_background添加背景色和 generate_layout_photos生成六寸排版照两个接口也带有可选的kb参数如果是在生成证件照的链路上顺带控制大小可以在那一步直接带上不必单独再调set_kb。下一步接口返回的 base64 图像可直接在前端合成预览或转存文件后上传更多参数与请求示例见 docs/api_CN.mdDocker 部署方式见 README。【免费下载链接】HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。项目地址: https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表