Question

Je dois créer un fichier PSD en couches avec ImageMagick ou tout autre outil de ligne de commande disponible sur la plate-forme Linux. Depuis que je dois faire sur le serveur Linux, je ne peux pas utiliser les scripts Photoshop.

La commande ci-dessous crée ImageMagick fichier PSD avec une seule couche, dans laquelle deux images (ici: fractales de plasma) sont positionnées l'une en dessous de l'autre. (J'utilise ImageMagick 6.5.3-10 2009-07-31 Q16, le dernier disponible dans MacPorts.)

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

Comment puis-je créer un fichier PSD où chaque image est dans sa propre couche et une couche est directement au-dessus une autre?

Ou, est-il un autre outil de ligne de commande qui me permettrait de le faire?

Mise à jour: Toutes les autres options que la ligne de commande GIMP

Était-ce utile?

La solution

Si ImageMagick ne fonctionne pas, je regarde ligne de commande Gimp.

Les commandes suivantes ont créé un fichier PSD 2-couche pour moi dans la console interactive:

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

qui aurait besoin d'être converti en un script (fichier .scm) script-fu et peut être exécuté à partir de la ligne de commande avec quelque chose comme ceci:

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

Autres conseils

J'utilise les lignes de commande ci-dessous. Je n'ai rencontré aucun problème à l'ouverture du PSD généré dans Photoshop, mais chaque couche apparaît comme une couche de fond, et vous devez le convertir en une véritable première couche afin de modifier l'ordre de la couche.

Voici la ligne de commande pour la fenêtre. Compte tenu de la liste des images (im1.xxx, im2.xxx etc, IM1 étant la couche inférieure,) une liste d'étiquettes pour les couches ( "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"

C'est, pour chaque couche, vous avez quelque chose comme

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

Le label / nom de la couche est facultative (supprimer -label si aucun). Le [0] en im1.xxx[0] récupère la première image dans le fichier d'image, dans le cas où il existe une vignette dans la Exif.

Sur Unix / Mac OS X, vous devez protéger la parenthèse par une barre oblique inverse, et les caractères de continuation de ligne changer aussi \:

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

Si les noms d'image contiennent des caractères spéciaux, vous pouvez les protéger avec " (par exemple "c:\my im1.png") sans aucun problème.

Vous pouvez utiliser le -adjoin de combiner une séquence d'images.

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • Les canaux alpha sont nécessaires pour le codeur de PSD.
  • L'ordre des images est la couche inférieure à la couche supérieure.
  • Il y a beaucoup de problèmes de compatibilité avec Photoshop et GIMP en fonction des paramètres.

Utilisation:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Voici quelques liens utiles pour vous:

Le second lien est à utiliser avec PHP , mais il exécute ImageMagick, utilisez uniquement les commandes, pas tous les PHP syntaxe, seule la ligne de exec code.

Hope je vous aider!

Je suis d'accord avec Jon Galloway, la console est un meilleur Gimp choix. Voici mon 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)
))

Vous avez juste besoin de mettre ce script dans le fichier avec le nom "pngtopsd.scm" dans votre gimp "script" répertoire ( "c: \ Program Files \ GIMP 2 \ share \ gimp \ 2.0 \ scripts \ " pour Windows) et vous pouvez créer PSD à partir de la liste des images PNG avec la transformation (translation ou rotation) de chaque couche. Exemple d'utilisation:

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\")"

Il (list \"c:/.../2.png\" 0.7 200 1000) signifie:

  • 0,7 est l'angle de rotation de l'image (en radians)
  • 200 1000 est x et le décalage y sur une image

Vous pouvez créer un PSD en couches avec ImageMagick, mais notez la première image est en fait utilisé comme l'image d'aperçu (à savoir composite de toutes les couches).

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

va créer un 2 PSD en couches.

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