レイヤーの名前と番号とともに、レイヤーからテキスト情報(フォント、フォントスタイル、フォントサイズ、内容など)を抽出したいと思います。
標準リポジトリで利用可能なすべてのコマンドラインはオプションです。
Photoshopスクリプトを使ってこれを行うことができることを知っていますが、科学的な面ではUnixサーバーで実行し、後でzip内のさまざまなファイルからすべての情報を抽出し、いくつかのツールを使用して処理したいと思います。
答え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つだけロードしたので、名前がということがわかります
1
。 - 私たちはレイヤーを取得します
(gimp-image-get-layers 1)
vector-ref
レイヤーは固定ベクトルなので、while
(内部的に)を使用してレイヤーをナビゲートします。(gimp-item-is-text-layer layer)
レイヤーでテキスト関連操作を実行できるかどうかに関する情報を提供します。gimp-text-layer-get-*
テキストレイヤーに関する情報を教えてください。- テキスト以外のレイヤーの場合は、より少ない情報を印刷します。
script-fuの関数参照を取得するには?
GIMPに移動してくださいFilters -> Script Fu -> Console
。構成コマンドを挿入できるテキストフィールドの横に、GIMPバージョンへのBrowse
参照を取得するためのボタンが表示されます。
免責事項:これは正しくテストされていません。テストできる単純な2つのレイヤー(テキストなし)PSDのみがあります。