Подтвердить что ты не робот

Как создать многослойный PSD файл из командной строки?

Мне нужно создать многоуровневый PSD файл с ImageMagick или любым другим инструментом командной строки, доступным на платформе Linux. Поскольку мне нужно сделать это на сервере 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?

4b9b3361

Ответ 1

Если ImageMagick не будет работать, я бы посмотрел Командная строка Gimp.

Следующие команды создали для меня двухслойный 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 script (.scm) и может быть запущен из командной строки примерно таким образом:

gimp -i -b '(your-script-name "test.psd" 200 200)' -b '(gimp-quit 0)'

Ответ 2

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

Вот командная строка. Учитывая список изображений (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") без каких-либо проблем.

Надеюсь, что это поможет.

Ответ 3

Вот несколько полезных ссылок на вас:

Вторая ссылка предназначена для использования с PHP, но она выполняет ImageMagick, использует только команды, а не весь синтаксис PHP, только строку кода exec.

Надеюсь, я помогу тебе!

Ответ 4

Вы можете использовать -adjoin для объединения последовательности изображений.

convert -size 100x100 -alpha set plasma:fractal -alpha set plasma:fractal -adjoin out.psd
  • Альфа-каналы необходимы для кодировщика PSD.
  • Порядок изображений - это нижний слой верхнего уровня.
  • В Photoshop и GIMP существует много проблем с совместимостью в зависимости от настроек.

Использование:

  • ImageMagick 6.5.4-6
  • Photoshop CS2

Ответ 5

Я согласен с Джоном Галлоуэем, лучше выбрать консоль gimp. Есть мой script:

(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)
))

Вам просто нужно поместить этот script в файл с именем "pngtopsd.scm" внутри вашего каталога gimp "script" ( "c:\Program Files\GIMP 2\share\gimp\2.0\scripts \" для 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\")"

(список\ "c:/.../2.png \" 0.7 200 1000) означает: - 0,7 - угол поворота изображения (в радианах) - 200 1000 - сдвиг x и y на изображении

Ответ 6

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

convert -size 100x100 plasma:fractal plasma:fractal plasma:fractal out.psd

Создает двухслойный PSD.