当前位置: 代码网 > it编程>前端脚本>Python > python如何批量生成psd

python如何批量生成psd

2026年01月17日 Python 我要评论
python批量生成psd在之前需要安装python环境和ps来看实例# -*- coding: utf-8 -*-import win32com.clientimport csvimport os#

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()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com