我需要创建与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的
这里是给你一些有用的链接:
- ImageMagick的并与层PSD图像
- 一些有用的PSD的注意事项
- PSD层- ImageMagick的论坛
第二个环节是用PHP来使用,但它执行ImageMagick的,只能使用命令,而不是所有的PHP语法,只有的EXEC代码行。
希望我帮你!
我同意乔恩·加洛韦和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”你瘸子“脚本”目录下(“C:\ Program Files文件\ GIMP 2 \共享\ GIMP \ 2.0 \脚本\”适用于Windows),你可以创建分层PSD从每一层的变换(平移或旋转)PNG图片的列表。 用法示例:
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。