スポンサーリンク

gimp script-fuでレイヤーごとにファイルに保存するスクリプト

save-layers関数を作成。

;; レイヤー一覧取得
;; image (car (gimp-image-list)) で取得
(define (get-layer-list image)
  (vector->list 
    (car 
      (cdr 
        (gimp-image-get-layers image)
      )
    )
  )
)

      
;; outpath 出力先のディレクトリ
;; filename ファイル名 拡張子なし
;; image 画像番号
;; drawablelayer レイヤー番号
(define (save-to-image outpath filename image drawablelayer)
  (begin
    ; 保存情報を表示
    (display "saving:")
    (display (string-append outpath filename ".png") )
    (newline)
  
    ; 保存処理
    (file-png-save-defaults
      RUN-NONINTERACTIVE
      image
      drawablelayer
      (string-append outpath filename ".png")
      (string-append filename ".png") 
    )
  )
)

      
;; outpath 出力先のパス
;; image 画像番号
;; layerlist 残りのレイヤー一覧 
(define (save-more-layers outpath image layerlist)

  ; 画像一覧が空リストでないなら保存
  (if (not (null? layerlist) )
    (begin
          
      ; リストの先頭要素をPNGで保存
      (save-to-image 
        outpath                                     ; 出力先パス
        (car (gimp-layer-get-name (car layerlist))) ; ファイル名としてレイヤー名を取得
        image                                       ; 画像番号
        (car layerlist) )                           ; レイヤー番号リストの一番左

      ; 残りのリストを保存(再帰)
      (save-more-layers
         outpath           ; 出力先パス
         image             ; 画像番号
         (cdr layerlist) ) ; 残りのリスト
      ;
    )
  )
)

      
;; レイヤーをPNGファイルに保存する関数
;; outpath ファイルパス 例 C:\\test\\
;; image 画像番号 (car (gimp-image-list))で取得可
(define (save-laysers outpath image)
  (save-more-layers 
     outpath 
     image
     (get-layer-list image) ) )
    

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: