Pregunta

Tengo un sitio web en varios idiomas y la necesidad de automatizar el proceso de actualización de textlayers en PSD-archivos de un csv-fuente.

Sé que puede haber fallos en la PSP, debido a las modificaciones de los anchos, pero de todos modos sería una gran ayuda para que el texto dentro de los documentos.

¿Cuáles son mis opciones?

EDIT:

Murmelschlurmel tiene una solución de trabajo. Aquí está el enlace a la documentación de Adobe.

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

El formato del csv en archivos no es tan agradable: se necesita una columna para cada variable. Yo esperaría que una fila para cada variable.

Funciona con diéresis (ä, ö, etc)

EDIT 1:

Otra solución es utilizar com para automatizar Photoshop. Eso es bueno si usted tiene un par de plantillas (botones) que necesitan texto cambiado. Aquí está mi script en Python que podrían conseguir que startet.

Es necesario tener un archivo de Excel con las columnas: TemplateFileName, TargetFileName, TargetFormat, texto (Es decir template.psd, button1, gif, NiceButton). No se utiliza la primera fila de la hoja. La plantilla psp sólo debe tener 1 textlayer y no puede tener 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)
¿Fue útil?

Solución

Puede utilizar "Driven Design datos" para hacer esto. También hay un concepto de datos impulsadas diseño en informática, pero por lo que puedo ver esto no no está relacionado con el uso de la palabra en Photoshop.

Esta es la forma de proceder:

Carga tu imagen en Photoshop y definir las variables con Imagen> Variable> Definir .

A continuación, convertir su CSV a un formato Photoshop puede leer. Yo tenía las mejores experiencias con texto delimted .

Por último cargar el archivo de texto en Photoshop con Imágenes> Variables> conjunto de datos y dejar que Photoshop guardar todas las iteraciones.

Cuando probé primero esto, me encontré con que el archivo de ayuda de Photoshop no proporcionó suficientes detalles. Busqué en Internet para photoshop "conjunto de datos" y encontré algunos buenos tutoriales, por ejemplo éste de digitaltutors .

Otros consejos

Puede ser que sea poco fuera demasiado, pero he utilizado servidor de Adobe AlterCast / Grphics para manejar exactamente el mismo problema.

Además, si su imagen GIF / JPG solo texto, puede utilizar Python + PIL (Python Imaging Library). Aquí es un ejemplo de código (funciona en el sistema operativo Windows con fuentes Arial y Osaka instalados.)

#!/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")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top