Pregunta

Tengo un PSD multicapa, con una capa específica de ser texto no rasterizado. Estoy tratando de encontrar una manera de que pueda, de una fiesta / Perl / Python / lo-otro programa:

  1. cargar el PSD
  2. editar el texto en dicha capa
  3. Acoplar todas las capas de 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 dos primeros pasos de alguna otra manera programática, siempre puedo usar ImageMagick para llevar a cabo los dos últimos pasos.

Después de un par de horas de googlear y búsqueda de CPAN y PyPI, todavía no han encontrado nada prometedor. ¿Alguien tiene consejos o ideas sobre el tema?

¿Fue útil?

Solución

Si no te gusta usar el apoyo oficial de AppleScript, JavaScript, VBScript o, a continuación, también existe la posibilidad de hacerlo en Python. Esto se explica en el artículo Photoshop scripts con Python , que se basa en la interfaz COM del Photoshop.

Yo no lo he probado, por lo que en caso de que no funciona para usted: Si el texto se conserva después de conversión a SVG , entonces solo puede sustituirlo por cualquier herramienta que te gusta. Después, convertirlo a PNG (por ejemplo. Por inkscape --export-png=...).

Otros consejos

¿Ha considerado abrir y editar la imagen en GIMP? Tiene muy buen soporte PSD, y puede ser escrito en varios idiomas.

La que utilice depende en parte de su plataforma, la interfaz de Perl no funcionaba en Windows el último que sabía. Creo que el esquema se admite en todos los puertos.

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

  1. Crear una imagen muy simple en Photoshop, tal vez un fondo blanco y una capa de texto, con el que se encuentre una longitud conocida.
  2. Busca en el archivo para el texto, y con un editor hexadecimal, Búsqueda cercana a la longitud del texto (que puede o no ser parte del formato de archivo).
  3. Intente cambiar el texto, primero en una serie de la misma longitud, a continuación, a algo más corta / larga.
  4. Abrir en Photoshop después de cada cambio para ver si el archivo está dañado.

Este método, si es viable, sólo funcionará si la capa en cuestión contiene una cadena conocida, que puede ser sustituido por el otro valor. Tenga en cuenta que no tengo ni idea de si esto va a funcionar, ya que no tengo Photoshop en este equipo para tratar a cabo este método. Tal vez usted puede hacer que funcione?

En cuanto a la conversión a PNG, yo estoy en una pérdida. Si el guión es la sustitución en Python, es posible que pueda hacerlo con la Biblioteca de imágenes de Python (PIL, que parece apoyarlo ), pero por lo demás es posible que sólo tenga que abrir Photoshop para hacer la conversión. Lo que significa que probablemente no sería la pena para cambiar el texto de manera pragmática en el primer lugar.

Puede utilizar Photoshop en sí de hacer esto con OLE. Usted tendrá que instalar Photoshop, por supuesto. Win32 :: OLE en Perl o módulo similar en Python. Ver http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide .pdf

Si usted va a automatizar Photoshop, que bastante tienen que utilizar sistemas propios de secuencias de comandos de Photoshop. Creo que no hay una forma de evitar eso.

Mirando el problema de una manera diferente, se puede exportar desde Photoshop a algún otro formato que soporta capas, como PNG, que es editable por ImageMagick?

También puede probar esto usando Node.js. Hice una herramienta de línea de comandos PSD

Una línea de comandos de instalación (necesita instalar NodeJS / NPM)

npm install -g psd-cli

A continuación, puede usarlo escribiendo en su terminal

psd myfile.psd -t

Se puede extraer el código para utilizarlo desde otro script nodo o usarlo a través de su cáscara es de otro / Perl / lo que sea escritura del golpe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top