如何从命令行创建分层PSD文件?

时间:2009-07-22 22:16:49

标签: command-line imagemagick photoshop psd

我需要使用ImageMagick或Linux平台上提供的任何其他命令行工具创建分层PSD文件。由于我需要在Linux服务器上执行此操作,因此无法使用Photoshop脚本。

下面的ImageMagick命令创建具有单个图层的PSD文件,其中两个图像(此处:等离子体分形)一个位于另一个之下。 (我使用ImageMagick 6.5.3-10 2009-07-31 Q16,最新的MacPorts版本。)

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

如何创建一个PSD文件,其中每个图像都在自己的图层中,而一个图层直接位于另一个图层上方?

或者,是否还有其他命令行工具可以让我这样做?

更新:除GIMP命令行之外的其他选项吗?

6 个答案:

答案 0 :(得分:14)

如果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)

这需要转换为script-fu脚本(.scm文件),并且可以从命令行执行,如下所示:

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

答案 1 :(得分:8)

我使用下面的命令行。我在Photoshop中打开生成的PSD时没有遇到任何问题,但每个图层都显示为背景图层,您必须先将其转换为真正的图层才能编辑图层顺序。

这是Window的命令行。给定图像列表(im1.xxx,im2.xxx等,im1是底层),图层标签列表(“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"

也就是说,对于每一层,你都有类似

的东西

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

图层的标签/名称是可选的(如果没有,则删除-label。)[0]中的im1.xxx[0]检索图像文件中的第一个图像,以防存在缩略图在Exif。

在Unix / OSX上,你必须用反斜杠保护括号,并且续行字符也改为\

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

如果图片名称包含特殊字符,则可以使用"(例如"c:\my im1.png")保护它们,而不会出现任何问题。

答案 2 :(得分:4)

您可以使用-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

答案 3 :(得分:3)

以下是一些有用的链接:

第二个链接是与 PHP 一起使用,但它执行ImageMagick,只使用命令,而不是所有 PHP 语法,只使用 exec行代码。

希望我能帮到你!

答案 4 :(得分:1)

我同意Jon Galloway的说法,Gimp控制台是更好的选择。这是我的剧本:

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

您只需将此脚本放入gimp“script”目录中的名称为“pngtopsd.scm”的文件中(“c:\ Program Files \ GIMP 2 \ share \ 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\")"

(list \"c:/.../2.png\" 0.7 200 1000)表示:

  • 0.7是图片的旋转角度(以弧度表示)
  • 200 1000是图像上的x和y移位

答案 5 :(得分:0)

您可以使用ImageMagick创建分层PSD,但请注意第一张图像实际用作预览图像(即所有图层的合成)。

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

将创建一个2层PSD。