python如何批量生成psd
作者:LMY~~
文章总结:如何使用Python批量生成PSD文件,包括安装Python环境和ps的步骤,提供个人经验并鼓励大家支持脚本之家
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()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
