Frage

Ich habe eine mehrsprachige Website und muß den Prozess der Aktualisierung textlayers in psd-Dateien aus einer CSV-Quelle automatisieren.

Ich weiß, dass es möglicherweise aufgrund geänderter Breiten Pannen in der psp sein, aber trotzdem wäre es viel helfen, den Text innerhalb der Dokumente zu haben.

Was sind meine Optionen?

EDIT:

Murmelschlurmel hat eine funktionierende Lösung. Hier ist der Link auf die Adobe-Dokumentation.

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

Das Format der CSV-Datei ist nicht so schön: Sie müssen eine Spalte für jede Variable. Ich würde für jede Variable eine Zeile erwarten.

Es funktioniert mit Umlaute (ä, ö etc)

EDIT 1:

Eine andere Lösung ist com zu verwenden Photoshop zu automatisieren. Das ist schön, wenn man ein paar Vorlagen (Buttons), die geänderte Text benötigen. Hier ist mein Skript in Python, die Sie starten bekommen könnten.

Sie müssen eine Excel-Datei mit Spalten haben: TemplateFileName, TargetFileName, Targetformat, Text (Dh template.psd, button1, gif, NiceButton). Die erste Zeile des Bogens wird nicht verwendet. Die psp Vorlage sollte nur 1 Textebene haben und kann nicht Layergruppen haben.

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)
War es hilfreich?

Lösung

Sie können mit "Data Driven Design", dies zu tun. Es gibt auch ein Konzept der Daten design in Informatik gefahren, aber so weit wie möglich sehe dies nicht nicht im Zusammenhang mit der Verwendung des Wortes in Photoshop.

Hier ist, wie es weitergeht:

Legen Sie das Bild in Photoshop und definieren Sie Ihre Variablen mit Bild> Variable> definieren .

Dann wandeln Sie Ihre csv in ein Format, kann Photoshop lesen. Ich hatte die besten Erfahrungen mit delimted Text .

laden schließlich die Textdatei in Photoshop mit Bilder> Variablen> Datensatz und lassen Sie Photoshop alle Iterationen speichern.

Als ich das erste versuchte, fand ich, dass die Photoshop-Hilfedatei genug Details nicht geben. Ich suchte im Internet für Photoshop „Datensatz“ und fand einige gute Tutorials, z.B. dieses von digitaltutors .

Andere Tipps

Es könnte etwas weg zu viel sein, aber ich habe Adobe Altercast / Grphics Server verwendet genau gleiches Problem zu behandeln.

Auch wenn es nur Text GIF / JPG-Bild, können Sie Python + PIL (Python Imaging Library) verwenden. Hier ist ein Beispielcode (funktioniert unter Windows OS mit Arial und Osaka Schriften installiert.)

#!/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")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top