SlideShare une entreprise Scribd logo
1  sur  19
SchemeでGIMPを動かしてみた
あると@twinkfrag
軽く自己紹介を
• FI科 – 情報メディア学科2
年
• ソフトウェア研究部
• 趣味は
艦船を擬人化した女の子を
クリックして集めるゲーム
とか、
ヒロインの女の子をクリッ
クしてメッセージウインド
ウを読みながら攻略する
What’s GIMP?
• GNU Image Manipulation Program
• 言わずと知れた画像編集ソフト
• 多くのLinuxディストリに同梱されている
What’s Sheme?
• LISPの方言のひとつ
• こわい
• 言語仕様が小さいのが特徴らしい
GIMPとSchemeに何の関係が?
• GIMPは”Script-Fu”でマクロ操作ができる
• そのScript-FuはSchemeで動く
• 最近のGIMPにはPerlやらPythonやらで動く
環境も用意されてるらしいがせっかくな
ので手を出してみた
• 結果、大やけど
ざっくりとScheme入門1
• 関数は必ず()で括る
• (関数名 arg1 arg2 … argN) といった具合
• (+ 1 2) で 3 が返る感じ
ざっくりとScheme入門2
• LISPなのでリスト処理をしよう
• ‘(1 2 3) あるいは (list 1 2 3) の形式で作れる
• 中身は連結リスト
頭のオブジェクトをcar
後ろのリスト(を示すポインタ)をcdrと呼ぶ
1
car

cdr

2

3

‘()

• (cons 1 ‘(2 3)) でcarとcdrを指定して生成
ざっくりとScheme入門3
• (define シグネチャ 処理)で関数定義
• シグネチャ部分は関数呼び出しと同じ
(関数名 arg1 arg2 … argN)
• 処理部分は任意の数の関数が書ける
• 最後に標準出力に出されたものがそのま
ま返り値となる
ざっくりとScheme入門4
• (let* ((a 1) (b 2)) 処理)
で変数を利用した処理ができる
• 変数の束縛範囲はletが閉じるまで

• グローバル変数とかめんどくさいし使わ
ない
• どうしても使いたければdefineで定数返す
ざっくりとScheme入門5
• LISTの各項に対する処理は
(map 処理 list)
• 処理部分は引数1つの関数またはラムダ式

• ラムダ式
• 無名関数の記法のひとつ
GIMP上で必要なデータ型
• Image : 画像そのもの
• Display : 画像を開いている内部ウインドウ
• Drawable : レイヤーまたはチャンネル
操作が反映される対象
Script-Fuでよく使われる関数
• gimp-file-load : ファイルを読み込んでimage
を返す
• gimp-image-new : 新しいイメージを作成
• gimp-image-active-drawable : レイヤーを取
得
• gimp-layer-new : 新しいレイヤーを作成
• gimp-layer-set-offsets : レイヤーの位置を変
更
注意点
• gimp関数は単一項でも必ずリストを返す
• gimp-image-insert-layer : 作成したレイヤー
をイメージに挿入
レイヤーは作成しただけでは表示されな
い
親になるイメージを関数で指定してるの
に…
• gimp-image-merge-visible-layers :
pngなど単一レイヤーファイルに出力する
際には、レイヤーの結合が明示的に必要
その他の関数
• ヘルプ/プロシージャーブラウザーを眺め
る
実際にやってみた
• https://github.com/twinkfrag/scriptfu/blob/master/script-fu-sample-shift.scm
実際にやってみた
• フィルター/Script-Fu/スクリプトを再読み
込み
実際にやってみた
• Script-Fu コンソールで実行
実際にやってみた
ちゃんと先ほどのスクリプトの
1. 1280x720の画像を作成して
2. 読み込んだ画像を(20 20)に移動して
3. -move.pngをつけて保存
ができている!!
まとめ
• レイヤーが表示されない!
→insertしてませんでした
• レイヤーへの変更が保存されない!
→mergeしてませんでした
• consがごちゃごちゃになって理解不能!
→落ち着け
• 適当に動作サンプルとして選んだ
くまりんこ可愛い!

Contenu connexe

Tendances

Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。KyutatsuNishiura
 
箱猫プロジェクト
箱猫プロジェクト箱猫プロジェクト
箱猫プロジェクトblack cat
 
システム開発は何故揉めるのか
システム開発は何故揉めるのかシステム開発は何故揉めるのか
システム開発は何故揉めるのかechigoya-jp
 
裾野市プログラム勉強会(20170702)
裾野市プログラム勉強会(20170702)裾野市プログラム勉強会(20170702)
裾野市プログラム勉強会(20170702)Hiroyuki Ichikawa
 
トークイベントいろいろ
トークイベントいろいろトークイベントいろいろ
トークイベントいろいろ高見 知英
 
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみる
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみるSORACOM Air+RaspberryPi+littleBits+IFTTTしてみる
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみるSeigo Tanaka
 
ASP.NETで お手軽Ajax実装
ASP.NETで お手軽Ajax実装ASP.NETで お手軽Ajax実装
ASP.NETで お手軽Ajax実装echigoya-jp
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 

Tendances (8)

Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。Effective Python 第2版をオンライン読書会で。
Effective Python 第2版をオンライン読書会で。
 
箱猫プロジェクト
箱猫プロジェクト箱猫プロジェクト
箱猫プロジェクト
 
システム開発は何故揉めるのか
システム開発は何故揉めるのかシステム開発は何故揉めるのか
システム開発は何故揉めるのか
 
裾野市プログラム勉強会(20170702)
裾野市プログラム勉強会(20170702)裾野市プログラム勉強会(20170702)
裾野市プログラム勉強会(20170702)
 
トークイベントいろいろ
トークイベントいろいろトークイベントいろいろ
トークイベントいろいろ
 
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみる
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみるSORACOM Air+RaspberryPi+littleBits+IFTTTしてみる
SORACOM Air+RaspberryPi+littleBits+IFTTTしてみる
 
ASP.NETで お手軽Ajax実装
ASP.NETで お手軽Ajax実装ASP.NETで お手軽Ajax実装
ASP.NETで お手軽Ajax実装
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 

En vedette

アジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよアジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよToshihiro Suzuki
 
Harmonyロジック展開
Harmonyロジック展開Harmonyロジック展開
Harmonyロジック展開Sungsil Hwang
 
GIMPによる画像加工について
GIMPによる画像加工についてGIMPによる画像加工について
GIMPによる画像加工についてYanoLabLT
 
Library Lovers'キャンペーン事前研修 4
Library Lovers'キャンペーン事前研修 4Library Lovers'キャンペーン事前研修 4
Library Lovers'キャンペーン事前研修 4Yuriko Ikawa
 
タイル型ウィンドウマネージャawesomeのススメ
タイル型ウィンドウマネージャawesomeのススメタイル型ウィンドウマネージャawesomeのススメ
タイル型ウィンドウマネージャawesomeのススメTakuto Matsuu
 
openSUSEでお絵描きしよう
openSUSEでお絵描きしようopenSUSEでお絵描きしよう
openSUSEでお絵描きしようMai Akiyama
 

En vedette (9)

作成例
作成例作成例
作成例
 
アジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよアジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよ
 
Harmonyロジック展開
Harmonyロジック展開Harmonyロジック展開
Harmonyロジック展開
 
GIMPによる画像加工について
GIMPによる画像加工についてGIMPによる画像加工について
GIMPによる画像加工について
 
Library Lovers'キャンペーン事前研修 4
Library Lovers'キャンペーン事前研修 4Library Lovers'キャンペーン事前研修 4
Library Lovers'キャンペーン事前研修 4
 
タイル型ウィンドウマネージャawesomeのススメ
タイル型ウィンドウマネージャawesomeのススメタイル型ウィンドウマネージャawesomeのススメ
タイル型ウィンドウマネージャawesomeのススメ
 
RAW現像入門中…
RAW現像入門中…RAW現像入門中…
RAW現像入門中…
 
openSUSEでお絵描きしよう
openSUSEでお絵描きしようopenSUSEでお絵描きしよう
openSUSEでお絵描きしよう
 
2012 10 03_yamada
2012 10 03_yamada2012 10 03_yamada
2012 10 03_yamada
 

Dernier

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Dernier (10)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Schemeでgimpを動かしてみる