PSD(ImageMagick 또는 GiMP)에서 텍스트 레이어 추출

PSD(ImageMagick 또는 GiMP)에서 텍스트 레이어 추출

레이어의 이름 및 번호와 함께 레이어에서 텍스트 정보(예: 글꼴, 글꼴 스타일, 글꼴 크기 및 내용)를 추출하고 싶습니다.

표준 저장소에서 사용 가능한 모든 명령줄은 옵션입니다.

Photoshop 스크립트를 통해 이 작업을 수행할 수 있다는 것을 알고 있지만 과학적인 측면에서 Unix 서버에서 수행하고 나중에 zip의 여러 파일에서 모든 정보를 추출하고 여러 도구를 사용하여 처리하고 싶습니다.

답변1

김프에는 명령줄에서 실행할 수 있는 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에서 배치 모드를 실행하고 스크립트를 리디렉션하기 때문에 이는 매우 해킹적입니다. 우리는 또한 꽤 보기 흉한 프롬프트 출력을 얻었지만 대부분의 김프 버전에서는 작동할 것입니다.

작동 원리:

  • 이미지를 하나만 로드했으므로 이름이 이라는 것을 알 수 있습니다 1.
  • 우리는 레이어를 얻습니다(gimp-image-get-layers 1)
  • vector-ref레이어는 고정된 벡터이므로 while(내부적으로)를 사용하여 레이어를 탐색합니다.
  • (gimp-item-is-text-layer layer)레이어에서 텍스트 관련 작업을 수행할 수 있는지 여부에 대한 정보를 제공합니다.
  • gimp-text-layer-get-*텍스트 레이어에 대한 정보를 알려주세요.
  • 텍스트가 아닌 레이어의 경우 더 적은 정보를 인쇄합니다.

script-fu의 함수 참조를 얻는 방법은 무엇입니까?

김프 로 이동하세요 Filters -> Script Fu -> Console. 구성 명령을 삽입할 수 있는 텍스트 필드 옆에 Browse김프 버전에 대한 참조를 얻을 수 있는 버튼이 표시됩니다.

면책조항: 이것은 제대로 테스트되지 않았습니다. 테스트할 수 있는 간단한 두 개의 레이어(텍스트 없음) PSD만 있습니다.

관련 정보