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

Я хочу извлечь текстовую информацию из слоя (например, шрифт, шрифт, размер шрифта и содержимого) с именем и числом слоя.

Вся доступная командная строка на стандартном репо – это вариант.

Я знаю, что это можно сделать из сценариев Photoshop, но для науки я хотел бы сделать это с сервера Unix и, возможно, позже извлечь всю информацию из нескольких файлов в zip и обработать их несколькими инструментами.

One Solution collect form web for “Извлечь текстовый слой из PSD (ImageMagick или GiMP)”

GIMP имеет расширение схемы сценария-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 (внутри a)
  • (gimp-item-is-text-layer layer) предоставляет нам информацию о том, можем ли мы выполнять текстовые операции над этим слоем.
  • gimp-text-layer-get-* дайте нам информацию об текстовом слое.
  • Для нетекстовых слоев мы печатаем меньше информации.

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

В GIMP перейдите в Filters -> Script Fu -> Console . И там, рядом с текстовым полем, где вы можете вставить схемы команд, вы получаете кнопку « Browse которая получает ссылку на вашу версию GIMP.

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

  • Как вырезать действительно большое растровое изображение на более мелкие куски?
  • Как изменить размер изображений в соответствии со всем содержимым на минимальном холсте?
  • Как я могу использовать команду идентификации imagemagick в скрипте, чтобы определить, является ли файл JPEG недопустимым или поврежденным?
  • Почему преобразование Imagemagick изменяет метаданные TIFF?
  • Пакетное копирование / переименование Imagemagick в новую папку
  • ImageMagick для определения чисел
  • Преобразование нескольких групп PNG-файлов в многослойные ICO-файлы
  • удалить дополнительное пространство для плитки из композитного изображения монтажа (ImageMagick)?
  • малина pi продолжает убивать imagemagicks конвертировать
  • Поверните изображение, если ширина больше значения (то есть в пикселях)
  • Конвертер imagemagick неожиданно меняет цвет фона
  • Linux и Unix - лучшая ОС в мире.