SlideShare ist ein Scribd-Unternehmen logo
1 von 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がごちゃごちゃになって理解不能!
→落ち着け
• 適当に動作サンプルとして選んだ
くまりんこ可愛い!

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch

アジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよアジャイルアカデミー の研修に参加したよ
アジャイルアカデミー の研修に参加したよ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
 

Andere mochten auch (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
 

Kürzlich hochgeladen

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Schemeでgimpを動かしてみる