我需要使用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命令行之外的其他选项吗?
答案 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
使用:
答案 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)
表示:
答案 5 :(得分:0)
您可以使用ImageMagick创建分层PSD,但请注意第一张图像实际用作预览图像(即所有图层的合成)。
convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd
将创建一个2层PSD。