python如何批量生成psd

Written by

in

文章目录
  • 在之前需要安装python环境和ps
  • # -*- coding: utf-8 -*- import win32com.client import csv import os # 配置区(按需修改)===================================== CSV_PATH = r’E:psdjobs.csv’ # 简历数据路径 PSD_TEMPLATE = r’E:psdzhaopin.psd’ # PSD模板路径 OUTPUT_FOLDER = r’E:psdoutput’ # 成品输出目录 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()
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: python生成psd文件实例 Python通过psd-tools解析PSD文件的实现 Python通过psd-tools解析PSD文件
  • 目录
    • python批量生成psd
    • 来看实例
    • 总结

    在之前需要安装python环境和ps

    # -*- coding: utf-8 -*-
    import win32com.client
    import csv
    import os
    
    # 配置区(按需修改)=====================================
    CSV_PATH = r'E:psdjobs.csv'  # 简历数据路径
    PSD_TEMPLATE = r'E:psdzhaopin.psd'  # PSD模板路径
    OUTPUT_FOLDER = r'E:psdoutput'  # 成品输出目录
    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()
    

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • python生成psd文件实例
    • Python通过psd-tools解析PSD文件的实现
    • Python通过psd-tools解析PSD文件

    站内搜索