Frage

Ich muss erstellen eine geschichtete PSD-Datei mit ImageMagick oder einem anderen auf der Linux-Plattform verfügbaren Befehlszeilentool.Da ich dies auf einem Linux-Server tun muss, kann ich Photoshop-Skripte nicht verwenden.

Der ImageMagick-Befehl unten erstellt eine PSD-Datei mit einer einzelnen Ebene, in der zwei Bilder (hier:Plasmafraktale) werden untereinander positioniert.(Ich verwende ImageMagick 6.5.3-10 2009-07-31 Q16, neueste Version in MacPorts.)

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

Wie erstelle ich eine PSD-Datei, in der sich jedes Bild in einer eigenen Ebene befindet und eine Ebene direkt über einer anderen liegt?

Oder gibt es ein anderes Befehlszeilentool, mit dem ich dies tun könnte?

Aktualisieren: Gibt es noch andere Optionen als die GIMP-Befehlszeile?

War es hilfreich?

Lösung

Wenn ImageMagick wird nicht funktionieren, würde ich sehen Gimp Befehlszeile .

Die folgenden Befehle erstellt eine 2-Schicht-PSD-Datei für mich in der interaktiven Konsole:

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

Das müßte in eine Script-Fu-Skript (.scm Datei) umgewandelt werden und könnte von der Kommandozeile mit etwas wie folgt ausgeführt werden:

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

Andere Tipps

Ich verwende die folgenden Befehlszeilen.Beim Öffnen der generierten PSD in Photoshop sind keine Probleme aufgetreten. Allerdings wird jede Ebene als Hintergrundebene angezeigt und Sie müssen sie zunächst in eine echte Ebene konvertieren, um die Ebenenreihenfolge bearbeiten zu können.

Hier ist die Befehlszeile für Windows.Angesichts der Liste der Bilder (im1.xxx, im2.xxx usw., wobei im1 ​​die unterste Ebene ist) eine Liste von Beschriftungen für die Ebenen („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"

Das heißt, für jede Ebene haben Sie so etwas wie

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

Die Beschriftung/der Name der Ebene ist optional (entfernen). -label wenn keine.) Die [0] In im1.xxx[0] Ruft das erste Bild in der Bilddatei ab, falls im Exif ein Miniaturbild vorhanden ist.

Unter Unix/OSX müssen Sie die Klammer durch einen Backslash schützen, und die Zeilenfortsetzungszeichen ändern sich ebenfalls in \:

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

Wenn die Bildnamen Sonderzeichen enthalten, können Sie sie mit schützen " (z.B "c:\my im1.png") ohne Probleme.

Sie können die -adjoin verwenden, um eine Bildsequenz zu kombinieren.

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • Die Alpha-Kanäle für die PSD-Codierer benötigt werden.
  • Die Reihenfolge der Bilder ist eine Unterschicht Oberschicht.
  • Es gibt viele Kompatibilitätsprobleme mit Photoshop und GIMP je nach den Einstellungen.

Mit:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Hier finden Sie einige nützliche Links für Sie:

Die zweite Verbindung ist mit PHP zu verwenden, aber es führt ImageMagick, nur die Befehle verwenden, nicht alle PHP Syntax, nur die Linie von exec Code.

Hope ich Ihnen helfen!

ich mit Jon Galloway zustimmen, die Gimp-Konsole ist eine bessere Wahl. Hier ist mein Skript:

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

Sie müssen nur dieses Skript in der Datei setzen mit dem Namen "pngtopsd.scm" in Ihrem Gimp "script" Verzeichnis ( "c: \ Programme \ GIMP 2 \ share \ gimp \ 2.0 \ Scripts \ " für Windows) und Sie können geschichteten PSD aus der Liste der PNG Bilder mit Transformation (Translation oder Rotation) jeder Schicht erstellen. Anwendungsbeispiel:

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

Es (list \"c:/.../2.png\" 0.7 200 1000) bedeutet:

  • 0,7 wird der Drehwinkel des Bildes (in Radiant)
  • 200 1000 ist und x y Verschiebung auf ein Bild

Sie können einen geschichteten PSD mit ImageMagick erstellen, aber beachten Sie das erste Bild tatsächlich als das Vorschaubild (das heißt Verbund aller Schichten) verwendet wird.

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

Wird eine 2 geschichtete PSD erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top