2009-07-22 48 views
19

我需要創建分層PSD文件與ImageMagick或任何其他命令行工具在Linux平臺上可用。由於我需要在Linux服務器上執行此操作,因此我無法使用Photoshop腳本。如何從命令行創建分層PSD文件?

下面的ImageMagick命令創建帶有單層的PSD文件,其中兩個圖像(此處爲等離子體分形)位於另一個下方。 (我用的ImageMagick 6.5.3-10 2009-07-31 Q16,最新提供的MacPorts。)

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

如何創建一個PSD文件,其中每個圖像是在其自己的層和一層直接高於另一個?

或者,有沒有其他的命令行工具可以讓我做到這一點?

更新:除了GIMP命令行以外的其他選項?

回答

13

如果ImageMagick不起作用,我會看看Gimp command line

以下命令在交互式控制檯中創建一個2層的PSD文件對我來說:

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

這將需要轉換成一個腳本福腳本(.scm文件的),並且可以從執行像這樣的東西的命令行:

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

這並不是說ImageMagick不會工作,這是我不知道如何使它正常工作...使用Gimp是一個有趣的想法,謝謝。不過,我有點擔心需要將它安裝在沒有X Window系統和Gnome的服務器上......不是有點太重了嗎? – 2009-07-25 08:18:08

3

下面是一些有用的鏈接給你:

第二個環節是PHP使用,但它執行的ImageMagick,只使用這些命令,而不是全部的語法,只有exec的代碼行。

希望我在幫助你!

+0

爲什麼要投票?????????? – 2009-07-22 23:21:03

+1

對不起,請您指出我在那些鏈接的哪個位置描述瞭如何創建帶有圖層的PSD文件? – 2009-07-23 06:09:55

3

可以使用-adjoin到的圖像序列相結合。

convert -size 100x100 -alpha set plasma:fractal -alpha set plasma:fractal -adjoin out.psd 
  • 需要用於PSD編碼器的alpha通道。
  • 圖像的順序是底層到頂層。
  • 根據設置,Photoshop和GIMP存在很多兼容性問題。

使用:

  • ImageMagick的6.5。4-6
  • Photoshop CS2
7

我使用下面的命令行。我在Photoshop中打開生成的PSD時沒有遇到任何問題,但是每個圖層都顯示爲背景圖層,您必須先將其轉換爲真正的圖層才能編輯圖層排序。

這是命令行。由於圖像列表(im1.xxx,im2.xxx等,IM1是底層)標籤的圖層列表( 「LABEL1」, 「標籤2」 ...):

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" 

那是,對於每一層,你有什麼樣

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

標籤/層的名稱是可選的(除去-label如果沒有)。在im1.xxx[0][0]檢索圖像文件中的第一個圖像,如果存在Exif中的縮略圖。

在Unix/OSX,你必須保護括號:

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

如果圖像名稱中包含特殊字符,你可以用"保護他們(例如,"c:\my im1.png")沒有任何問題。

希望這會有所幫助。

0

我同意喬恩加洛韋,瘸子控制檯是更好的選擇。還有就是我的腳本:

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

你只需把這個腳本放到文件名稱爲 「pngtopsd.scm」 你瘸子 「腳本」 目錄下(「C:\ Program Files文件\ GIMP 2 \共享\ GIMP \ 2.0 \ scripts \「for windows),你可以通過每層的轉換(平移或旋轉)從png圖片列表創建分層的psd。使用樣品:

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

那裏(列表\ 「C:/.../ 2.png \」 0.7 200 1000)是指: - 0.7是圖像的旋轉角度(以弧度爲單位) - 200 1000 x和y在圖像上移位

0

您可以使用ImageMagick創建分層PSD,但請注意第一個圖像實際上用作預覽圖像(即所有圖層的合成)。

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

將創建一個2分層的PSD。