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) ) )