<< 人生ゲーム面白い | top | LISPで連番文字列 >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |

Script-Fu

SICPで画像処理を例にとって色々説明している部分があったのがきっかけで色々探していてScript-Fuというものを発見した。
これは有名な画像編集ソフトGIMPのスクリプトで、Schemeがベースになっている。
ちょっといじってみた。ちなみにバージョンは2.8.8。

GIMP自体学生時代に教養の講義で少し触っただけなのでほとんど使い方がわからず、戸惑う部分もあったが、簡単なコードは書けた。
新規画像ファイルを用意し、点を打ち、保存するスクリプト↓

(gimp-context-set-brush "Circle (01)");ブラシの選択
(define image (car (gimp-image-new 256 256 0)));256x256の新規画像
(define layer (car (gimp-layer-new image 256 256 1 "test" 100 0)))
(gimp-drawable-fill layer BACKGROUND-FILL)
(gimp-image-add-layer image layer 0)
(gimp-display-new image)

(define (dot x y) (gimp-pencil (car (gimp-image-active-drawable image)) 2 (vector x y)));2は座標の数 4にして座標を4つにすれば直線が引ける

((lambda (x y) (dot x y)) 128 128)

(file-bmp-save 0 image (car (gimp-image-active-drawable image)) "C:¥¥test¥¥test.bmp" "");ファイルの保存

これをScript-Fuコンソールに入力して実行すればよい(全体をコピペしてenterでOK)。ヘルプ→プロシージャーブラウザで命令一覧が載っているのでこれを適当に参照すれば一応コードは書ける。

GIMPに自作スクリプトとして登録するためには

(define (test u v)
(gimp-context-set-brush "Circle (01)");ブラシの選択
(define image (car (gimp-image-new 256 256 0)));256x256の新規画像
(define layer (car (gimp-layer-new image 256 256 1 "test" 100 0)))
(gimp-drawable-fill layer BACKGROUND-FILL)
(gimp-image-add-layer image layer 0)
(gimp-display-new image)

(define (dot x y) (gimp-pencil (car (gimp-image-active-drawable image)) 2 (vector x y)));2は座標の数 4にして座標を4つにすれば直線が引ける

((lambda (x y) (dot x y)) u v)

(file-bmp-save 0 image (car (gimp-image-active-drawable image)) "C:¥¥test¥¥test.bmp" "");ファイルの保存
)

(script-fu-register
 "test"
 ""
 ""
 "JAJAGACCHI"
 "JAJAGACCHI"
 "November 9, 2013"
 ""
 )

としてscriptsフォルダに入れ、フィルタ→Script-Fu→スクリプト再読み込みして、Script-Fuで呼び出してやればよい。

Script-Fuを使うことでLISPを実用的に使う第一歩を踏み出せたと思う。
ジャジャガッチ | LISP | 06:22 | comments(0) | trackbacks(0) |

スポンサーサイト

スポンサードリンク | - | 06:22 | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH