Domanda

Ho bisogno di creare un file PSD a strati con ImageMagick o qualsiasi altro strumento da riga di comando disponibile su piattaforma Linux. Da quando ho bisogno di fare questo su server Linux, non posso usare Photoshop scripting.

Il comando ImageMagick seguito crea un file PSD con un singolo strato, dove due immagini (qui frattali plasma) sono posizionati uno sotto l'altro. (Io uso ImageMagick 6.5.3-10 2009-07-31 Q16, ultimo disponibile in MacPorts.)

convert -size 100x100 plasma:fractal plasma:fractal -append out.psd

Come faccio a creare un file PSD in cui ogni immagine è in un proprio livello, e uno strato è direttamente sopra un altro?

In alternativa, c'è qualche altro strumento a riga di comando che mi permettesse di fare questo?

Aggiornamento:? Tutte le altre opzioni di riga di comando GIMP

È stato utile?

Soluzione

Se ImageMagick non funziona, mi guardo Gimp riga di comando .

I seguenti comandi creato un file PSD a 2 strati per me in console interattiva:

> (gimp-image-new 200 200 0)
(1)
> (gimp-layer-new 1 200 200 0 "layer-1" 100 0)
(2)
> (gimp-layer-new 1 200 200 0 "layer-2" 100 0)
(3)
> (file-psd-save 0 1 0 "test.psd" "test.psd" 0 0)
> (gimp-image-add-layer 1 2 -1)
> (gimp-image-add-layer 1 3 -1)
> (file-psd-save 0 1 1 "test.psd" "test.psd" 0 0)

che avrebbe bisogno di essere convertito in uno script Script-Fu (file .scm) e potrebbe essere eseguito dalla riga di comando con qualcosa di simile:

gimp -i -b '(your-script-name "test.psd" 200 200)' -b '(gimp-quit 0)'

Altri suggerimenti

Io uso le righe di comando qui sotto. Non ho incontrato alcun problema ad aprire la PSD generata in Photoshop, tuttavia ogni strato appare come un livello di sfondo, e devi convertirlo in un vero primo strato al fine di modificare l'ordinamento layer.

Questa è la linea di comando per Windows. Data la lista delle immagini (im1.xxx, im2.xxx ecc, im1 essendo lo strato inferiore,) un elenco delle etichette per gli strati ( "etichetta1", "etichetta2" ...):

convert ^ ( ^ -page +0+0 ^ -label "label1" ^ im1.xxx[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ ) ^ ( ^ -page +0+0 ^ -label "label2" ^ "im2.xxx"[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ ) ^ ( ^ -clone 0--1 ^ -background none ^ -mosaic ^ ) ^ -alpha Off ^ -reverse ^ "out.psd"

Cioè, per ogni strato, si dispone di qualcosa come

( ^ -page +0+0 ^ -label "optional_label" ^ im1.xxx[0] ^ -background none ^ -mosaic ^ -set colorspace RGB ^ )

L'etichetta / nome del livello è opzionale (rimuovere -label se nessuno.) Il [0] in im1.xxx[0] recupera la prima immagine nel file di immagine, nel caso in cui esista una miniatura nella Exif.

Su Unix / OSX, è necessario proteggere la parentesi da una barra rovesciata, ei personaggi linea di continuazione cambia anche \:

\( \ -page +0+0 \ -label "optional_label" \ im1.xxx[0] \ -background none \ -mosaic \ -set colorspace RGB \ \)

Se i nomi di immagine contengono caratteri speciali, è possibile proteggere con " (ad es "c:\my im1.png") senza alcun problema.

È possibile utilizzare il -adjoin per combinare una sequenza di immagini.

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • sono necessari I canali alfa per il codificatore PSD.
  • L'ordine delle immagini è strato inferiore di strato superiore.
  • Ci sono un sacco di problemi di compatibilità con Photoshop e GIMP a seconda delle impostazioni.

Utilizzo:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Ecco alcuni link utili a voi:

Il secondo collegamento è da utilizzare con PHP , ma esegue ImageMagick, utilizzare solo i comandi, non tutto PHP sintassi, solo la linea di exec codice.

La speranza ti sto aiutando!

Sono d'accordo con Jon Galloway, la console Gimp è una scelta migliore. Ecco il mio script:

(define (pngtopsd width height png-paths psd-path)
(define (add-layers image png-paths) 
    (if (null? png-paths) 0 
        (let* 
            ((png (car png-paths))
            (new-layer (car (gimp-file-load-layer 0 image (car png)))))

            (gimp-image-insert-layer image new-layer 0 -1)
            (gimp-item-transform-2d new-layer 0 0 1 1 (cadr png) (caddr png) (cadddr png))
            (add-layers image (cdr png-paths))
        )
    ))

(let* 
    ((png (car png-paths))
    (image (car (gimp-file-load 1 (car png) (car png))))
    (drawable (car (gimp-image-get-active-layer image))))

    (gimp-image-resize image width height 0 0)
    (gimp-item-transform-2d drawable 0 0 1 1 (cadr png) (caddr png) (cadddr png))       
    (add-layers image (cdr png-paths))
    (file-psd-save 0 image drawable psd-path psd-path 1 0)
    (gimp-image-delete image)
))

Hai solo bisogno di mettere questo script in file con nome "pngtopsd.scm" all'interno della vostra cartella gimp "script" ( "c: \ Program Files \ GIMP 2 \ share \ gimp \ 2.0 \ script \ " per Windows) ed è possibile creare PSD a strati dalla lista delle immagini PNG con la trasformazione (rotazione e traslazione) di ogni strato. campione Uso:

gimp-console-2.8.exe -i -b              ^
  "(pngtopsd (list                      ^
   (list \"c:/../1.png\" 0 500 500)     ^
   (list \"c:/.../2.png\" 0.7 200 1000) ^
   (list \"c:/.../3.jpg\" -0.5 1000 0)) ^
   \"c:/.../result.psd\")"

Ci (list \"c:/.../2.png\" 0.7 200 1000) significa:

  • 0.7 è l'angolo di rotazione dell'immagine (in radianti)
  • 200 1000 è xey spostamento su un'immagine

È possibile creare un PSD con ImageMagick, ma nota la prima immagine viene effettivamente utilizzata come immagine di anteprima (cioè composito di tutti gli strati).

convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd

Sarà creare un PSD a strati 2.

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