使用ImageMagick从PSD中提取图层,保留布局

Tho*_*hom 37 command-line psd imagemagick image-processing

我正在使用ImageMagick从PSD中提取图层,并且它可以很好地完成:

convert image.psd image-%d.png
Run Code Online (Sandbox Code Playgroud)

但是,得到的PNG图像具有不同的尺寸,这取决于图层的实际内容.我想要的是提取所有图层,但是它们具有相同的大小,以便我可以轻松地将它们放在彼此的顶部,并使所有内容与原始PSD中的一样排列.

如果它有助于可视化,这就是我目前使用上述命令获得的:

+----+
|A   |   +-+   +-+
|    | = |A| + |B|
|   B|   +-+   +-+
+----+

而我想要的是:

+----+   +----+   +----+
|A   |   |A   |   |    |
|    | = |    | + |    |
|   B|   |    |   |   B|
+----+   +----+   +----+

由此产生的图像具有透明背景,以便我可以这样做:

+----+   +----+ 
|A   |   |A   |+
|    | = |    ||
|   B|   |   B||
+----+   +----+|
          +----+

我与ImageMagick没有任何关系,所以如果有另一个(最好是命令行)工具可以实现这一点,那很好.

小智 23

我使用此命令行来执行描述:

convert.exe <filename>.psd -set dispose Background -coalesce <outfilename>.png
Run Code Online (Sandbox Code Playgroud)


bio*_*ndo 7

输入以从PSD文件中提取第2层:

convert             \
  <filename>.psd[0] \
  <filename>.psd[2] \
  \(                    \
     -clone 0           \
     -alpha transparent \
  \)                    \
 -swap 0           \
 +delete           \
 -coalesce         \
 -compose src-over \
 -composite        \
 <extracted-filename>.png
Run Code Online (Sandbox Code Playgroud)

这首先创建一个与PSD文件大小相同的透明画布,然后将其与第2层结合,保持其原始布局(-coalesce)

  • 要将所有图层提取到png以保持透明度,您可以执行以下操作:`for i in $(identify -format"%[scene]"<filename> .psd); 转换<filename> .psd [$ i] <extracted-filename> - $ i.png; 至少在我的imagemagick版本中,所有png都保持透明,不需要添加所有`convert`选项(`ImageMagick 6.8.9-9 Q16 i686 2015-01-06`) (3认同)

Cam*_*tin 2

最后这对我有用:

convert -dispose Background "input.psd" -layers coalesce "output.png"
Run Code Online (Sandbox Code Playgroud)

功劳来自ImageMagick 论坛的“snibgo”