2chで.epsファイルが開けないって質問があったので確認してみた。
gimpでEPSファイル見るのにGS_PROGを設定しろとかでたので
システムの環境変数設定にPATHを作ってghostscriptの場所を指定したんだけどうまくいきません
どうすればいいんですか
from http://hibari.2ch.net/test/read.cgi/software/1299821250/230n
Ghost Scriptのインストール
1. まず「Ghostscript 9.02 (日本語版)」をダウンロードしてインストール。
ミラー(W32TeX), ミラー(東京大学)
設定は何も変えずに「次へ」を連打コースのインストールでお願いします。
インストールディレクトリを変えても問題ないらしいけど、フォルダ名にスペースが入ってるとろくな目にあった記憶がないので俺はインストール先を変えませんでした。
環境変数の設定
次に環境変数の設定を行います。 環境変数の変更を反映させるには必ず編集したあとに一度GIMPを再起動させてください。
ちなみにRapid Environment Editor とか入れとくと楽に編集できます。
「ユーザー変数」でも「システム変数」でもどっちでもいいんだけど、俺は「ユーザー変数」の方に”GS_PROG”という変数を作って”C:\gs\gs9.02\bin\gswin32.exe”を設定しました。”PATH”じゃなくて”GS_PROG”ね。
これで動く人もいるみたいなんだけど、うちの環境では動きませんでした。(ノД`)・゜・。
仕方なく他のサイトを探してると「gswin32.exe じゃなくて gswin32c.exe を使う。」という情報があったのでGS_PROGの値を変更してみるけどやっぱりダメ。
あんまりやりたくなかったけど、実行ファイルをGIMPの bin フォルダに直接ぶち込む方法を試したらやっと動きました。
結論(ここだけ読めばOK)
1.「Ghostscript 9.02 (日本語版)」インストール
2. “gimp-2.6.exe” のあるフォルダ(うちの環境だと “P:\Dropbox\bin\gimp26\App\gimp\bin”) に “gswin32c.exe” をコピーしてGIMPを再起動する。
3. サンプルファイルを開いて試してみる。
4. でけたー。 ヽ( ´∀`)ノ
以上です。”gswin32.exe” では動かないのでファイルを間違えないように気をつけてください。
参考ページ
Problem opening .eps files
http://registry.gimp.org/node/412
Ghostscript のインストール
http://www.geocities.co.jp/gimproject/tips/ghostscript.html
Ghostscript 9.02 + GSview 4.9 の日本語版
http://auemath.aichi-edu.ac.jp/~khotta/ghost/
Script-Fuで使える引数一覧です。
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-VALUE "value" "10"
SF-TOGGLE "toggle" TRUE
;初期値 50, 最小値 0, 最大値 100, small-step, large-step,
SF-ADJUSTMENT "adjustment int slider" '(50 0 100 1 10 0 0)
SF-ADJUSTMENT "adjustment float slider" '(50 0 100 1 10 1 0)
SF-ADJUSTMENT "adjustment int roll-box" '(50 0 100 1 10 0 1)
SF-ADJUSTMENT "adjustment float roll-box" '(50 0 100 1 10 1 1)
SF-FILENAME "filiname" "filiname"
SF-STRING "string" "文字列"
SF-FONT "font" "Sans"
SF-COLOR "color" '(256 0 0)
SF-OPTION "option" '("一つ目" "二つ目" "三つ目")
SF-GRADIENT "gradient" "FG to Transparent"
SF-DIRNAME "dirname" "Desktop"
実行結果がこちら。
実際に数値を入れて確かめたい方はこちらをダウンロードして使ってください。
fe-arg-sample.scm
Posted by 鉄 on 2010年2月24日
Script-Fu の解説続き
前回に引き続いて実際に公開してる[複数の画像からパターンを一括作成]を用いてのScript-Fuの解説です。
今回はメインの処理部分を見ていきます。
(define (script-fu-fe-layers-to-patterns img drawable dir)
(map
(lambda (layer)
(let* ((basename
(remove-extension
(car (gimp-drawable-get-name layer))))
(filename (concat dir "/" basename ".pat")))
(file-pat-save
1 img layer filename basename basename)))
(vector->list (cadr (gimp-image-get-layers img)))))
define で関数の定義
まず、一行目。
(define (script-fu-fe-layers-to-patterns img drawable dir)
この define を使うことにより新しい関数を定義できます。
引数の一つ目が関数の名前、ここでは script-fu-fe-layers-to-patterns になっています。
その後ろについてる img, drawable, dir の3つが引数ですね。
これは前回の script-fu-register で使った SF-IMAGE, SF-DRAWBLE, SF-DIRNAME を受け取ってます。
そうそう、関数名は頭に script-fu- が付けることが決まってるそうです。
あとは他のスクリプトと被らないようにだけ気をつけて適当に命名してください。
便利な map の使い方
(map
(lambda (layer)
ここがとっつきにくいポイントなので、map を使った簡単な例を紹介ます。
(map + '(1 2 3) '(4 5 6))
では、GIMPを立ち上げてメニューの[フィルタ]→[Script-Fu]→[コンソール]を開いて
上のコードを入力欄にいれて、エンターキーを叩いて確定してください。
(5 7 9)
と表示されたでしょう。次は + を * に変えて入力してください
(map * '(1 2 3) '(4 5 6))
こんどは
(4 10 18)
と表示されましたね。同じように – や / も試して見てください
(map - '(1 2 3) '(4 5 6)) ; (0.25 0.4 0.5)
(map - '(1 2 3) '(4 5 6)) ; (-3 -3 -3)
規則には気づかれたでしょうか?
具体的に述べますと map は 第一引数に関数をとりそれ以降のリストに適用し、
その結果をリストで返します。つまり
(map + '(1 2 3) '(4 5 6))
は
(list (+ 1 4) (+ 2 5) (+ 3 6)) ; listはリストを返す関数
と同様の処理になります。大変便利な関数なのですが普通は+などの簡単な処理ではなく
自分の定義したもっと複雑な関数を適用させる事が多いでしょう。
scheme でよく使う lambda とは
そこで出てくるのが lambda(無名関数)です。
無名関数とはその名の通り名前を持たない関数です。
言葉にするとややこしいですが「関数を定義するまでもない簡単な関数が欲しい時に使う」ぐらいの理解で大丈夫でしょう
さて、その使い方の解説のために初めは名前を持つ関数を作ってみます。
(define (add-2 n) (+ n 2))
この関数 add-2 は 数字を一つ引数にとり、その数字に 2 を足して返します。先程のmapと組み合わせると
(map add-2 '(1 2 3)) ; (3 4 5)
となります。実際にGIMPのコンソールで試してみてください。
そしてこれを lambda を使って書くとどうなるかといいますと
(map
(lambda (n) (+ n 2))
'(1 2 3))
となります。 lambdaを使うことによって add-2 を使わずに記述できるようになりました。
(lambda (引数) 処理部分)
という構造です。この map と lambda の組み合わせは scheme では頻繁に登場します。
よく C や JAVA のプログラミングに慣れている人が while や if 文を使って記述している処理も
map, lambda を使えば簡潔にわかりやすく書けてしまうことも多々ありますので、どんどん使っていきましょう
let の使い方
次は let についての説明です
(let* ((basename (remove-extension
(car (gimp-drawable-get-name layer))))
(filename (concat dir "/" basename ".pat")))
また難しいですね。解説するには長すぎるので、短いサンプルをひとつ
(let* ((foo 3)(bar 1)) (+ foo bar))
この処理では局所変数 foo に 3 を bar に 1 を代入しその合計を返しています。
scheme では変数を set! でも代入できますが推奨されていませんのでこのような処理になります。
[複数の画像からパターンを一括作成]のスクリプトでは局所変数 basename と filename に必要な情報を代入してるわけです。
長くなってきましたので今回はここまで。 あと1,2回で終わります
Posted by 鉄 on 2010年2月22日
Script-Fuとは何か?
簡単にいうと自動化処理を記述するための方法です。
GIMPではそのために Scheme という括弧だらけの言語が採用されています。はじめはその見た目や独特さに戸惑うと思いますが、慣れてくるとrubyやjavascriptと似た性質がある事に気づきその面白さがわかってくるでしょう。
さて、前置きを長くおいても仕方がありませんのでまずこのチュートリアルで何を作れるようになるかを見ていきます。今回のお題はこのBlogで公開している「複数の画像からパターンを一括作成(Script-Fu)」を使うことにしましょう。
まず、実際に全体を見てください。
; This program is free software;
; you can redistribute it and/or modify
; it under the terms of the GNU General Public License Version 3.
; This program is distributed in the hope that it will be
; useful, but WITHOUT ANY WARRANTY;
; See the attached file or the link below.
; http://www.gnu.org/licenses/gpl-3.0.html
;
; Copyright (C) 2008 鉄(Tetsu) Mail : hogehoge@ironsand.net ,
; Webpage : http://gimp.sblo.jp/ (lang:jp)
;
; 2009/03/15 save each layers as patterns
(define (script-fu-fe-layers-to-patterns img drawable dir)
(map
(lambda (layer)
(let* ((basename
(remove-extension
(car (gimp-drawable-get-name layer))))
(filename (concat dir "/" basename ".pat")))
(file-pat-save
1 img layer filename basename basename)))
(vector->list (cadr (gimp-image-get-layers img)))))
;; add this script to the menu.
(script-fu-register
"script-fu-fe-layers-to-patterns"
"/File/Save layers as patterns"
"layers to patterns"
"tetsu" ; writer
"tetsu" ; copyright
"2009/03"
""
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-DIRNAME "Directory" "MyPicture_"
)
全部で34行しかありません。コメントが13行ありますので実質21行ですね。
Schemeのコメント
コメントが13行と書きましたが、scheme では”;”で始まる行、もしくは”;”以降の部分すべてがコメントになります。コメント部分はGIMPからは無視されますが、人間には有益な情報が詰まっていますので初めから順に見ていきましょう。
; This program is free software;
; you can redistribute it and/or modify
; it under the terms of the GNU General Public License Version 3.
; This program is distributed in the hope that it will be
; useful, but WITHOUT ANY WARRANTY;
; See the attached file or the link below.
; http://www.gnu.org/licenses/gpl-3.0.html
はい、英語ですね。まず読む気がしませんね。ですが、安心してください。ここに書いてあるのは「このスクリプトがGPL3で配布されてますよ~」ということだけです。
GPLとは
GPLとはプログラムの配布におけるライセンスで、「自由に使っていいですよ。ソースコードも誰でも見れるようにしておきますよ。でも、あなたがこれを使うときも同じようにGPLライセンスを使って公開してくださいね」という物です。詳しくは下記のサイト参考にしてください。
http://www.opensource.jp/gpl/gpl.ja.html.euc-jp
http://www.gnu.org/licenses/gpl-faq.ja.html
; Copyright (C) 2008 鉄(Tetsu) Mail : web-@-ironsand.net ,
; Webpage : http://gimp.sblo.jp/ (lang:jp)
;
; 2009/03/15 save each layers as patterns
次のこの部分は誰が書いたか、と連絡先(ダミー)それに、スクリプトの機能と、それを書いた日付が書いています。
schemeの基礎
そろそろ本題の処理部分に入っていきたいところですが、schemeの基礎部分を理解してないと何が何だか分からなくなってしまうので本当に最低限のことだけをお伝えしようと思います。まずschemeの全ての文は括弧で囲まれた形になります。例えば 3 と 4 と 5 を比べて、大きい方の数字を返すのは
(max 3 4 5)
になります。はじめの max が関数で、3, 4, 5 が引数ですね。JAVAなどの言語では引数が “,” で区切られますがschemeではスペースで区切られます。
スペースの代わりに改行してもOKです。だから上のコードは
(max
3
4
5)
と書いても良いわけです。ちなみにJAVAで同じ物を書くなら
max(max(3, 4), 5);
となります。それでは以上を踏まえた上で登録部分の処理から見ていきましょう。
(script-fu-register ;GIMPに登録するための関数
"script-fu-fe-layers-to-patterns" ;このスクリプトの関数名
"/File/Save layers as patterns" ;メニューのどこに表示させるか
"layers to patterns" ;スクリプトの説明
"tetsu" ; writer ;製作者
"tetsu" ; copyright ;著作権者
"2009/03" ;作成日
"" ;色の形式(RGBなど)
SF-IMAGE "Image" 0 ;GIMPで開いてる画像のID
SF-DRAWABLE "Drawable" 0 ;DrawableのID
SF-DIRNAME "Directory" "MyPicture_" ;ディレクトリを選択
)
この一行目の script-fu-register が関数で、ズラズラーと後ろに引数が並んでいます。コメントを足しておきましたので大体は上のコードを見て頂くとして、問題はSF-IMAGE SF-DRAWABLE SF-DIRNAME などですね。 初めの2つ SF-IMAGEと SF-DRAWBLE はGIMPで画像を開いてる状態でscript-fuを呼び出しますと、自動的にID(整数)が関数に渡されます。今回のようにそれ以外の SF-DIRNAME などが渡されますと script-fu を実行したとき、ユーザーに選択や入力のためのダイアログが表示されます。
思ったより長くなっちゃいましたのでので、続きは次回。
Posted by 鉄 on 2009年6月26日
こちらのチュートリアルをscript-fuに書き換えました。
How To Turn A Photo Into A Sketch by HarleyJane
http://jeff-flowers.com/how-to-turn-a-photo-into-a-sketch/
素晴らしいチュートリアルを公開してくれている HarleyJane さんに感謝。
サンプル
[フィルタ]->[芸術]->[Pencil Sketch]から呼び出してください。
Download : (2つとも必要です)
0-fe-util.scm
fe-pencil-sketch.scm
動作確認 : WinXP SP3, GIMP 2.6.5 Portable
Scriptの導入はこちらを参照してください
http://www.geocities.jp/gimproject/scripts/kaisetu.html
Posted by 鉄 on 2009年3月28日
GIMPで縦書きを行います。
ruby(ルビ)をつける機能も備わっています。
2ch の [GIMPを使おう Part17]の321氏のスクリプトを
467氏が改良を行い、更にそれを改造したのがこれです。
[ツール]->[縦書きふ~(ルビ)]から呼び出してください。
Download : (2つとも必要です)
0-fe-util.scm
fe-tategaki.scm
動作確認 : WinXP SP3, GIMP 2.6.5 Portable
Scriptの導入はこちらを参照してください
http://www.geocities.jp/gimproject/scripts/kaisetu.html
2010/02/10追記
「ぅ」や「っ」等の小文字の位置修正。
Posted by 鉄 on 2009年3月16日
それぞれのレイヤを個別にパターン(pattern)としてまとめて保存します。
大量のパターンにしたい画像がある時などにどうぞ。
パターンを探すならこちらから
http://www.colourlovers.com/
レイヤ名がそのままファイル名とパターン説明になります。
レイヤとして保存したいファイルを全て読み込んで
[ファイル]->[save-layers-as-patterns]を呼び出してください。
保存先が指定できますので、その場所に*.pat ファイルが保存されます。
Download : fe-layers-to-patterns.zip
動作確認 : WinXP SP3, GIMP 2.6.5 Portable
Scriptの導入はこちらを参照してください
http://www.geocities.jp/gimproject/scripts/kaisetu.html
コメントは受け付けていません。
Posted by 鉄 on 2009年2月24日
http://www.gimpusers.de/tutorials/security-icon-erstellen.html
このチュートリアルは上のアドレスで myke さんが(12. Sep 2007 22:05)に
作成されたものを鉄が日本語訳したものです。
環境はGIMP 2.4 が対象です。
このチュートリアルでは実用的な「盾シンボル」(例えばセキュリティ警告で使えるような)を
GIMPで作成する方法を myke がお伝えします
1.まず適当な大きさで新規画像を作成する
ここでは320×240のサイズで背景には明るめの灰色(#eaeaf0)を使っています。
2.始めに基礎的な盾の形を作っていきます。
パスツールを使い参考画像にあるように3つの点を打ちます
3つ目の点から1つ目の点に繋ぐ時はCtrlキーを押しながら行います。
次にCtrlキーを押しながら点を選択しマウスを動かすことによって
それらしい形に整えてください
右クリックで出るメニューの[表示]->[ズーム] で 200% や 400% に拡大すると作業がしやすいですよ。
3. メニューの [選択]->[パスから]で選択範囲を作成ます
次に新しいレイヤー背景色透明で前面作成して、新しくできたレイヤーの選択範囲を白で塗りつぶします。レイヤーに「基礎部分」と名前を付け選択部分を解除してください。
4. より良い効果の出すためにドロップシャドウを行います。
[フィルタ]->[光と影]->[ドロップシャドウ]で下の値を入力してください
オフセット: 0
ぼかし半径: 5
色: 黒
不透明度: 80
5. 今、全体はこんな感じです
6. 今度は立体的な効果を整えていきましょう。
まず”陰影”という名前で新しいレイヤを作り、そこに黒のレイヤマスクを追加します。
次にレイヤ「基礎部分」を選び右クリックの「選択領域をアルファチャンネル」で選択を行い
その選択をつかいレイヤ「陰影」のマスクを白で塗ります。
選択領域を解除し「陰影」のマスクじゃない方を選んで置いてください
ここで、ツールの前景色が「黒」になっていることを確認しグラデーションツールの「前景から透明に」で下の画像のようにグラデーションをかけてください。
7. 次にレイヤ「陰影」の不透明度を10〜30の間で設定してください。
ここでは15を選んでいます。
8. ここで盾の形状を作っていきます。また新しいレイヤをつくり白で塗りつぶし、名前を「形状」とします。さっきと同じようにレイヤ「基礎部分」から選択部分をつくり、その選択領域を[選択]->[選択領域の縮小] で 2 ピクセル 縮めます。選択領域を黒で塗り潰したら選択領域を解除して、筆ツールで白の帯を描きましょう。(ヒント:Shiftを押しながらで直線が引けます)
9. さて、次は角を丸めましょう。[フィルタ]->[ぼかす]->[ガウシアンぼかし]を半径5であてて[道具]->[色ツール]->[カーブ]で下の画像のように設定します。角が取れたのでここで白色を透明色に変えてしまいましょう。[色]->[色を透明度に]->[白]で行えます。ここでレイヤ「形状」を目のアイコンをクリックして不可視に設定しておきます。さて、これで色を塗るための形状が作れました。
10.
レイヤ「形状」をコピーし不可視属性をはずし「色」と名付けます。塗りつぶしツールのモードを「スクリーン」にして好きな色で塗りつぶします(#274383など)
11.レイヤ「色の陰影」を新しく作り、レイヤ「基礎部分」から選択範囲を取得し2ピクセル縮めます。
色塗りに使ったものより暗い色(#13295aなど)を選択しグラデーションツールの「形状」を形状広がり(角張った)にしグラデーション方向を逆さまにします。マウスをドラッグしてグラデーションをかけて、黒のレイヤーマスクを挿入し、レイヤ「形状」から透明部分を取得して選択部分を白で塗りつぶします。
12.レイヤ「陰影」を複製し、内容を消去します。そしてそのレイヤを一番上まで持っていき不透明度を100%にします。
グラデーションツールの形状を Linear に戻し 「白から透明」のグラデーションを画像のようにかけます。
好みによってモードを微粒結合に変えてもいいでしょう。
13
次は鏡効果を出します。方法は、まずレイヤ「背景」を不可視にしておいてから[編集]->[可視部分をコピー],[編集]->[貼り付け],[レイヤ]->[新規レイヤ]. そこでレイヤを垂直反転して下の方にずらします。レイヤマスクを追加して白から黒のグラデーションを上から下にかけます。レイヤに「反射」と名前をつけて不透明度を30%に設定します。ここでレイヤ「背景」を可視状態に戻しておきます。
14. 基本的にはもうこれで完成ですが、ここでもう一つステップを追加しておきましょう
明るめの色の文字を書いて、それを45度回転、レイヤを画像に合わせて動かして半径5で影を落としましょう。白のグラデーションがかかってるレイヤ「陰影コピー」を一番上に持ってきて、これにて終了。
15.レイヤの一覧
16.その他のバリエーション
17.応用例
この文書のライセンスは以下。
http://creativecommons.org/licenses/by/3.0/at/deed.ja
Posted by 鉄 on 2009年2月23日
http://0bbs.jp/gimproject/1970/w で
無名さんが良い感じの3Dのロゴの作り方を
詳しく解説してくれていたので
それをScript-Fu化しました。
正式に立体化してるわけではないので
3Dのモデルのような動きはできません。
ファイル->画像の生成->ロゴ->Fe Logo 3D
から呼び出せます。
★2009/05/28
ひよこさんのリクエストにこたえて
ぼかしの有無の設定、装飾のオフセット方向の設定機能追加。
Download : (2つとも必要です)
fe-logo-3d.scm
0-fe-util.scm
動作確認 : GIMP 2.6.5 Portable
Scriptの導入はこちらを参照してください
http://www.geocities.jp/gimproject/scripts/kaisetu.html