Skip to main content

psd文件解析接口

前言

这是一个psd文件解析项目,支持调用adobe官方api操作psd文件或者调用本地photoshop软件操作psd文件。

操作演示

接口测试1

接口结构

核心功能

image-20220922214400836

原理实现

image-20220922193933989

接口参数

基础功能对应字段调用本地PS调用adobe-API备注
要修改的psd文件:a.psdfile_name✔️✔️
文字图层内容new_contents✔️✔️
文字图层字体修改new_fonts✔️⛔(官方API限制,仅支持部分adobe的字体)2022年10月最后一次看,
已经完全支持自定义字体,当前没写进业务中
文字图层大小修改font_sizes✔️✔️
智能对象图层文字内容修改new_contents✔️⚠(官方API限制,通过多次调用实现)需要等待官方支持外链智能对象功能上线才能解决
智能对象图层文字字体修改new_fonts✔️⛔(官方API限制,仅支持部分adobe的字体)2022年10月最后一次看,
已经完全支持自定义字体,当前没写进业务中
智能对象文字超边界修复font_sizes✔️✔️
智能对象图层图片替换new_contents✔️✔️
自定义尺寸:长、宽widthheight✔️✔️
自定义分辨率(DPIdpi✔️✔️
支持多种格式输出:jpgpngpdftiffoutput_type✔️✔️
输出的图片模式,rgbcmykimage_mode✔️
指定颜色配置.icc文件✔️config.adobe_icc_file_cmyk字段
处理引擎:adboe-api或者ps-apiuse_api✔️✔️linux下仅支持adobe
  • 接口已实现接口所有需求的所有功能
  • adobe-API对智能对象修改有一定局限性,部分需求通过调用多次实现,官方明确表示后续接口会增加该方面功能。
  • adobe-API需要用国外服务器部署,国内延迟非常大
  • 官方支持的字体:https://github.com/AdobeDocs/photoshop-api-docs/blob/master/SupportedFonts.md

返回格式

返回字段类型备注
successboolean请求是否成功
msgstring提示信息
codenumber服务器状态码
resobject合成结果最终链接(图片保存到客户服务器)
// 数据格式
{
"success": true,
"msg": "请求成功",
"res": {
"url": [
"https://test-bucket-psd-tools.s3.amazonaws.com/output/888.psd_1665456429.jpg"
],
"请求耗时": 4.821,
"修改图层": 5
},
"err": null
}

项目架构

项目目录
|-- data # 关键数据存放目录
| |-- adobe # 存放adobe账号后台对应的项目文件 config.json、private.key, 一个文件夹对应一个项目名
| |-- bucket # 存储桶相关key的文件,比如aws-s3的文件就有 new_user_credentials.csv、 rootkey.csv
| |-- psd # psd 文件预处理后的存放文件夹
| `-- fonts # psd文件所有第三方字体(需要手动另外安装到系统),接口会定期上传这里的字体到存储桶
|-- docs # 一些以往的说明文件
|-- docker
| |-- web/ # docker
| | |-- Dockerfile #
| | `-- requirements.txt # docker 部署专用的requirements.txt
| |-- redis/ #
| | |-- data/ # redis容器挂载后的data目录
| | `-- redis.conf # docker挂载后映射的redis配置文件
| |-- build.sh # 部署脚本
| |-- check.sh # 环境检查脚本
| `-- docker-compose.yml # compose配置文件
|-- logs # 日志文件
|-- src # 源码目录
| |-- modules # module层,也可以当作是server层
| |-- tools # 接口层面的工具函数
| |-- utils # 关键的一些工具函数层
| |-- storages # 存储桶层
| |-- routers # 路由层
| | `-- v1 # 接口
| `-- static # 所以文件都会上传到本文件夹
| |-- temp # 临时文件夹,首次上传的文件都会存放到这里,处理后会自动删除,接口定期清理
| `-- upload # 临时文件夹
|-- config.py # 次级的配置文件,最终以config.ini 为准
`-- main.py # 接口启动文件 启动命令:python3 main.py (工作目录确保为src目录)

项目购买链接

  • 这是一个商业项目,欢迎加购(目前团队正在开发AI模型换装,可以根据平面产品图片生成不同角度,不同模特的试装展示图,真是还原度目前93%,欢迎咨询)
  • 本项目购买地址: