2009-05-12 27 views
8

Tengo una PSD de varias capas, con una capa específica que es texto no rasterizado. Estoy tratando de encontrar una manera de que pueda, de una fiesta/Perl/Python/lo-otro programa:Edición de capas de texto PSD de Photoshop programáticamente

  1. carga el PSD
  2. editar el texto en dicha capa
  3. acoplar todas las capas en la imagen
  4. guardar como un formato comprimido como PNG o JPG

inmediatamente pensé en ImageMagick, pero no creo que pueda editar la capa de texto a través de mensajería instantánea. Si puedo lograr los primeros dos pasos de alguna otra manera programática, siempre puedo usar ImageMagick para realizar los dos últimos pasos.

Después de un par de horas buscando en Google y CPAN y PyPI, todavía no he encontrado nada prometedor. ¿Alguien tiene consejos o ideas sobre el tema?

+0

Hola @EvanK, ¿tienes solución para esto? si es así, por favor comparte conmigo. – rkaartikeyan

Respuesta

5

Si no desea utilizar el AppleScript, JavaScript o VBScript oficialmente admitidos, también existe la posibilidad de hacerlo en Python. Esto se explica en el artículo Photoshop scripting with Python, que se basa en la interfaz COM de Photoshop.

No lo he probado, por lo que en caso de que no funcione para usted: Si su texto se conserva después de conversion to SVG, simplemente puede reemplazarlo con la herramienta que desee. Luego, conviértalo a PNG (por ejemplo, inkscape --export-png=...).

+0

Creo que voy a seguir esta ruta. Parece que la opción más consistente aparte de las secuencias de comandos incorporadas de PS (que si no me equivoco debe ser cancelada manualmente desde Photoshop) – EvanK

1

Si va a automatizar Photoshop, prácticamente tiene que usar los propios sistemas de scripts de Photoshop. No creo que haya una forma de evitar eso.

Al ver el problema de otra manera, ¿puede exportar desde Photoshop a otro formato compatible con capas, como PNG, que es editable por ImageMagick?

3

La única forma en que puedo pensar para automatizar el cambio de texto dentro de un PSD sería usar una sustitución basada en expresiones regulares.

  1. Cree una imagen muy simple en Photoshop, tal vez un fondo blanco y una capa de texto, con el texto siendo una longitud conocida.
  2. Busque en el archivo su texto y, con un editor hexadecimal, busque la longitud del texto (que puede o no ser parte del formato de archivo).
  3. Intente cambiar el texto, primero en una cadena de la misma longitud, y luego en algo más corto/más largo.
  4. Abra en Photoshop después de cada cambio para ver si el archivo está dañado.

Este método, si es viable, solo funcionará si la capa en cuestión contiene una cadena conocida, que puede ser sustituida por su otro valor. Tenga en cuenta que no tengo idea de si esto funcionará, ya que no tengo Photoshop en esta computadora para probar este método. Quizás puedas hacer que funcione?

En cuanto a la conversión a PNG, estoy perdido. Si la secuencia de comandos de reemplazo está en Python, es posible que pueda hacerlo con la biblioteca de imágenes de Python (PIL, which seems to support it), pero de lo contrario puede que tenga que abrir Photoshop para realizar la conversión. Lo que significa que probablemente no valga la pena cambiar el texto pragmáticamente en primer lugar.

+1

Buena idea con la edición hexadecimal, pero desafortunadamente no parece cambiar el texto en la capa (y si lo reemplazo con una cadena de diferente longitud, corrompe el archivo PSD). – EvanK

3

¿Ha considerado abrir y editar la imagen en The GIMP? Tiene muy buena compatibilidad con PSD, y se puede escribir en varios idiomas.

El que uses depende en parte de tu plataforma, la interfaz de Perl no funcionó en Windows lo último que supe. Creo que Scheme es compatible en todos los puertos.

1

También puedes probar esto usando Node.js. Hice un PSD command-line tool

comando de una línea de instalación (necesita instalar NodeJS/NPM)

npm install -g psd-cli

entonces Se puede utilizar escribiendo en su terminal

psd myfile.psd -t

Puede revise el código para usarlo desde otra secuencia de comandos del nodo o utilícelo a través de su shell desde otro script Bash/Perl/whatever.

+0

Hola @kartsims, este comando exporta los detalles de texto, pero cómo podemos cambiar el Texto en el archivo PSD? – rkaartikeyan

+0

No se puede hacer con esta lib, pruebe con PSD.js, la biblioteca de Nodo en la que se basa. Tiene muchas más características – kartsims

Cuestiones relacionadas