7

我有一个多语言网站,需要自动化从 csv 源更新 psd 文件中的文本层的过程。

我知道由于宽度的变化,psp 中可能会出现故障,但无论如何,将文本放在文档中会有很大帮助。

我有哪些选择?

编辑:

Murmelschlurmel 有一个可行的解决方案。这是 Adob​​e 文档的链接。

http://livedocs.adobe.com/en_US/Photoshop/10.0/help.html?content=WSfd1234e1c4b69f30ea53e41001031ab64-740d.html

csv 文件的格式不是很好:每个变量都需要一列。我希望每个变量都有一行。

它适用于变音符号(ä、ö 等)

编辑1:

另一种解决方案是使用 com 自动化 Photoshop。如果您有几个需要更改文本的模板(按钮),那就太好了。这是我在 python 中的脚本,可能会让你开始。

您需要一个包含以下列的 excel 文件:TemplateFileName, TargetFileName, TargetFormat, Text (ie template.psd, button1, gif, NiceButton)。不使用工作表的第一行。psp模板应该只有1个textlayer,不能有layergroups。

import win32com.client
import xlrd 
spreadsheet = xlrd.open_workbook("text_buttons.xls")
sheet = spreadsheet.sheet_by_index(0)

psApp = win32com.client.Dispatch("Photoshop.Application")  
jpgSaveOptions = win32com.client.Dispatch("Photoshop.JPEGSaveOptions")  
jpgSaveOptions.EmbedColorProfile = True
jpgSaveOptions.FormatOptions = 1
jpgSaveOptions.Matte = 1
jpgSaveOptions.Quality = 1

gifSaveOptions = win32com.client.Dispatch("Photoshop.GIFSaveOptions")



for rowIndex in range(sheet.nrows):
    if(rowIndex > 0):
        template =  sheet.row(rowIndex)[0].value
        targetFile = sheet.row(rowIndex)[1].value
        targetFileFormat = sheet.row(rowIndex)[2].value
        textTranslated = sheet.row(rowIndex)[3].value
        psApp.Open(r"D:\Design\Produktion\%s" % template ) 
        doc = psApp.Application.ActiveDocument

        for layer in doc.Layers:  
            if (layer.Kind == 2):
                layer.TextItem.Contents = textTranslated
                if(targetFileFormat == "gif"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, gifSaveOptions,  True, 2)
                if(targetFileFormat == "jpg"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, jpgSaveOptions,  True, 2)
4

2 回答 2

22

您可以使用“数据驱动设计”来执行此操作。计算机科学中也有数据驱动设计的概念,但据我所知,这与 Photoshop 中这个词的使用无关。

以下是如何进行:

在 Photoshop 中加载图像并使用Image > Variable > Define 定义变量

然后将您的 csv 转换为 Photoshop 可以读取的格式。我对制表符分隔的文本有最好的体验。

最后在 Photoshop 中使用图像 > 变量 > 数据集加载文本文件,让 Photoshop 保存所有迭代。

当我第一次尝试这个时,我发现 Photoshop 帮助文件没有提供足够的细节。我在 Internet 上搜索了Photoshop“数据集”并找到了一些不错的教程,例如来自digitaltutors的这个。

于 2009-04-21T13:57:35.577 回答
1

它可能有点过分,但我使用 Adob​​e AlterCast/Grphics 服务器来处理完全相同的问题。

此外,如果它只是文本 GIF/JPG 图像,您可以使用 Python+PIL(Python 图像库)。这是一个示例代码(适用于安装了 Arial 和 Osaka 字体的 Windows 操作系统。)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import ImageFont, ImageDraw, Image
#font = ImageFont.truetype("/usr/share/fonts/bitstream-vera/Vera.ttf", 24)
#font = ImageFont.truetype("futuratm.ttf", 18)
font = ImageFont.truetype("arial.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), "Test Images", font=font, fill="#000")
im.save("TestImg_EN.gif", "GIF")


font = ImageFont.truetype("osaka.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), u"テストイメージ", font=font, fill="#000")
im.save("TestImg_JP.gif", "GIF")
于 2009-03-31T13:50:28.410 回答