【问题标题】:Extract layers from PSD with ImageMagick, preserving layout使用 ImageMagick 从 PSD 中提取图层,保留布局
【发布时间】:2011-09-29 17:48:53
【问题描述】:

我正在使用 ImageMagick 从 PSD 中提取图层,并且通过以下方式将它们全部提取出来:

convert image.psd image-%d.png

但生成的 PNG 图像具有不同的尺寸,具体取决于图层的实际内容。我想要的是提取所有图层,但它们的大小都相同,这样我以后可以轻松地将它们叠放在一起,并像在原始 PSD 中一样排列所有内容。

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

+----+ |一个 | +-+ +-+ | | = |A| + |B| |乙| +-+ +-+ +----+

而我想要的是:

+----+ +----+ +----+ |一个 | |一个 | | | | | = | | + | | |乙| | | |乙| +----+ +----+ +----+

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

+----+ +----+ |一个 | |一个 |+ | | = | || |乙| |乙|| +----+ +----+| +----+

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

【问题讨论】:

  • 我想知道您是否找到了解决问题的方法。有什么进展吗?
  • 不幸的是,没有。我最终使用 Paint.NET 及其 PSD 插件手动将图层复制并粘贴到相同大小的新图像中。

标签: image-processing command-line imagemagick psd


【解决方案1】:

我使用这个命令行来做描述的事情:

convert.exe <filename>.psd -set dispose Background -coalesce <outfilename>.png

【讨论】:

  • 如果 PSD 图层具有透明度,这将不起作用,是否有替代方法?
【解决方案2】:

键入此命令以从 PSD 文件中提取第 2 层:

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

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

【讨论】:

  • 太棒了!有什么简单的方法可以同时对所有图层执行此操作吗?
  • 要将所有图层提取为保持透明度的 png,您可以执行以下操作:for i in $(identify -format "%[scene] " &lt;filename&gt;.psd); do convert &lt;filename&gt;.psd[$i] &lt;extracted-filename&gt;-$i.png; done 至少在我的 imagemagick 版本中,所有 png 都保持透明度,无需添加所有 convert 选项(@ 987654325@)
  • 我试过了,但除了第 0 层,我得到的都是空白层! (尺寸正确,但完全透明)。
【解决方案3】:

最后这对我有用:

convert -dispose Background "input.psd" -layers coalesce "output.png"

功劳归"snibgo" from the ImageMagick forums

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多