python批量生成psd
在之前需要安装python环境和ps
来看实例
# -*- coding: utf-8 -*-
import win32com.client
import csv
import os
# 配置区(按需修改)=====================================
csv_path = r'e:\psd\jobs.csv' # 简历数据路径
psd_template = r'e:\psd\zhaopin.psd' # psd模板路径
output_folder = r'e:\psd\output' # 成品输出目录
text_layer_map = { # 图层名称与csv列名对应关系
'company': 'company',
'position': 'position',
'salary': 'salary'
}
# =====================================================
def main():
# 创建photoshop实例
ps = win32com.client.dispatch("photoshop.application")
if ps:
print("成功创建 photoshop 实例")
else:
print("创建 photoshop 实例失败")
# 读取csv数据
with open(csv_path, 'r', encoding='utf-8') as f:
reader = csv.dictreader(f)
data = [row for row in reader]
# 创建输出目录
os.makedirs(output_folder, exist_ok=true)
# 处理每条数据
for index, item in enumerate(data, 1):
# 复制模板文件
output_psd = os.path.join(output_folder, f'招聘_{index}.psd')
open(psd_template, 'r') # 检查模板是否存在
doc = ps.open(psd_template)
try:
# 遍历所有图层
for layer in doc.layers:
# 仅处理文本图层
if layer.kind == 2: # 2表示文本图层
layer_name = layer.name
if layer_name in text_layer_map:
csv_column = text_layer_map[layer_name]
new_text = str(item.get(csv_column, ''))
# 中文换行处理(每10个字符换行)
if len(new_text) > 10:
new_text = '\n'.join([new_text[i:i + 10] for i in range(0, len(new_text), 10)])
layer.textitem.contents = new_text
# 导出为png
png_path = output_psd.replace('.psd', '.png')
export_options = win32com.client.dispatch('photoshop.exportoptionssaveforweb')
export_options.format = 13 # png格式
export_options.png8 = false # 使用24位png
doc.export(exportin=png_path, exportas=2, options=export_options)
# 保存psd
doc.saveas(output_psd)
print(f'已生成:{output_psd}')
finally:
doc.close(2) # 关闭文档不保存修改(因为已另存)
if __name__ == '__main__':
main()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论