Извлечение слоев из PSD с помощью ImageMagick с сохранением макета - PullRequest
36 голосов
/ 06 июля 2011

Я использую ImageMagick для извлечения слоев из PSD, и он прекрасно их выводит с помощью:

convert image.psd image-%d.png

Но полученные PNG-изображения имеют различные размеры, в зависимости от фактического содержимогослой.Я хотел бы извлечь все слои, но иметь одинаковый размер, чтобы потом можно было легко уложить их друг на друга, чтобы все выровнялось, как в исходном PSD.

Если это помогает визуализировать это, это то, что я сейчас получаю с помощью приведенной выше команды:

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

И что я хочу:

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

С помощьюПолучающиеся изображения имеют прозрачный фон, так что я могу сделать это:

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

Я никоим образом не привязан к ImageMagick, поэтому, если есть другой инструмент (предпочтительно из командной строки), который может достичь этого, этохорошо.

Ответы [ 2 ]

23 голосов
/ 14 сентября 2011

Я использую эту командную строку, чтобы сделать то, что описывают:

convert.exe <filename>.psd -set dispose Background -coalesce <outfilename>.png
7 голосов
/ 01 апреля 2015

Введите это, чтобы извлечь слой № 2 из PSD-файла:

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)

...