Studio GPでグリッド(フィルタとScript)という記事が書かれていました。
Gimpを使っているときに、一定間隔でグリッドを引いていくのは面倒な作業の1つですが、
指定した比率でグリッドを引いていってくれる便利なScript-fuがあって、この面倒な作業をかなり簡単にしてくれるようでした。
残念ながら、Script-fuのグリッドは絵として線を引くそうで、ガイドを直接引いてくれないそうです。
でも、似たような方法でガイドを引くことができるはずなので、Script-fuの中身をちょっとのぞいて改造してみました。
といっても、このブログではファイルをそのままアップロードできないんですよね。。。
とりあえず、Scriptの中身だけ晒しておきます。
中身を"guide-system.scm"という名前で保存して、Gimpのスクリプトフォルダに入れれば、”「フィルタ→Grid Guide...」が追加されるはずです。
使い方はStudio GPで紹介されている方法とおんなじです。比率に"g"、"1/g"と書くと黄金比の値を使ってくれるようです。
スクリプトの中身
中身ここまで
Gimpを使っているときに、一定間隔でグリッドを引いていくのは面倒な作業の1つですが、
指定した比率でグリッドを引いていってくれる便利なScript-fuがあって、この面倒な作業をかなり簡単にしてくれるようでした。
残念ながら、Script-fuのグリッドは絵として線を引くそうで、ガイドを直接引いてくれないそうです。
でも、似たような方法でガイドを引くことができるはずなので、Script-fuの中身をちょっとのぞいて改造してみました。
といっても、このブログではファイルをそのままアップロードできないんですよね。。。
とりあえず、Scriptの中身だけ晒しておきます。
中身を"guide-system.scm"という名前で保存して、Gimpのスクリプトフォルダに入れれば、”「フィルタ→Grid Guide...」が追加されるはずです。
使い方はStudio GPで紹介されている方法とおんなじです。比率に"g"、"1/g"と書くと黄金比の値を使ってくれるようです。
更新履歴
- Ver.0.1.1
- 公開するときにエラーを混ぜちゃったようなのでアップデートしました。
スクリプトの中身
;;; guide-system.scm -*-scheme-*- ;;; This file is a part of: ;;; The GIMP (Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis) ;;; Author: Sigetch (Derived from grid-system.scm) ;;; Version 0.1.1 ;;; Code: (if (not (symbol-bound? 'script-fu-guide-system-x-divides (the-environment))) (define script-fu-guide-system-x-divides "'(1 g 1)")) (if (not (symbol-bound? 'script-fu-guide-system-y-divides (the-environment))) (define script-fu-guide-system-y-divides "'(1 g 1)")) (define (script-fu-guide-system img drw x-divides-orig y-divides-orig) (define (convert-g l) (mapcar (lambda (x) (cond ((eq? x 'g) 1.618) ((eq? x '1/g) 0.618) ('else x))) l)) (define (list->str l) (define (strjoin list delim) (apply string-append (mapcar (lambda(x) (string-append x delim)) list))) (define (enclose-brackets expr) (string-append "'(" expr ")")) (define (strjoin-space list) (strjoin list " ")) (enclose-brackets (strjoin-space (mapcar (lambda (obj) (cond ((number? obj) (number->string obj)) ((eq? obj 'g) "g") ((eq? obj '1/g) "1/g"))) l)))) ;;; Erase all guides from the drawable (define (erase-guides prev-guide) (let ( (guide (car (gimp-image-find-next-guide img prev-guide))) ) (if (not (= guide 0)) (begin (erase-guides guide) (gimp-image-delete-guide img guide))))) ;;; Add guides to the drawable (define (make-guides guide-proc initial-offset drw-length divides) (let* ( (total-step (apply + divides)) ) (define (make-guides-recur prev-step rest-divides) (let* ((step (+ prev-step (car rest-divides)) )) (guide-proc img (+ initial-offset (* drw-length (/ step total-step)))) (if (not (null? (cdr rest-divides))) (make-guides-recur step (cdr rest-divides))))) (make-guides-recur 0 divides))) ;;; Main Routine (gimp-image-undo-group-start img) (erase-guides 0) ;;; Add vertical guides (make-guides gimp-image-add-vguide (nth 0 (gimp-drawable-offsets drw)) (car (gimp-drawable-width drw)) (convert-g x-divides-orig)) ;;; Add horizontal guides (make-guides gimp-image-add-hguide (nth 1 (gimp-drawable-offsets drw)) (car (gimp-drawable-height drw)) (convert-g y-divides-orig)) (gimp-image-undo-group-end img) (set! script-fu-guide-system-x-divides (list->str x-divides-orig)) (set! script-fu-guide-system-y-divides (list->str y-divides-orig)) (gimp-displays-flush)) (script-fu-register "script-fu-guide-system" _"_Grid Guide..." "Add guide as specified by X-DIVIDES (list of propotions relative to the drawable) and Y-DIVIDES." "Sigetch <sigetch._{at}_.hotmail.com>" "Sigetch" "2006" "RGB*, INDEXED*, GRAY*" SF-IMAGE "Image to use" 0 SF-DRAWABLE "Drawable to draw guide" 0 SF-VALUE _"X divisions" script-fu-guide-system-x-divides SF-VALUE _"Y divisions" script-fu-guide-system-y-divides) (script-fu-menu-register "script-fu-guide-system" "<Image>/Filters")
中身ここまで
感動しました!!!
元はチュートリアルを訳していて気がついたことだったんですけど、
こういうふうに発展させていただけるなんてすごく嬉しいです。
私のとこのブログ記事にも紹介で載せてもいいですか?
これだと画像→変換→ギロチン作業がすごく楽になります。
GIMP2を使おうサイトに、ガイド引いて9分割までして保存してくれるというスクリプトがありましたが、これはきっちり等分割なんですよ。
>私のとこのブログ記事にも紹介で載せてもいいですか?
はい。構いません。便利な情報はみんなで共有したいから、紹介してもらえるとうれしいです!
>GIMP2を使おうサイトに、ガイド引いて9分割までして保存してくれるというスクリプトがありましたが、これはきっちり等分割なんですよ。
分割して保存までしてくれるのは便利ですね。