2009-07-22 71 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。