【问题标题】:How to create a layered PSD file from command line?如何从命令行创建分层 PSD 文件?
【发布时间】:2009-07-22 22:16:49
【问题描述】:

我需要使用 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 命令行还有其他选项吗?

【问题讨论】:

    标签: command-line imagemagick photoshop psd


    【解决方案1】:

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

    【讨论】:

    • 不是 ImageMagick 不能工作,而是我不知道如何使它正常工作...使用 Gimp 是一个有趣的想法,谢谢。不过,我有点担心需要在没有X Window系统和Gnome的服务器上安装它……会不会有点太重了?
    • Gimp 肯定比 ImageMagick 重,而且从我读到的内容来看,它的执行速度也不会那么快。但从我读到的 ImageMagick 中,我不确定它是否可以创建分层 PSD,只需编辑或展平它们。
    【解决方案2】:

    我使用下面的命令行。我在 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。)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")保护它们,没有任何问题。

    【讨论】:

      【解决方案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

      【讨论】:

      • 确实存在一些兼容性问题。 Photoshop CS4 和 OS X 内置预览器都明确拒绝打开生成的图像。 :-(
      • 更新了使用 Photoshop CS2 的命令,但我无法测试 CS4
      • 仍然不适用于 CS4、CS3 和 OS X 查看器。 Photoshop 说:“读取图层数据时出现问题。改为读取复合数据?”然后“无法完成您的请求,因为该文件与此版本的 Photoshop 不兼容。
      • 将 ImageMagick 更新到 6.5.3-10 2009-07-31 Q16(MacPorts 中提供的最新版本),但仍然无法正常工作。
      【解决方案4】:

      这里有一些有用的链接:

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

      希望能帮到你!

      【讨论】:

      • 抱歉,您能否指出这些链接中描述了如何创建带有图层的 PSD 文件?
      【解决方案5】:

      我同意 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“脚本”目录中名为 "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 偏移

      【讨论】:

      • 这太棒了!我已经简化了一点,所以它只需要一个图像列表。宽度和高度默认为列表中第一个图像的大小,并且假定所有层都已对齐,因此您可以将其调用为(layers-to-psd '("background.jpg" "A.png" "B.png") "output.psd")。要点如下:gist.github.com/endavid/fceea065e586052de944ffc57014692c
      【解决方案6】:

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

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

      将创建一个 2 层的 PSD。

      【讨论】:

        猜你喜欢
        • 2015-03-16
        • 2013-09-11
        • 2012-03-20
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        • 2012-06-29
        • 2011-04-16
        相关资源
        最近更新 更多