如何从命令行创建分层 PSD 文件?
-
19-09-2019 - |
题
我需要 创造 使用 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 命令行之外还有其他选项吗?
解决方案
如果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)
这将需要被转换成脚本福脚本(.scm文件的),可以从命令行的是这样执行的:
gimp -i -b '(your-script-name "test.psd" 200 200)' -b '(gimp-quit 0)'
其他提示
我使用下面的命令行。我没有在Photoshop中打开生成的PSD遇到的任何问题,但是每一层显示为背景层,你必须把它转换成一个真正的第一层,以编辑层排序。
下面是用于窗口中的命令行。给定图像的列表(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"
)没有任何问题,保护他们。
您可以使用 -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
这里有一些对您有用的链接:
第二个链接是与使用 PHP, ,但它执行ImageMagick,只使用命令,而不是所有 PHP 语法,只有一行 执行 代码。
希望我能帮助你!
我同意 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)
))
您只需将此脚本放入名为的文件中 “pngtopsd.scm” 在你的gimp“脚本”目录中(“c:\Program Files\GIMP 2\share\gimp\2.0\scripts\” 对于 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 偏移
可以创建与ImageMagick的层状PSD,但请注意,第一图像被实际使用作为预览图像(即所有的层复合材料)。
convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd
将创建一个2层状PSD。