Domanda

Ho un multi-layered PSD, con uno strato specifico essendo testo non rasterizzato. Sto cercando di capire un modo posso, da un bash / perl / python / qualunque cosa-else programma:

  1. caricare il PSD
  2. modificare il testo in detto strato
  3. appiattire tutti i livelli dell'immagine
  4. salvare come un formato web-friendly come PNG o JPG

Ho pensato subito a ImageMagick , ma io non credo di poter modificare il livello di testo tramite IM. Se riesco a realizzare i primi due passaggi in qualche altro modo programmatico, posso sempre usare ImageMagick per eseguire gli ultimi due passaggi.

Dopo un paio d'ore di googling e la ricerca CPAN e PyPI, ho ancora trovato nulla promettente. Qualcuno ha dei consigli o idee su questo argomento?

È stato utile?

Soluzione

Se non si desidera utilizzare l'supportato ufficialmente AppleScript, JavaScript o VBScript, poi c'è anche la possibilità di farlo in Python. Questo è spiegato nell'articolo Photoshop scripting con Python , che si basa su un'interfaccia COM di Photoshop.

Non ho provato, quindi nel caso in cui non funziona per voi: Se il testo è conservato dopo la conversione in SVG allora si può semplicemente sostituirlo con qualsiasi tool si desideri. In seguito, convertirlo in formato PNG (ad es. Da inkscape --export-png=...).

Altri suggerimenti

Avete considerato l'apertura e modifica l'immagine in GIMP? Ha molto buon supporto PSD, e può essere script in diverse lingue.

Quale usare dipende in parte sulla vostra piattaforma, l'interfaccia di Perl non ha funzionato su Windows l'ultima che conoscevo. Credo Scheme è supportata in tutti i porti.

L'unico modo che posso pensare di automatizzare il cambiamento del testo all'interno di un PSD sarebbe quella di utilizzare una sostituzione a base regex.

  1. Creare un quadro molto semplice in Photoshop, forse uno sfondo bianco e un livello di testo, con il testo di essere una lunghezza nota.
  2. Cerca il file per il testo, e con un editor esadecimale, ricerca nelle vicinanze per la lunghezza del testo (che può o non può essere parte del formato di file).
  3. Provare a cambiare il testo, prima in una stringa della stessa lunghezza, quindi a qualcosa di più breve / più a lungo.
  4. Apri in Photoshop dopo ogni modifica per vedere se il file è danneggiato.

Questo metodo, se praticabile, funziona solo se lo strato in questione contiene una stringa nota, che può essere sostituito per il vostro altro valore. Si noti che non ho idea se questo funzionerà, come non ho Photoshop su questo computer per provare questo metodo fuori. Forse si può farlo funzionare?

Per quanto riguarda la conversione in png, io sono in perdita. Se lo script sostituzione è in Python, si può essere in grado di farlo con il Python Imaging Library (PIL, che sembra sostenerlo ), ma per il resto si può solo avere aprire Photoshop per eseguire la conversione. Il che significa che probabilmente non sarebbe valsa la pena per modificare il testo in modo pragmatico, in primo luogo.

È possibile utilizzare Photoshop stesso per fare questo con OLE. Sarà necessario installare Photoshop, naturalmente. Win32 :: OLE in Perl o modulo simile in Python. Vedere http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide .pdf

Se avete intenzione di automatizzare Photoshop, è praticamente necessario utilizzare sistemi di scripting di Photoshop. Io non credo che ci sia un modo per aggirare questo.

Guardando il problema un modo diverso, si può esportare da Photoshop a qualche altro formato che supporta i livelli, come PNG, che è modificabile da ImageMagick?

Si può anche provare questo utilizzando Node.js. Ho fatto un strumento da riga di comando PSD

Una linea di comando di installazione (bisogna installato NodeJS / NPM)

npm install -g psd-cli

È quindi possibile utilizzare digitando nel terminale

psd myfile.psd -t

È possibile controllare il codice per utilizzarlo da un altro script nodo o utilizzarlo tramite la shell è da un altro / Perl / qualunque script Bash.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top