Извлечь текстовый слой из PSD (ImageMagick или GiMP)

Перейдите в «Настройки» -> «Диспетчер окон» -> «Фокус» и установите флажок «Новый фокус окна».

Также перейдите в «Настройки» -> «Настройки диспетчера окон» -> «Фокус» и снимите флажок поле с надписью «Активировать предотвращение кражи фокуса»

1
22.08.2016, 20:14
1 ответ

GIMP имеет расширение схемы script-fu, которое можно запустить из командной строки.Это будет отрывочно, потому что я не писал никаких схем в течение 3-4 лет, но здесь ничего не выходит:

Предполагая, что следующий сценарий находится в файле с именем sc.sch :

(define (go-by-layers no layers)
  (while (< 0 no)
    (let* ((layer (vector-ref layers (- no 1))))
      (display "Layer name: ")
      (display (car (gimp-item-get-name layer))) (newline)
      (if (< 0 (car (gimp-item-is-text-layer layer)))
          (begin
            (display "This is a text layer") (newline)
            (display "Font: ")
            (display (car (gimp-text-layer-get-font layer))) (newline)
            (display "Text: ")
            (display (car (gimp-text-layer-get-text layer))) (newline)
          ) )
      (if (>= 0 (car (gimp-item-is-text-layer layer)))
          (begin
            (display "Not a text layer")
            (newline)
          ) )
      (set! no (- no 1))
    )
  )
)
(let* ((layers (gimp-image-get-layers 1)))
  (display "Number of Layers: ") (display (car layers)) (newline)
  (go-by-layers (car layers) (cadr layers))
  (display "end") (newline)
)
(gimp-quit 0)

Мы можем сделать :

$ gimp zz.psd -b - < sc.sch 2>/dev/null
Welcome to TinyScheme, Version 1.40
Copyright (c) Dimitrios Souflis

ts> go-by-layers
ts> Number of Layers: 2
Layer name: Background
Not a text layer
Layer name: Layer 1
Not a text layer
end
#t

Это довольно хакерский метод, поскольку мы запускаем пакетный режим из STDIN и перенаправляем скрипт внутрь. Мы также получаем вывод подсказки, который довольно уродлив, но должен работать с большинством версий GIMP.

Как это работает:

  • Поскольку у нас загружено только одно изображение, мы знаем, что оно называется 1 .
  • Мы получаем слои с помощью (gimp-image-get-Layers 1)
  • Слои представляют собой фиксированный вектор, поэтому мы проходим через них, используя vector-ref (внутри ] while )
  • (gimp-item-is-text-layer layer) предоставляет нам информацию о том, можем ли мы выполнять операции с текстом на слое.
  • gimp-text-layer-get - * дает нам информацию о текстовом слое.
  • Для нетекстовых слоев мы печатаем меньше информации.

Как получить ссылку на функцию для скрипта-фу?

В GIMP перейдите в Фильтры -> Скрипт Фу -> Консоль . И там, рядом с текстовым полем, в которое вы можете вставлять команды схемы, вы получаете кнопку Обзор , которая дает ссылку на вашу версию GIMP.

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

0
28.01.2020, 01:12

Теги

Похожие вопросы