Pregunta

Necesito crear un archivo PSD en capas con ImageMagick o cualquier otra herramienta de línea de comandos disponibles en la plataforma Linux. Desde que necesita para hacer esto en el servidor Linux, no puedo usar Photoshop secuencias de comandos.

El comando ImageMagick a continuación crea archivo PSD con una sola capa, en la que dos imágenes (aquí: fractales plasma) están colocados uno debajo de otro. (Yo uso ImageMagick 6.5.3-10 2009-07-31 Q16, último disponible en MacPorts.)

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

¿Cómo creo un archivo PSD, donde cada imagen está en su propia capa, y una capa está directamente encima de otra?

O, ¿hay alguna otra herramienta de línea de comandos que permitiría que haga esto?

Actualización:? Cualquier otra opción que la línea de comandos GIMP

¿Fue útil?

Solución

Si ImageMagick no va a funcionar, me vería en Gimp línea de comandos .

Los siguientes comandos crean un archivo PSD de 2 capas para mí en la consola interactiva:

> (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)

Eso tendría que ser convertido en una presentación (archivo .scm) guión script-fu y podría ser ejecutado desde la línea de comandos con algo como esto:

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

Otros consejos

Yo uso las líneas de comandos de abajo. No he encontrado ningún problema en abrir el PSD generada en Photoshop, sin embargo todas las capas aparece como una capa de fondo, y hay que convertirla en una capa verdadera primera con el fin de modificar el orden de capa.

Esta es la línea de comandos para Windows. Teniendo en cuenta la lista de imágenes (im1.xxx, im2.xxx etc, im1 siendo la capa inferior,) una lista de etiquetas para las capas ( "label1", "label2" ...):

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"

Es decir, para cada capa, que tiene algo así como

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

La etiqueta / nombre de la capa es opcional (quitar -label si ninguno). El [0] en im1.xxx[0] recupera la primera imagen en el archivo de imagen, en caso de que exista una miniatura en el Exif.

En Unix / OSX, usted tiene que proteger el paréntesis de una barra invertida, y los caracteres de continuación de línea cambia también a \:

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

Si los nombres de las imágenes contienen caracteres especiales, puede protegerlos con " (por ejemplo "c:\my im1.png") sin ningún problema.

Puede utilizar el -adjoin combinar una secuencia de imágenes.

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • Se necesitan los canales alfa para el codificador PSD.
  • El orden de las imágenes es la capa inferior a la capa superior.
  • Hay una gran cantidad de problemas de compatibilidad con Photoshop y GIMP dependiendo de la configuración.

Uso:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Aquí hay algunos enlaces útiles a usted:

El segundo enlace es utilizar con PHP , pero se ejecuta ImageMagick, sólo utilizan los comandos, no el todo PHP sintaxis, sólo la línea de exec código.

La esperanza te estoy ayudando!

Estoy de acuerdo con Jon Galloway, la consola Gimp es una mejor opción. Aquí está mi 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)
))

Sólo se necesita poner este script en un archivo con el nombre de "pngtopsd.scm" dentro de su directorio gimp "guión" ( "C: \ Archivos de programa \ GIMP 2 \ share \ gimp \ 2.0 \ scripts \ " para Windows) y puede crear capas PSD de la lista de imágenes PNG con la transformación (traslación o rotación) de cada capa. Ejemplo de 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\")"

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

  • 0,7 es el ángulo de rotación de la imagen (en radianes)
  • 200 1000 es x e y cambio en una imagen

Se puede crear un PSD en capas con ImageMagick, pero tenga la primera imagen se utiliza en realidad como la imagen de vista previa (compuesto es decir, de todas las capas).

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

Se creará un PSD en capas 2.

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