Question

I ai un PSD multi-couches, avec une couche spécifique étant texte non pixellisées. J'essaie de trouver un moyen que je peux, d'un bash / perl / python / whatever-else programme:

  1. charger le PSD
  2. modifier le texte dans la couche
  3. Aplatir tous les calques dans l'image
  4. enregistrer sous un format Web convivial comme PNG ou JPG

J'ai immédiatement pensé ImageMagick , mais je ne pense pas que je peux modifier la couche de texte par messagerie instantanée. Si je peux accomplir les deux premières étapes d'une autre manière programmatique, je peux toujours utiliser ImageMagick pour effectuer les deux dernières étapes.

Après quelques heures de googler et de recherche CPAN et PyPI, j'ai encore rien trouvé prometteur. Quelqu'un at-il des conseils ou des idées sur le sujet?

Était-ce utile?

La solution

Si vous ne souhaitez pas utiliser le AppleScript, JavaScript ou VBScript, puis il y a aussi la possibilité de le faire en Python officiellement pris en charge. Ceci est expliqué dans l'article scripts Photoshop avec Python , qui repose sur l'interface COM de Photoshop.

Je ne l'ai pas essayé, donc dans le cas où il ne fonctionne pas pour vous: Si votre texte est conservée après conversion SVG, vous pouvez simplement le remplacer par quel outil vous aimez. Par la suite, le convertir en PNG (par exemple. Par inkscape --export-png=...).

Autres conseils

Avez-vous envisagé ouvrir et modifier l'image dans GIMP? Il a un très bon soutien PSD, et peut être scénarisé en plusieurs langues.

Lequel vous utilisez dépend en partie de votre plate-forme, l'interface Perl ne fonctionne pas sous Windows le dernier que je savais. Je crois que le schéma est pris en charge dans tous les ports.

La seule façon que je peux penser à automatiser le changement de texte à l'intérieur d'un PSD serait d'utiliser une substitution à base de regex.

  1. Créer une image très simple dans Photoshop, peut-être un fond blanc et une couche de texte, le texte étant une longueur connue.
  2. Recherchez le fichier pour votre texte, et avec un éditeur hexadécimal, rechercher à proximité de la longueur du texte (qui peut ou ne peut pas faire partie du format de fichier).
  3. Essayez de changer le texte, d'abord à une chaîne de la même longueur, alors quelque chose de plus court / plus.
  4. Ouvrir dans Photoshop après chaque modification pour voir si le fichier est corrompu.

Cette méthode, si viable, ne fonctionnera que si la couche en question contient une chaîne connue, qui peut être remplacé par votre autre valeur. Notez que je ne sais pas si cela fonctionnera, comme je n'ai pas Photoshop sur cet ordinateur pour essayer cette méthode sur. Peut-être que vous pouvez le faire fonctionner?

En ce qui concerne la conversion en .png, je suis à une perte. Si le script remplaçant est en Python, vous pourriez être en mesure de le faire avec la Python Imaging Library (PIL, qui semble le soutenir ), mais sinon vous pouvez juste avoir à ouvrir Photoshop pour effectuer la conversion. Ce qui signifie qu'il ne serait probablement pas la peine de modifier le texte de manière pragmatique, en premier lieu.

Vous pouvez utiliser Photoshop lui-même pour le faire avec OLE. Vous devrez installer Photoshop, bien sûr. ole Win32 en Perl ou un module similaire en Python. Voir http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide .pdf

Si vous allez automatiser Photoshop, vous avez à peu près à utiliser les systèmes de scripts de Photoshop. Je ne pense pas qu'il y ait un moyen de contourner cela.

En regardant le problème d'une manière différente, vous pouvez exporter de Photoshop vers un autre format qui prend en charge les couches, comme PNG, qui est modifiable par ImageMagick?

Vous pouvez également essayer en utilisant Node.js. Je fis un outil de ligne de commande PSD

commande d'une ligne d'installation (besoins NodeJS / NPM installé)

npm install -g psd-cli

Vous pouvez alors l'utiliser en tapant dans votre terminal

psd myfile.psd -t

Vous pouvez vérifier le code pour l'utiliser à partir d'un autre script de nœud ou l'utiliser dans votre shell est d'un autre Bash / Perl / whatever script.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top