레이어의 이름 및 번호와 함께 레이어에서 텍스트 정보(예: 글꼴, 글꼴 스타일, 글꼴 크기 및 내용)를 추출하고 싶습니다.
표준 저장소에서 사용 가능한 모든 명령줄은 옵션입니다.
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만 있습니다.