スポンサーリンク

Gimp Script-fuで画像ファイルを読み込んでxcf保存

パスの文字列を加工したりとかいろいろ複合的に使ってみたやつ。

;----------------------------------
;----------------------------------
; フォルダから画像を読み込む

; ファイルパスからファイル名を取得する
(define (my-extract-file-name text)
  (car (reverse (strbreakup text "\\") ) )
)


; 画像を読み込んだ後、タブを表示する
(define (my-tab-update image)
  (begin
    (gimp-display-new image)
    (gimp-displays-flush)
    image
  )
)

; リストで与えられた画像ファイルを全て読み込む
(define (my-open-all-images flist)
  (if (null? flist)
    '()
    (cons
      (my-tab-update (car (gimp-file-load 0 (car flist) (my-extract-file-name (car flist) ) ) ) )
      (my-open-all-images (cdr flist) )
    )
  )
)

; パスで指定したディレクトリから画像を読み込む。
; パスの最後は\\*で終わっている必要がある 
; 例 (my-open-images "C:\\dev\\*")
(define (my-open-images pathnamelist)
  ( my-open-all-images (car (cdr (file-glob pathnamelist 0))) )
)

;----------------------------------
;----------------------------------
; 画像をxcf形式で保存する

; 画像を一枚xcf形式で保存する。
; ファイル名は元の名前+xcf
(define (my-save-as-xcf-single image outdir basename)
  (gimp-xcf-save
    0
    image
    (car (gimp-image-get-active-drawable image) )
    (string-append outdir basename ".xcf")
    (string-append basename ".xcf")
  )
)

; outdirへ画像群を保存。outdirは"\\"で終わっている必要がある
(define (my-save-images outdir images)
  (if (null? images)
    '()
    (begin
      (my-save-as-xcf-single
        (car images)
        outdir
        (my-extract-file-name (car (gimp-image-get-filename (car images) ) ) ) ;画像番号からファイルパスを取得しファイル名を切り出す
      )
      (my-save-images outdir (cdr images) )
    )
  )
)

;(my-save-as-xcf-images "H:\\input\\*" "H:\\output\\")
(define (my-save-as-xcf-images indir outdir)
  (my-save-images
    outdir 
    (my-open-images indir)
  )
)

コメントを残す

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

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


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