RのSkyrim Mod開発日記

SkyrimのMod開発を中心に、備忘録などを載せていきます。

GIMPのScript-Fuで画像の切り取りを自動化する

はじめに

画像編集にて、複数の画像の特定の範囲を繰返し切り抜く事があるかと思います。
この記事はGIMPスクリプトであるScript-Fuを使用して、画像の切取りを自動化する方法について解説します。

Script-Fuについては次のサイトの情報を参照してください。
2. Script-Fu スクリプトを使用

スクリプトのテンプレート

(define (
	{スクリプト名}
	img
	drawable
	)

	;Undoグループの開始
	(gimp-undo-push-group-start img)

	;キャンバスサイズの変更
	(gimp-image-resize img {Width} {Height} -{X} -{Y})

	;アルファチャンネルの追加
	(gimp-layer-add-alpha drawable)

	;範囲選択
	(gimp-rect-select img 0 0 0 0 REPLACE FALSE 0)
	(gimp-rect-select img {X} {Y} {Width} {Height} ADD FALSE 0)

	;削除
	(gimp-edit-clear drawable)

	;選択範囲の解除
	(gimp-selection-none img)

	;undoグループの終了
	(gimp-undo-push-group-end img)

	; 出力
	(gimp-displays-flush)
)

(script-fu-register
	"{スクリプト名}"
	"<Image>/Script-Fu/{コマンド名}"
	"{説明}"
	"{作者}"
	"{コピーライト}"
	"{日付}"
	"{動作可能なモード}"
	SF-IMAGE "Image" 0
	SF-DRAWABLE "Drawable" 0
)

{ } の部分を書き換えます。

ポイント

gimp-image-resizeでまず特定の範囲にキャンバスサイズを変更します。
さらに不要な部分を透明化するため、gimp-rect-selectで選択を行い、その後選択範囲を削除します。
この部分を必要なだけ追加すればいいです。

範囲選択用のスクリプトを生成する

最初に1回手動で範囲選択を行う必要がありますが、その選択範囲のマスク画像から範囲選択用のスクリプトを生成します。
マスク画像は、GIMPにて範囲選択がチャンネル保存して、作成するなどし、BMPと保存します。
保存したBMPを自作ツールのRMaskToScript-Fuにてドロップして表示されたテキストと上記のテンプレートを組み合わせて利用します。

ツールのソースコード説明

説明らしいことは書いていませんが、プログラミング主体の話題はこちらに書いていますので。
qiita.com

スクリプトの使用例

以下のスクリプトはテラリアというゲームのインベントリ内を切り取るものです。

(define (
	インベントリ切取り
	img
	drawable
	)

	;Undoグループの開始
	(gimp-undo-push-group-start img)

	;キャンバスサイズの変更
	(gimp-image-resize img 545 234 -20 -20)

	;アルファチャンネルの追加
	(gimp-layer-add-alpha drawable)

	;範囲選択
	(gimp-rect-select img 0 0 0 0 REPLACE FALSE 0)
	(gimp-rect-select img 0 0 7 2 ADD FALSE 0)
	(gimp-rect-select img 37 0 17 2 ADD FALSE 0)
	(gimp-rect-select img 84 0 18 2 ADD FALSE 0)
	(gimp-rect-select img 132 0 17 2 ADD FALSE 0)
	(gimp-rect-select img 179 0 18 2 ADD FALSE 0)
	(gimp-rect-select img 227 0 18 2 ADD FALSE 0)
	(gimp-rect-select img 275 0 17 2 ADD FALSE 0)
	(gimp-rect-select img 322 0 18 2 ADD FALSE 0)
	(gimp-rect-select img 370 0 17 2 ADD FALSE 0)
	(gimp-rect-select img 417 0 18 2 ADD FALSE 0)
	(gimp-rect-select img 465 0 80 2 ADD FALSE 0)
	(gimp-rect-select img 0 2 3 1 ADD FALSE 0)
	(gimp-rect-select img 41 2 9 1 ADD FALSE 0)
	(gimp-rect-select img 88 2 10 1 ADD FALSE 0)
	(gimp-rect-select img 136 2 9 1 ADD FALSE 0)
	(gimp-rect-select img 183 2 10 1 ADD FALSE 0)
	(gimp-rect-select img 231 2 10 1 ADD FALSE 0)
	(gimp-rect-select img 279 2 9 1 ADD FALSE 0)
	(gimp-rect-select img 326 2 10 1 ADD FALSE 0)
	(gimp-rect-select img 374 2 9 1 ADD FALSE 0)
	(gimp-rect-select img 421 2 10 1 ADD FALSE 0)
	(gimp-rect-select img 469 2 76 1 ADD FALSE 0)
	(gimp-rect-select img 0 3 2 4 ADD FALSE 0)
	(gimp-rect-select img 42 3 7 4 ADD FALSE 0)
	(gimp-rect-select img 89 3 8 4 ADD FALSE 0)
	(gimp-rect-select img 137 3 7 4 ADD FALSE 0)
	(gimp-rect-select img 184 3 8 4 ADD FALSE 0)
	(gimp-rect-select img 232 3 8 4 ADD FALSE 0)
	(gimp-rect-select img 280 3 7 4 ADD FALSE 0)
	(gimp-rect-select img 327 3 8 4 ADD FALSE 0)
	(gimp-rect-select img 375 3 7 4 ADD FALSE 0)
	(gimp-rect-select img 422 3 8 4 ADD FALSE 0)
	(gimp-rect-select img 470 3 75 4 ADD FALSE 0)
	(gimp-rect-select img 44 7 3 227 ADD FALSE 0)
	(gimp-rect-select img 91 7 4 227 ADD FALSE 0)
	(gimp-rect-select img 139 7 3 227 ADD FALSE 0)
	(gimp-rect-select img 186 7 4 227 ADD FALSE 0)
	(gimp-rect-select img 234 7 4 227 ADD FALSE 0)
	(gimp-rect-select img 282 7 3 227 ADD FALSE 0)
	(gimp-rect-select img 329 7 4 227 ADD FALSE 0)
	(gimp-rect-select img 377 7 3 227 ADD FALSE 0)
	(gimp-rect-select img 424 7 4 227 ADD FALSE 0)
	(gimp-rect-select img 472 7 73 78 ADD FALSE 0)
	(gimp-rect-select img 0 37 2 17 ADD FALSE 0)
	(gimp-rect-select img 42 37 7 17 ADD FALSE 0)
	(gimp-rect-select img 89 37 8 17 ADD FALSE 0)
	(gimp-rect-select img 137 37 7 17 ADD FALSE 0)
	(gimp-rect-select img 184 37 8 17 ADD FALSE 0)
	(gimp-rect-select img 232 37 8 17 ADD FALSE 0)
	(gimp-rect-select img 280 37 7 17 ADD FALSE 0)
	(gimp-rect-select img 327 37 8 17 ADD FALSE 0)
	(gimp-rect-select img 375 37 7 17 ADD FALSE 0)
	(gimp-rect-select img 422 37 8 17 ADD FALSE 0)
	(gimp-rect-select img 470 37 75 17 ADD FALSE 0)
	(gimp-rect-select img 2 41 1 9 ADD FALSE 0)
	(gimp-rect-select img 41 41 9 9 ADD FALSE 0)
	(gimp-rect-select img 88 41 10 9 ADD FALSE 0)
	(gimp-rect-select img 136 41 9 9 ADD FALSE 0)
	(gimp-rect-select img 183 41 10 9 ADD FALSE 0)
	(gimp-rect-select img 231 41 10 9 ADD FALSE 0)
	(gimp-rect-select img 279 41 9 9 ADD FALSE 0)
	(gimp-rect-select img 326 41 10 9 ADD FALSE 0)
	(gimp-rect-select img 374 41 9 9 ADD FALSE 0)
	(gimp-rect-select img 421 41 10 9 ADD FALSE 0)
	(gimp-rect-select img 469 41 76 9 ADD FALSE 0)
	(gimp-rect-select img 3 42 4 7 ADD FALSE 0)
	(gimp-rect-select img 37 42 17 7 ADD FALSE 0)
	(gimp-rect-select img 84 42 18 7 ADD FALSE 0)
	(gimp-rect-select img 132 42 17 7 ADD FALSE 0)
	(gimp-rect-select img 179 42 18 7 ADD FALSE 0)
	(gimp-rect-select img 227 42 18 7 ADD FALSE 0)
	(gimp-rect-select img 275 42 17 7 ADD FALSE 0)
	(gimp-rect-select img 322 42 18 7 ADD FALSE 0)
	(gimp-rect-select img 370 42 17 7 ADD FALSE 0)
	(gimp-rect-select img 417 42 18 7 ADD FALSE 0)
	(gimp-rect-select img 465 42 80 7 ADD FALSE 0)
	(gimp-rect-select img 7 44 538 3 ADD FALSE 0)
	(gimp-rect-select img 0 84 2 18 ADD FALSE 0)
	(gimp-rect-select img 42 84 7 18 ADD FALSE 0)
	(gimp-rect-select img 89 84 8 18 ADD FALSE 0)
	(gimp-rect-select img 137 84 7 18 ADD FALSE 0)
	(gimp-rect-select img 184 84 8 18 ADD FALSE 0)
	(gimp-rect-select img 232 84 8 18 ADD FALSE 0)
	(gimp-rect-select img 280 84 7 18 ADD FALSE 0)
	(gimp-rect-select img 327 84 8 18 ADD FALSE 0)
	(gimp-rect-select img 375 84 7 18 ADD FALSE 0)
	(gimp-rect-select img 422 84 8 18 ADD FALSE 0)
	(gimp-rect-select img 470 84 75 1 ADD FALSE 0)
	(gimp-rect-select img 470 85 12 1 ADD FALSE 0)
	(gimp-rect-select img 503 85 16 1 ADD FALSE 0)
	(gimp-rect-select img 540 85 5 1 ADD FALSE 0)
	(gimp-rect-select img 470 86 9 1 ADD FALSE 0)
	(gimp-rect-select img 506 86 10 1 ADD FALSE 0)
	(gimp-rect-select img 543 86 2 1 ADD FALSE 0)
	(gimp-rect-select img 470 87 8 3 ADD FALSE 0)
	(gimp-rect-select img 507 87 8 3 ADD FALSE 0)
	(gimp-rect-select img 544 87 1 148 ADD FALSE 0)
	(gimp-rect-select img 2 88 1 10 ADD FALSE 0)
	(gimp-rect-select img 41 88 9 10 ADD FALSE 0)
	(gimp-rect-select img 88 88 10 10 ADD FALSE 0)
	(gimp-rect-select img 136 88 9 10 ADD FALSE 0)
	(gimp-rect-select img 183 88 10 10 ADD FALSE 0)
	(gimp-rect-select img 231 88 10 10 ADD FALSE 0)
	(gimp-rect-select img 279 88 9 10 ADD FALSE 0)
	(gimp-rect-select img 326 88 10 10 ADD FALSE 0)
	(gimp-rect-select img 374 88 9 10 ADD FALSE 0)
	(gimp-rect-select img 421 88 10 10 ADD FALSE 0)
	(gimp-rect-select img 469 88 9 2 ADD FALSE 0)
	(gimp-rect-select img 3 89 4 8 ADD FALSE 0)
	(gimp-rect-select img 37 89 17 8 ADD FALSE 0)
	(gimp-rect-select img 84 89 18 8 ADD FALSE 0)
	(gimp-rect-select img 132 89 17 8 ADD FALSE 0)
	(gimp-rect-select img 179 89 18 8 ADD FALSE 0)
	(gimp-rect-select img 227 89 18 8 ADD FALSE 0)
	(gimp-rect-select img 275 89 17 8 ADD FALSE 0)
	(gimp-rect-select img 322 89 18 8 ADD FALSE 0)
	(gimp-rect-select img 370 89 17 8 ADD FALSE 0)
	(gimp-rect-select img 417 89 18 8 ADD FALSE 0)
	(gimp-rect-select img 465 89 13 1 ADD FALSE 0)
	(gimp-rect-select img 465 90 12 7 ADD FALSE 0)
	(gimp-rect-select img 508 90 6 144 ADD FALSE 0)
	(gimp-rect-select img 7 91 470 4 ADD FALSE 0)
	(gimp-rect-select img 469 97 8 1 ADD FALSE 0)
	(gimp-rect-select img 470 98 7 4 ADD FALSE 0)
	(gimp-rect-select img 472 102 5 132 ADD FALSE 0)
	(gimp-rect-select img 477 111 1 12 ADD FALSE 0)
	(gimp-rect-select img 507 111 8 12 ADD FALSE 0)
	(gimp-rect-select img 478 114 1 6 ADD FALSE 0)
	(gimp-rect-select img 506 114 10 6 ADD FALSE 0)
	(gimp-rect-select img 543 114 2 6 ADD FALSE 0)
	(gimp-rect-select img 479 115 3 4 ADD FALSE 0)
	(gimp-rect-select img 503 115 16 4 ADD FALSE 0)
	(gimp-rect-select img 540 115 5 4 ADD FALSE 0)
	(gimp-rect-select img 482 116 63 2 ADD FALSE 0)
	(gimp-rect-select img 0 132 2 17 ADD FALSE 0)
	(gimp-rect-select img 42 132 7 17 ADD FALSE 0)
	(gimp-rect-select img 89 132 8 17 ADD FALSE 0)
	(gimp-rect-select img 137 132 7 17 ADD FALSE 0)
	(gimp-rect-select img 184 132 8 17 ADD FALSE 0)
	(gimp-rect-select img 232 132 8 17 ADD FALSE 0)
	(gimp-rect-select img 280 132 7 17 ADD FALSE 0)
	(gimp-rect-select img 327 132 8 17 ADD FALSE 0)
	(gimp-rect-select img 375 132 7 17 ADD FALSE 0)
	(gimp-rect-select img 422 132 8 17 ADD FALSE 0)
	(gimp-rect-select img 470 132 7 17 ADD FALSE 0)
	(gimp-rect-select img 2 136 1 9 ADD FALSE 0)
	(gimp-rect-select img 41 136 9 9 ADD FALSE 0)
	(gimp-rect-select img 88 136 10 9 ADD FALSE 0)
	(gimp-rect-select img 136 136 9 9 ADD FALSE 0)
	(gimp-rect-select img 183 136 10 9 ADD FALSE 0)
	(gimp-rect-select img 231 136 10 9 ADD FALSE 0)
	(gimp-rect-select img 279 136 9 9 ADD FALSE 0)
	(gimp-rect-select img 326 136 10 9 ADD FALSE 0)
	(gimp-rect-select img 374 136 9 9 ADD FALSE 0)
	(gimp-rect-select img 421 136 10 9 ADD FALSE 0)
	(gimp-rect-select img 469 136 8 9 ADD FALSE 0)
	(gimp-rect-select img 3 137 4 7 ADD FALSE 0)
	(gimp-rect-select img 37 137 17 7 ADD FALSE 0)
	(gimp-rect-select img 84 137 18 7 ADD FALSE 0)
	(gimp-rect-select img 132 137 17 7 ADD FALSE 0)
	(gimp-rect-select img 179 137 18 7 ADD FALSE 0)
	(gimp-rect-select img 227 137 18 7 ADD FALSE 0)
	(gimp-rect-select img 275 137 17 7 ADD FALSE 0)
	(gimp-rect-select img 322 137 18 7 ADD FALSE 0)
	(gimp-rect-select img 370 137 17 7 ADD FALSE 0)
	(gimp-rect-select img 417 137 18 7 ADD FALSE 0)
	(gimp-rect-select img 465 137 12 7 ADD FALSE 0)
	(gimp-rect-select img 7 139 470 3 ADD FALSE 0)
	(gimp-rect-select img 477 144 1 13 ADD FALSE 0)
	(gimp-rect-select img 507 144 8 13 ADD FALSE 0)
	(gimp-rect-select img 478 147 1 7 ADD FALSE 0)
	(gimp-rect-select img 506 147 10 7 ADD FALSE 0)
	(gimp-rect-select img 543 147 2 7 ADD FALSE 0)
	(gimp-rect-select img 479 148 3 5 ADD FALSE 0)
	(gimp-rect-select img 503 148 16 5 ADD FALSE 0)
	(gimp-rect-select img 540 148 5 5 ADD FALSE 0)
	(gimp-rect-select img 482 149 63 3 ADD FALSE 0)
	(gimp-rect-select img 477 178 1 12 ADD FALSE 0)
	(gimp-rect-select img 507 178 8 12 ADD FALSE 0)
	(gimp-rect-select img 0 179 2 18 ADD FALSE 0)
	(gimp-rect-select img 42 179 7 18 ADD FALSE 0)
	(gimp-rect-select img 89 179 8 18 ADD FALSE 0)
	(gimp-rect-select img 137 179 7 18 ADD FALSE 0)
	(gimp-rect-select img 184 179 8 18 ADD FALSE 0)
	(gimp-rect-select img 232 179 8 18 ADD FALSE 0)
	(gimp-rect-select img 280 179 7 18 ADD FALSE 0)
	(gimp-rect-select img 327 179 8 18 ADD FALSE 0)
	(gimp-rect-select img 375 179 7 18 ADD FALSE 0)
	(gimp-rect-select img 422 179 8 18 ADD FALSE 0)
	(gimp-rect-select img 470 179 8 11 ADD FALSE 0)
	(gimp-rect-select img 478 181 1 6 ADD FALSE 0)
	(gimp-rect-select img 506 181 10 6 ADD FALSE 0)
	(gimp-rect-select img 543 181 2 6 ADD FALSE 0)
	(gimp-rect-select img 479 182 3 4 ADD FALSE 0)
	(gimp-rect-select img 503 182 16 4 ADD FALSE 0)
	(gimp-rect-select img 540 182 5 4 ADD FALSE 0)
	(gimp-rect-select img 2 183 1 10 ADD FALSE 0)
	(gimp-rect-select img 41 183 9 10 ADD FALSE 0)
	(gimp-rect-select img 88 183 10 10 ADD FALSE 0)
	(gimp-rect-select img 136 183 9 10 ADD FALSE 0)
	(gimp-rect-select img 183 183 10 10 ADD FALSE 0)
	(gimp-rect-select img 231 183 10 10 ADD FALSE 0)
	(gimp-rect-select img 279 183 9 10 ADD FALSE 0)
	(gimp-rect-select img 326 183 10 10 ADD FALSE 0)
	(gimp-rect-select img 374 183 9 10 ADD FALSE 0)
	(gimp-rect-select img 421 183 10 10 ADD FALSE 0)
	(gimp-rect-select img 469 183 76 2 ADD FALSE 0)
	(gimp-rect-select img 3 184 4 8 ADD FALSE 0)
	(gimp-rect-select img 37 184 17 8 ADD FALSE 0)
	(gimp-rect-select img 84 184 18 8 ADD FALSE 0)
	(gimp-rect-select img 132 184 17 8 ADD FALSE 0)
	(gimp-rect-select img 179 184 18 8 ADD FALSE 0)
	(gimp-rect-select img 227 184 18 8 ADD FALSE 0)
	(gimp-rect-select img 275 184 17 8 ADD FALSE 0)
	(gimp-rect-select img 322 184 18 8 ADD FALSE 0)
	(gimp-rect-select img 370 184 17 8 ADD FALSE 0)
	(gimp-rect-select img 417 184 18 8 ADD FALSE 0)
	(gimp-rect-select img 465 184 80 1 ADD FALSE 0)
	(gimp-rect-select img 465 185 17 1 ADD FALSE 0)
	(gimp-rect-select img 7 186 472 1 ADD FALSE 0)
	(gimp-rect-select img 7 187 471 3 ADD FALSE 0)
	(gimp-rect-select img 465 190 12 2 ADD FALSE 0)
	(gimp-rect-select img 469 192 8 1 ADD FALSE 0)
	(gimp-rect-select img 470 193 7 4 ADD FALSE 0)
	(gimp-rect-select img 477 211 1 23 ADD FALSE 0)
	(gimp-rect-select img 507 211 8 23 ADD FALSE 0)
	(gimp-rect-select img 478 214 1 20 ADD FALSE 0)
	(gimp-rect-select img 506 214 10 20 ADD FALSE 0)
	(gimp-rect-select img 543 214 2 20 ADD FALSE 0)
	(gimp-rect-select img 479 215 3 19 ADD FALSE 0)
	(gimp-rect-select img 503 215 16 19 ADD FALSE 0)
	(gimp-rect-select img 540 215 5 19 ADD FALSE 0)
	(gimp-rect-select img 482 216 63 18 ADD FALSE 0)
	(gimp-rect-select img 0 227 2 7 ADD FALSE 0)
	(gimp-rect-select img 42 227 7 7 ADD FALSE 0)
	(gimp-rect-select img 89 227 8 7 ADD FALSE 0)
	(gimp-rect-select img 137 227 7 7 ADD FALSE 0)
	(gimp-rect-select img 184 227 8 7 ADD FALSE 0)
	(gimp-rect-select img 232 227 8 7 ADD FALSE 0)
	(gimp-rect-select img 280 227 7 7 ADD FALSE 0)
	(gimp-rect-select img 327 227 8 7 ADD FALSE 0)
	(gimp-rect-select img 375 227 7 7 ADD FALSE 0)
	(gimp-rect-select img 422 227 8 7 ADD FALSE 0)
	(gimp-rect-select img 470 227 75 7 ADD FALSE 0)
	(gimp-rect-select img 2 231 1 3 ADD FALSE 0)
	(gimp-rect-select img 41 231 9 3 ADD FALSE 0)
	(gimp-rect-select img 88 231 10 3 ADD FALSE 0)
	(gimp-rect-select img 136 231 9 3 ADD FALSE 0)
	(gimp-rect-select img 183 231 10 3 ADD FALSE 0)
	(gimp-rect-select img 231 231 10 3 ADD FALSE 0)
	(gimp-rect-select img 279 231 9 3 ADD FALSE 0)
	(gimp-rect-select img 326 231 10 3 ADD FALSE 0)
	(gimp-rect-select img 374 231 9 3 ADD FALSE 0)
	(gimp-rect-select img 421 231 10 3 ADD FALSE 0)
	(gimp-rect-select img 469 231 76 3 ADD FALSE 0)
	(gimp-rect-select img 3 232 4 2 ADD FALSE 0)
	(gimp-rect-select img 37 232 17 2 ADD FALSE 0)
	(gimp-rect-select img 84 232 18 2 ADD FALSE 0)
	(gimp-rect-select img 132 232 17 2 ADD FALSE 0)
	(gimp-rect-select img 179 232 18 2 ADD FALSE 0)
	(gimp-rect-select img 227 232 18 2 ADD FALSE 0)
	(gimp-rect-select img 275 232 17 2 ADD FALSE 0)
	(gimp-rect-select img 322 232 18 2 ADD FALSE 0)
	(gimp-rect-select img 370 232 17 2 ADD FALSE 0)
	(gimp-rect-select img 417 232 18 2 ADD FALSE 0)
	(gimp-rect-select img 465 232 80 2 ADD FALSE 0)

	;削除
	(gimp-edit-clear drawable)

	;選択範囲の解除
	(gimp-selection-none img)

	;undoグループの終了
	(gimp-undo-push-group-end img)

	; 出力
	(gimp-displays-flush)
)

(script-fu-register
	"インベントリ切取り"
	"<Image>/Script-Fu/テラリア/インベントリ切取り"
	"テラリアのインベントリ表示部分を切り取る"
	"R"
	"Copyright 2017, R"
	"May 28, 2017"
	""
	SF-IMAGE "Image" 0
	SF-DRAWABLE "Drawable" 0
)

このファイルをGIMP%UserProfile%\.gimp-2.8\scriptsに置けば利用できるようになります。

ツールの紹介動画

ニコニコ動画
www.nicovideo.jp

YouTube
youtu.be

以上