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

Command line 如何从命令行创建分层PSD文件?,command-line,imagemagick,photoshop,psd,Command Line,Imagemagick,Photoshop,Psd,我需要使用ImageMagick或Linux平台上可用的任何其他命令行工具创建一个分层PSD文件。因为我需要在Linux服务器上执行此操作,所以我不能使用Photoshop脚本 下面的ImageMagick命令创建具有单个层的PSD文件,其中两个图像(此处:等离子分形)一个位于另一个之下。(我使用ImageMagick 6.5.3-10 2009-07-31 Q16,MacPorts中提供的最新版本。) 我如何创建一个PSD文件,其中每个图像都在它自己的层中,并且一个层直接位于另一个层之上 或者

我需要使用ImageMagick或Linux平台上可用的任何其他命令行工具创建一个分层PSD文件。因为我需要在Linux服务器上执行此操作,所以我不能使用Photoshop脚本

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

我如何创建一个PSD文件,其中每个图像都在它自己的层中,并且一个层直接位于另一个层之上

或者,是否有其他命令行工具允许我这样做


更新:除了GIMP命令行还有其他选项吗?

以下是一些有用的链接:

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


希望我能帮助你

如果ImageMagick不起作用,我会看看

以下命令在交互控制台中为我创建了一个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)
这将需要转换为脚本fu脚本(.scm文件),并且可以通过以下方式从命令行执行:

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

可以使用-adjoin组合图像序列

convert -size 100x100             \
        -alpha set plasma:fractal \
        -alpha set plasma:fractal \
        -adjoin                   \
        out.psd
  • PSD编码器需要alpha通道
  • 图像的顺序是从底层到顶层
  • 根据设置的不同,Photoshop和GIMP存在许多兼容性问题
使用:

  • ImageMagick 6.5.4-6
  • PhotoshopCS2

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

这是Window的命令行。给定图像列表(im1.xxx、im2.xxx等,im1为底层),各层标签列表(“label1”、“label2”…):


皈依^
(                      ^
-第+0+0页^
-标签“label1”^
im1.xxx[0]^
-背景无^
-马赛克^
-设置颜色空间RGB^
)                      ^
(                      ^
-第+0+0页^
-标签“label2”^
“im2.xxx”[0]^
-背景无^
-马赛克^
-设置颜色空间RGB^
)                      ^
(                      ^
-克隆0--1^
-背景无^
-马赛克^
)                      ^
-阿尔法关^
-逆转^
“out.psd”

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


(                          ^
-第+0+0页^
-标签“可选_标签”^
im1.xxx[0]^
-背景无^
-马赛克^
-设置颜色空间RGB^
)

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

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


\(                         \
-第+0+0页\
-标签“可选_标签”\
im1.xxx[0]\
-背景无\
-马赛克\
-设置颜色空间RGB\
\)


如果图像名称包含特殊字符,您可以使用
(例如
“c:\my im1.png”
)保护它们,而不会产生任何问题。

我同意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\")"
(列表\“c:/…/2.png \”0.720000)
表示:

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

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


将创建一个2层PSD。

对不起,你能告诉我在那些链接中哪里描述了如何创建带层的PSD文件吗?并不是说ImageMagick不能工作,而是我不知道如何使它正常工作…使用Gimp是一个有趣的想法,谢谢。但是,我有点担心需要在服务器上安装它如果没有X窗口系统和Gnome…它不是有点太重吗?Gimp肯定比ImageMagick重,而且从我读到的来看,它也不会那么快执行。但是从我读到的ImageMagick来看,我不确定它是否可以创建分层PSD,只需编辑或展平它们。确实存在一些兼容性问题。Photoshop CS4和OS X内置预览器显然拒绝打开生成的图像。:-(更新了命令以使用Photoshop CS2,但我无法测试CS4仍然无法使用CS4、CS3或OS X viewer。Photoshop说:“读取图层数据时出现问题。改为读取合成数据?”然后“无法完成您的请求,因为该文件与此版本的Photoshop不兼容。已将ImageMagick更新为6.5.3-10 2009-07-31 Q16(MacPorts中提供的最新版本),但它仍然不起作用。这太棒了!我简化了一点,所以它只需要一个图像列表。宽度和高度默认为列表中第一个图像的大小,并且假设所有层都已对齐,因此您可以将其作为
(层到psd'(“back”)调用
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\")"
convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd