我有一个多语言网站,需要自动更新来自csv-source的psd文件中的文本层的过程. 我知道psp可能会因为宽度的变化而出现故障,但无论如何,将文本放在文档中会有很大帮助. 我有什么选择? 编
我知道psp可能会因为宽度的变化而出现故障,但无论如何,将文本放在文档中会有很大帮助.
我有什么选择?
编辑:
Murmelschlurmel有一个可行的解决方案.以下是Adobe文档的链接.
http://livedocs.adobe.com/en_US/Photoshop/10.0/help.html?content=WSfd1234e1c4b69f30ea53e41001031ab64-740d.html
csv文件的格式不太好:每个变量都需要一个列.我希望每个变量都有一行.
它适用于Umlaut(ä,ö等)
编辑1:
另一种解决方案是使用com来自动化Photoshop.如果您有一些需要更改文本的模板(按钮),那太好了.这是我在python中的脚本,可能会让你开始.
你需要一个包含列的excel文件:
TemplateFileName,TargetFileName,TargetFormat,Text
(即template.psd,button1,gif,NiceButton).
不使用工作表的第一行.
psp模板应该只有1个文本层,不能有图层组.
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)您可以使用“数据驱动设计”来执行此操作.计算机科学中也有一个 data driven design的概念,但据我所知,这与Photoshop中单词的使用无关.
以下是如何进行:
在Photoshop中加载图像并使用Image>定义变量.变量>限定.
然后将您的csv转换为Photoshop可以读取的格式.我有使用制表符分隔文本的最佳体验.
最后在Photoshop中使用Images>加载文本文件.变量>数据集并让Photoshop保存所有迭代.
当我第一次尝试这个时,我发现Photoshop帮助文件没有提供足够的细节.我在互联网上搜索了Photoshop的“数据集”并找到了一些很好的教程,例如这个从digitaltutors开始.