[Face-Wizard] 

 [Inkscape] 
 
 [Potrace] 
 
 [Tablet_Renew] 
 
 [MY_CGs] 
■ スクリプト
(当方Script初心者につき、スクリプトというより単なるショートカットの羅列のような)
これは毎回決まった操作、例えば「Aを同じ場所にコピーしてBとの差分を取って結合して2つ下のレイヤーにペーストして全体を50%縮小して決まったフォルダに別名で保存」とか、「自分で分かりやすい名前のレイヤーを、先に使う分だけ作っておく」みたいな一連の操作を自動で行ってくれる便利なボタン、みたいな感じです。
また初期状態では、ファイルごとにウィンドウの位置やサイズ・ダイアログの出現位置がばらばらのInkscapeを、カチっと同じ位置に整列・ウィンドウをリサイズさせることも出来ます。

uwsの記録にはマウス・キーボード入力自動化ツールのUWSCを使わせていただきました。uwsを実行するにはUWSCのインストールが必要です(フリー版で動作します)。
一部、AutoHotkeyのインストールが必要なものもあります。
これらのツールを無償で提供してくださっている うみうみ氏とAutoHotkey開発チームに感謝いたします。

なにぶん初心者が書いたスクリプトですので、ここで紹介するスクリプトの動作に関してプログラム作者様に質問する事は絶対にやめてください。
uws,ahkともにメモ帳で編集できるので、改良等はご自由にどうぞ(むしろ改良してほしい;;)。



●ファイル内容
全て共通で、ウィンドウ・ダイアログにキーを送って動作させるものが殆どです。タイトルバーの文字列がInkscapeのバージョンによって異なるため、0.45インストーラ版でなければたぶん動作しません(0.45でも開発版は文字列が異なります)。

Inkscapeを複数起動していると誤動作するかもしれません。また別のuwsファイルを呼び出すものがあるので、このページにあるuwsファイルは適当なフォルダを作ってその中に置いてください。
きっと間違った書き方をしている部分が多々あると思います・・・
(UWSCの作者さま、全然使いこなせてなくてごめんなさい)。

もくじ

ワークスペースを記録しInkscape起動用ファイルを作成
1枚のbmpから線画パスと彩色部分のパスを自動合成(potrace・i_view32使用)
影・HLレイヤーを作成→Baseをコピー
レイヤー名とLayerID(svg:g id="名前")を同じ名前にする(AutoHotkey使用)
パス差分して分割
パスの共通部分を切り出し
レイヤーの不透明度を保持した複製を前面に作成
選択中のオブジェクトの複製を前面に作成+レイヤーの不透明度保持
マウスポイント+[Shift]で*.gpl形式の色パレット作成
3点間の長さと、2辺の長さの比を求める

その他
選択中のオブジェクトを同じ用紙サイズの新規SVGにコピー
同じプロセスIDでファイルを開く(AutoHotkey使用)
画面サイズに合わせて並べて表示(1)
画面サイズに合わせて並べて表示(2)
実行後、最初に左クリックしたウィンドウを常に最前面に

その他のアプリケーション用
ワークスペースだけを記録
IrfanView32で表示している画像をSaiで新規画像として開く
Sai起動時にクリックロックをOFFにする
サブディレクトリも含めたファイルを同じ拡張子のままリサイズ(i_view32・AutoHotkey使用)
IrfanView32で表示している画像をGimp2で開く
Gimp2フルスクリーンモードでパン可能にする
指定したファイルリストを任意の文字列で挟み込む
指定したファイルの拡張子をリネーム
2つの数の最大公約数を計算
重複する行を削除
同じキーでアクティブなウィンドウによって起動するランチャを振り分ける



.\Inkscape\mk_workspace2.uws (ワークスペースを復元して起動)
現在のワークスペースを記録しInkscape起動用ファイルを作成します。

Inkscapeは、起動した直後の状態ではレイヤーパレットなどが全て閉じられています。
これを、起動時に最初からパレットを表示(選択可)、毎回決まった位置でプログラムを起動できるようにします。

左図は僕の環境でのInkscape起動直後の状態のスナップショットです。メインウィンドウのサイズや位置・ダイアログの位置も、常にこの状態で起動します。

使い方は、Inkscapeが起動している状態でダイアログの位置・大きさを好みに調整し、mk_workspace.uwsを実行 -> Inkscape起動時に表示させたいパレット・ダイアログのタイトルバーをそれぞれクリック -> [Tab]キーで終了します。
3秒ほど待つとデスクトップにworkspace1.uwsというファイルが出来上がります。

このファイルを適当な場所に移動し、ショートカットを作成、アイコンをInkscapeのアイコンに変更すれば、普通にInkscape起動用のショートカットになり、記録時のウィンドウ配置を復元します(ただしCapsLockしていると何故かレイヤーパレットが開きません)。
整列/配置ダイアログについては、起動時に整列の基準を「最初の選択部分」に切り換えます。

workspace1.uwsはデスクトップから別の場所に移動やリネームしても問題ありません。
ただしバッチファイルではないので、svgをuwsファイルにD&Dしても開く事はできません。


.\Inkscape\Potrace_Scale.uws (1枚のbmpから線画パスと彩色部分のパスを自動合成)
これは有志の方がPythonスクリプトを作ってくれたので、そちらを使われた方がずっと高速です。

このuwsは、Potraceのページで書いたバッチを応用したもので、svg変換前に縮小率を指定できます。
Potrace1.8とIrfanView32がインストールされていないと動作しません。インストールパスが異なる場合は修正してください。
これはInkscapeが起動していても起動していなくても、新規にInkscapeを起動します。



使い方は、実行すると↑の入力ボックスを開くので、bmp(またはpotraceが対応しているファイル)のフルパスと縮小率を半角スペース区切りで入力します。
ビットマップの等倍で変換する場合は縮小率は省略できます(100%としても同じ)。33.333%のようにも指定できますが、割り切れない場合は整数に四捨五入されます(ここでの縮小率はパス変換精度に影響しません)。
右クリックなどからファイルのフルパスを取得できるツールがあると便利です。フルパスに半角スペースが含まれても引用符は不要です。

OKボタンを押すと、potraceを使用して線画と彩色部分をパスに変換、入力したファイルと同じ場所に outline.svg innerfill.svgを作成(既存のファイルが存在すれば確認します)し、それぞれをレイヤーに振り分けて合成します(レイヤー順は線画が上。rootは空の状態)。
最後に彩色パスのみグループ化を解除して、保存ダイアログを開いた時点でスクリプトは終了します。

このとき、保存ダイアログは前回保存した場所に関わらず入力したファイルのフォルダが開かれます。
ここで名前をつけて保存せずにキャンセルすると、もう一度名前をつけて保存ダイアログを開いても前回保存したフォルダが開かれてしまいます。また上書き保存すると、outline.svgは上書きされます(キャンセルした後でも文字列をコピーしなければフォルダのパスはクリップボードに残っています)。

ビットマップのピクセル数*(縮小率/100)が縦横ともに4の倍数だった場合、用紙サイズの単位は"pt"のままになりますが、Inkscape上でのピクセル数はビットマップのピクセル数*(縮小率/100)と同じになります。
それ以外のときは単位をptからpxに置換します(このときメモリ上で置換を行いますが、数秒ほど時間が掛かります)。

彩色パスはとりあえず肌色(#FAF2DF)にしてあり、すでに分離された状態になっています。もう少し濃い色の方がこの後の仕分けがやり易かったかも。

パス無修正の線画を元に彩色部分も取り出すので、誤差が少ない代わりに線画そのもののクオリティは若干下がります。

.\Inkscape\potrace_auto2.ahk どうもこの手の処理はAutoHotkeyの方が劇的に速いので修正してみました。こちらはフルパスを入力しなくても、変換したいファイルをアイコンにドロップすればダイアログを開きます。



縮小/拡大率を%指定かピクセル数で入力してokすれば、あとは勝手にレイヤーを作って線画と彩色パスを振り分けます。これもInkscapeが起動していなくても変換できます(変換後は新規に起動してファイルを開きます)。


.\Inkscape\BaseLayer_Copy.uws (影・HLレイヤーを作成→Baseをコピー)
パス分割オブジェクトの仕分けが済んだ状態で使用します。
彩色パーツを分割→レイヤーに仕分けしてパス統合してある事を前提にしています(要はコピーレイヤーを6枚作ります)。
Baseレイヤーがアクティブの状態で実行すると、Baseのオブジェクトがクリップボードにコピーされ、新規レイヤーをBaseレイヤーの前面に「K1」(影1段目),「K1_sen」(影1段目色トレス),「K2」(影2段目),「K2_sen」(影2段目色トレス),「HL(」ハイライト),「HL_sen」(ハイライト色トレス)計6枚作成し、それぞれのレイヤーにペーストします。
このレイヤー名はuwsファイルの先頭ブロックで編集できます。
それぞれのレイヤー名の先頭には、コピー元のレイヤー名+半角スペースが追加されます。

.\Inkscape\BaseLayer_Copy_sub.uwsは、これらをBase(親)のサブレイヤーで行い、Baseそのものもサブレイヤーの最下層に移動し(親レイヤーは空になる)、Baseレイヤーをロックします。
サブレイヤーを作ると、親レイヤーをロック・非表示にすると子レイヤーもロック・非表示の状態になります(レイヤーパレット上のアイコン表示は不安定)

クリッピングで影などの彩色を行う場合は、こんなのは使わない方が良いです。ノードの数が大量になるのでInkscapeの動作が重くなります。


.\Inkscape\Add_Layer_with_ID.ahk (レイヤー名とLayerIDを同じ名前にする)
新規レイヤー作成時に inkscape:label(レイヤー名)と LayerID(svg:g id="名前")を 同じ名前にするマクロです。
XMLエディタでどれがどのレイヤーなのか一目で分かるようになります(が、XMLエディタでのレイヤー順はレイヤーパレットと上下が逆です)。

Add_Layer_with_ID.uwsを実行すると「レイヤーを追加」ダイアログを開くので、任意の名前を入力してください。
何も入力せずにokした場合はInkscapeが自動で付ける名前に従います(その場合、最初からlabelとidが同じなので実行する意味がありません)。

また、「レイヤーを追加」ダイアログで「サブレイヤー」や「現在のレイヤーの背面」を選択した時には正しく動作しないのでご注意ください。
作成後のレイヤー名を後でリネームしてもIDは自動では変わりません。


.\Inkscape\LayerLabel_to_ID.ahk は、既にあるレイヤーのidをレイヤー名と同じに書き換えます。XMLエディタの左ペインで svg:g id を選択した状態で開始してください。
インデントされている svg:path id などを選択した状態で実行してしまうと、レイヤーが見つかるまで探し続けます。

svg:g id が選択されていても、右ペインにキャレットが有る場合(値の編集が可能な状態)では、少なくとも最初の1回目は失敗(スルー)します。


.\Inkscape\Path_Diff_and_Break.uws (パス差分して分割)
影線から影を分割する手順-(4)〜(5)の操作を半自動化したもので、クリップボードに有るオブジェクトと、現在アクティブなレイヤーに有るオブジェクトの差分を取り、それを分割します。
コピーしたオブジェクトおよび、現在アクティブなレイヤーに有るオブジェクトは、パス統合されている事が前提になります。

なお、"-"キーはNumPad(テンキー)を使用しています。標準配列キーと区別しますので、テンキーが無い方は「VK_SUBTRACT」をテキストエディタで検索して「VK_OEM_MINUS」に置換してからご使用ください。

オブジェクトコピーと対象レイヤーをアクティブにするのは手動なので、単に差分と分割を続けて実行したいときにも使えます。


.\Inkscape\Path_Intersect.uws (パスの共通部分を切り出し)
影線から影を分割する手順-(10)を実行します。
クリップボードに有るオブジェクトと、現在アクティブなレイヤーに有るオブジェクトの共通部分を切り出します。現在アクティブなレイヤーはパス統合されている事が前提になります。
Inkscape_Diff_&_Breakを実行後、続けて使用するためコピーコマンドは含んでいません。
なお、"*"キーはNumPad(テンキー)を使用しています。標準配列キーと区別しますので、テンキーが無い方は以下の要領でこのファイルの文字列を置換してご使用ください。

KBD(VK_MULTIPLY,0,40)

SCKEY(INKSCAPEid,VK_SHIFT,VK_OEM_1)
KBD(VK_SHIFT,2,40)

Diff&Breakのあとに何かオブジェクトをコピーした場合は、対象をコピーし直す必要があります(システムのクリップボードとは別なので、文字列をコピーしただけならオブジェクトはクリップボードに残っています)。

uwsを編集して後半の無効の項目を有効にする(行頭の//を削除する)と、切り出したオブジェクトを1つ背面のレイヤー(=影レイヤー)にコピーして、そのレイヤーのパスを統合します。
有効にする場合は背面のレイヤーがロック(または非表示)状態だと失敗します。


.\Inkscape\Layer_Copy.uws (レイヤーの不透明度を保持した複製を前面に作成)
現在のレイヤー(のオブジェクト全体)を、新規レイヤー(前面)にコピーします。
オブジェクトの不透明度や、その他スタイル・レイヤーの不透明度はコピー元と同じです。
複製されるレイヤー名は"現在のレイヤー名(半角スペース)copy"となるようにしました。

.\Inkscape\Layer_Copy_sub.uwsは、これをサブレイヤーで行います(現在のレイヤーが親、コピーレイヤーが子)。


.\Inkscape\Object_Copy.uws (選択中のオブジェクトの複製を前面に作成+レイヤーの不透明度保持)
現在選択中のオブジェクトのみ新規レイヤー(前面)にコピーします。
オブジェクトのスタイル・レイヤーの不透明度はコピー元と同じです。
複製されるレイヤー名は"現在のレイヤー名(半角スペース)Objcopy"となるようにしました。


.\Inkscape\Swatch_maker.uws (*.gpl形式の色パレット作成)
InkscapeやGimpでも、画像に使われている色からパレットを作成する事も出来るのですが、色の並びがゴチャゴチャして使い勝手がよくありません。
なので取得したい色をマウスポイント+[Shift]で、クリックした順に色が並ぶパレットを作成できるようにしました。
Inkscapeやその他画像ビューアを問わず、今見えている色を取得します。
使い方は、uwsを実行したら先ずパレット名を入力します。
ここで付けた名前がgplのファイル名およびパレット一覧に表示されるパレット名になります。
拡張子(.gpl)は付けても付けなくても良いです(パレット名は拡張子を除いて登録されます)。

あとは取得したい色の上にポインタを移動して[Shift]打鍵。を繰り返し、[Tab]キーで終了します(Tabキーが押されるまでuwscプロセスは終了しません)。

パレット名.gplは、色が取得できた時点で随時カラーコードが書き込まれます。そのため[Tab]キーを押さずに[Alt+F2]でUWSCを強制停止した場合でもパレット名.gplは作成されます。

[Tab]キーが押されると
  →  

このボックスで後の処理を選べます。
Inkscapeのパレットディレクトリは"C:\Program Files\Inkscape\share\palettes"
Gimpは"%USERPROFILE%"\.gimp-2.2\palettes"
で設定してあります。
Inkscapeにパレット(スウォッチ)を反映させるには、Inkscapeを再起動後にスウォッチ右上の三角でパレット名を選びます。
Gimpの場合は、Gimpが起動中であればパレットの更新で読み込まれ、一覧の中に最初に入力したパレット名が見つかるはずです。

メモ帳で確認した場合は、ファイル本体はC:\Tempにあります。確認や編集が済んだら手動で各フォルダに移動してください。


.\Inkscape\3kakuhi.uws (3点間の長さと2辺の比を求める)
パース型枠にタイルパターンをフィットさせるとき、パターンの縦横比とパース型枠の2辺の比が合わなければタイルの形が崩れてしまいます。
たとえば、こんなふうにタイルパターンと型枠の縦横比を一致させずにPerspectiveすると、
タイルの縦横比が大きく崩れて、手前の方が間延びしてしまって旨くありません。

※ この図を一点透視図とするなら、これで合っている(カメラがパース型枠の消失点にピントを合わせている状態 = 消失点に近い物ほど縦横比が保持される)。
ただし消失点が2点以上の透視図ではこのままではおかしな事になる。

このuwsを実行するとメッセージを開くので、
こんなふうにパース型枠の始点ノード -> 2ndノード -> 3rdノードをベジェで結んでからOKすると
(ノードスナッピングを有効にしてください。メッセージは常に最前面にあります。)
2辺の長さと、その長さの比が分かります。比は、1st〜2ndノード間の長さを1としたときの3rd〜4thノード間の長さです。

スクリプトはこの時点で終了し、上で引いた3点間のベジェ線は自動的に消去されます。


計算された比を元に、タイルクローンを並べる数(行数・列数)を決めます。
この場合、約1:4なので行数2なら列は8になります。

さらに正確に縦横比を合わせるには、端数が0.1でも有ったら1繰り上げた数を行数に掛算して、このあと作成するタイルクローンを縦横比を正確に合わせた矩形にクリッピングすると良いです。
このとき、クリップボードには長さの比(この図では"*4.164850095506=")がコピーされているので、電卓を開いて行数(またはクリッピングさせる矩形の1辺)を入力 -> ペーストすれば計算できます。

タイルクローンを作成し、オリジナルを削除するか[Shift+Alt+D]でリンク解除、グループ化されている場合はいったんグループ解除します。
多段グループ化されていると1回の解除では全て解除されないので、ステータスバーなどを参照して完全にグループ化が解除されている状態にします。
そうしたうえで、再度まとめてグループ化。
これを行わないと、多段グループ化されたオブジェクトはパース変形できません。
Effects -> Modify Path -> Perspective
先ほどと違ってタイルの縦横比が崩れていないのが分かります(カメラが手前側にピントを合わせている状態 = カメラに近い物ほど縦横比が保持される)。


こんな感じの極端なパースでも、やり方は同じです。始点ノードから第2ノードに向かって3点を打ってください(ノードの順番は時計回りとは限りません)。


XMLエディタの操作を行うマクロ全般に言える事なんですが、最後に開いた(または編集した)場所によってショトカットキーを押す回数が変わるため、ときどき数値を正しく取得できずに失敗します。

その他


.\Inkscape\Object_to_newSVG.uws (選択中のオブジェクトを新規SVGにコピー)
現在選択中のオブジェクトだけを同じ用紙サイズの新規SVGにコピーします。
レイヤー名はコピーした時点のアクティブレイヤーと同じになりますが、こちらはレイヤーの不透明度はコピーしません。複数レイヤーのオブジェクトを選択していた場合は1つのレイヤーにコピーされます。
最後にコピー元と同じフォルダに"同じファイル名_レイヤー名.svg"として保存しますが、上書き確認のダイアログが出たら、そこで終了します。

エクスポートダイアログからコピー元のパスを取得するので(...orz)一瞬ダイアログが出現しますがすぐ消えます。またコピー元が未保存のファイル(タイトルバーが「新規ドキュメントn」の状態)では動作しません。


.\Inkscape\Ink_open2.ahk (プロセス上の二重起動を抑止)
前述した理由で「ファイルを開く」から開いたファイルでなければ同じ場所にペーストその他が無効になってしまうので、ファイルを開く操作を簡略化してみました。
Inkscapeが起動していれば同じプロセスでファイルを開き、起動していなければ起動して開きます。

AutoHotkeyはバッチファイルのように扱えるので、ahkアイコンにファイルをドロップや[送る]メニューに追加しても開けます(拡張子が.0の自動バックアップもオープン可)。
ただしAutoHotkeyインストール時に"Enable drag & drop onto scripts" を有効にしなければ動作しません(これはデフォルトで無効になっています)。

Inkscapeが2つ以上起動している時は、表示順位(Zオーダー)が上のInkscapeとプロセスIDが一致します。
※AutoHotkeyのインストールが不要な実行ファイル版(http://otzt.nobody.jp/etc/ink_open2.7z 204,051 Bytes MD5:534E52A895751843D0437A65FFA72FFF)


.\Inkscape\inport_paste_place.ahk は、現在開かれている書類のアクティブレイヤーの前面に新規レイヤーを作成(レイヤー名 = 拡張子を除いたファイル名)し、inport_paste_place.ahkにドロップしたファイルのカレントレイヤーのオブジェクトをインポートして閉じます。
主にpotraceで書き出したパーツごとの線画svgや影トレスsvgをインポートするのに使用しています。
複数のファイルをドロップした場合は、その数だけレイヤーを作成し、そこにインポートします。

コピーされるのは、開いたファイルのアクティブレイヤーのオブジェクトだけです。アクティブレイヤーがロックされている場合、何もコピーせずに閉じてしまうのでご注意ください。
potraceで書き出したsvgならrootにグループ化されているオブジェクトがそのままコピーされます。


.\Inkscape\View_Tile_Vertical.uws (モニタサイズに合わせて並べて表示)
既に開いている2つのファイルを画面サイズに合わせて左右に並べて表示します。
Inkscapeのキャンバス以外のウィンドウは無視します。

3つ以上のファイルを開いている時は、実行時アクティブだったファイルが左に、次のファイル([Ctrl+Tab])で表示されるウィンドウ)が右になり、3枚目以降は無視します。またウィンドウの切り替えは[Ctrl+Tab]キーを送っているだけなので、別プロセスで起動したファイルも無視されます(2枚目以降が同一プロセスで開いたファイルでなければ、1枚しか開いてないと見なして動作しません)。
なお、タスクバーを無視して高さを最大化するため、タスクバーの設定によってはタイトルバーが隠れて掴めなくなったりステータスバーが見えなくなるかもしれません。

こちらは実行する度に、このuwsと同じフォルダにRecover_Win_Size.uwsを作成します(存在すれば上書き)。
これを実行すると、View_Tile_Vertical.uws実行前のウィンドウサイズ・位置に復元します。
極まれにですが、何らかの不具合でウィンドウ座標がx:-32000とかとんでもない所に飛んでいってしまう事が有るのでこういう仕様にしました(^^;
Recover_Win_Sizeは初回実行時に自動作成、その後実行する度に白紙に戻ったあと上書きされ、他の(タイトルバーの文字列が異なる)ウィンドウでは動作しません。

レイヤーパレットは閉じるまでTopmost(常に最前面)の状態を維持します。


Clickwin_Tile_Vertical.uws (モニタサイズに合わせて並べて表示)
↑はInkscapeのキャンバスウィンドウを自動判断しますが、こちらは手動でクリックしたウィンドウのみ並べて表示します。つまりInkscape以外のウィンドウでも使えます。

デスクトップを最大6分割してウィンドウを配置し、各ウィンドウサイズはクリックした回数によって変わります。
合計45通りの並べ方ができます。詳しくはこちらで

ダブルクリック判定とか難しい関数は書けないので(_orz)、ものすごい勢いでクリックすると誤動作するかもしれません。


Clickwin_topmost.uws (実行後、最初に左クリックしたウィンドウを常に最前面に)
これは見たとおりシンプルな内容で、Inkscapeの起動に関わらず動作します。
Clickwin_topmost.uws実行後、最初の左クリックを待ち続け(手動でuwscを停止するまで待ち続けます)、クリックされたウィンドウを最前面に固定して終了します。クリック位置はタイトルバー以外でもokです。
ウィンドウをロールアップ(タイトルバーだけの状態にする)するツールと併用するとこういう配置も可能。
この図はグリッド配置・整列/配置・CreateTileClone・XMLエディタが常にメインウィンドウよりも前面に表示され、タイトルバーだけの状態でコントロールバー下に並んでいます。

画像はWindow Blindsを使用していますが、ウィンドウをロールアップするツールはディスプレイドライバに含まれている場合もあります。nVidiaのドライバだとnView Desktop Managerで[タイトルバーに最小化]を有効にする。

AutoHotkeyでホットキー+マウスクリックとかで最前面化した方が楽ですわ。
#IfWinActive
<#LButton:: WinSet, AlwaysOnTop, TOGGLE, A
;左ミ田+クリックで最前面On/Offトグル

その他のアプリケーション用


mk_workspace1.uws (ワークスペースだけを記録)
上のmk_workspace2.uwsと違うのはプログラム起動用ではない点だけです。
左クリックしたウィンドウのワークスペース(ウィンドウの位置・大きさ)をuwsファイルとしてデスクトップに書き出します(ファイル名 workspace1.uws)。
タイトルバーにフルパスやファイル名が表示されている場合、" - "より前の部分は無視します。
例) "新規ドキュメント 1 - Inkscape" → " - Inkscape"

デスクトップに書き出されたworkspace1.uwsを実行すると、いつでもそのウィンドウが記録時の位置に復元します(作成されたuwsは別の場所に移動してもokです)。
記録時にクリックしたウィンドウが存在しなければ無視します。

workspace1.uwsが既にデスクトップに存在した場合、メッセージで「はい」を押すと内容を破棄して上書きします。用途別にファイル名をリネームされる事をおすすめします。
一応重複チェックを行いますが、window1 -> window2 -> window1といった形で別の行を跨いで同じウィンドウが登録されても重複した行は削除されないのでご注意ください。
※長年使用したマウスの接点不良やクリックの仕方によって、重複して書き込まれてしまう場合があります。


.\Sai\Irfan32_to_Sai.uws (IrfanView32で表示している画像をSaiで開く)
IrfanView32で表示している画像を、Saiで新規画像として開きます。
IrfanView32で表示可能な静止画ファイル(jpg,gif,png,etc...)であれば全て開けるはずですが、実際にファイルを読み込むのではなく"見かけ上のコピー"(ビットマップコピー)です。
つまり、アニメGif再生中ならコピーした時点のフレームが、複数ページのTifなら1ページ目が、レイヤーを持つpsdは統合された形でペーストされます(psdなどのSaiが対応しているファイル形式なら、このuwsでなくIrfanView32の設定で「外部アプリケーションで開く」にSaiを設定すれば[Shift+E]でSaiにファイルを送れます)。

IrfanView32のビューウィンドウかサムネイルウィンドウのどちらか、およびSaiが起動していなければ動作しません。

IrfanView32で何か画像を開いている状態(複数開いている場合は1番上の物)で実行すると、その画像を新規画像として開き(クリップボード経由でペースト)、画像を開いていないときはサムネイルウィンドウをアクティブにしてメッセージのあと最初のクリックを待ち続けます。
Saiに送りたいサムネイルを1クリックするとその画像を開き、Saiに送ったあと閉じます(1度開かなければならないのは画像のピクセル数を取得するため)。サムネイル以外をクリックしたり画像ファイル以外をクリックしてしまうと固まるかもしれません。
ペーストされた画像は背面の透明レイヤーと結合されます。

あくまでクリップボード経由で画像をペーストするので、全ての画像はbmp扱いになり透過属性を持つファイル形式でも透過になりません。つまり32bit-PNGやtgaなどの透過部分はIrfanViewの背景色になり、背景がないpsdでは透過部分は白としてSaiにペーストされます。


.\Sai\Clicklock_off.uws (Sai起動時にクリックロックをoffにする)
トラックボールを使用していて、クリックロックをONで使っていると、Saiで2筆目が描けません。
Trackball Explorerを長年使っていて、個人的にクリックロックがないと生きていけない体になっているので書いていました。Saiを起動するたびに手動でクリックロックをOFFにするのが面倒な方はどうぞ。

ただし、マウス付属のドライバ(設定ユーティリティ)がインストールされていると動作しません。
設定ユーティリティとは、MS製マウスならIntelliPointなどです。

UWSC.exeと同じ場所にマウスコントロールパネルのショートカットを置いて、Saiのインストールパスを設定してお使いください。
Sai起動時にクリックロックをoffにして、Saiを終了すればクリックロックをonに戻します。
Saiの終了を監視(監視タイミング2秒)するので、Saiが終了するまでUWSCプロセスは終了しません。


.\batch_resize_all.ahk (サブディレクトリも含めたファイルを同じ拡張子のままリサイズ)
Irfanviewを使用して、ドロップされたディレクトリ内の全ての画像を指定したサイズにリサイズします。
サブディレクトリのファイルも変換対象になり、全てのファイルは同じ拡張子のまま上書きされます。
IrfanviewはGUIを表示してバッチ処理した方がもっと細かく設定できて、サブディレクトリも含めたバッチ変換も出来ますが、それだとサブディレクトリのファイルは元のフォルダに保存できない・拡張子も1つの拡張子に限定されるので書いてみました。変換中は何もGUIを表示せずに実行します。

ダイアログで設定可能な項目はpngとjpgだけですが、それ以外のファイル形式(を追加編集した場合)でもIrfanviewデフォルトの設定でリサイズはできます。
jpgに関してはサブサンプリングをデフォルトで無効にしてあります(イラストなどの場合、その方が綺麗に圧縮できます)。

Irfanviewや変換対象の拡張子を設定したら、フォルダごとこのahkアイコンにドロップするとサイズ入力を求めるので、%指定かピクセル数を入力してください。



初期値は 50p になっています(width=50%、height=50%)。パーセント指定でなくピクセル数で指定もできます。その場合、整数を「,」区切りで入力し、単位は必要ありません。
いずれの場合も縦横比は保持され、ピクセル数指定の場合アスペクト保持で指定サイズに収まる大きさにリサイズされます。
変換が終わるとメッセージが表示され、変換結果をサムネイルで閲覧するか選べます。フォルダ名やパスにダメ文字が含まれると失敗するかも。


Irfan_to_Gimp.uws (IrfanView32で表示している画像をGimp2で開く)
以前はスクリプトで2重起動を抑止してたのですが、最近になってcuteExecというツールの存在を知ったので不要になりました。
新規テキストにたとえば
@ECHO OFF
cd /d C:\Program Files\GIMP-2.0\bin
Rem ↓の行は改行せず1行で書く
C:\cuteExec\cuteExec.exe "C:\Program Files\GIMP-2.0\bin\gimp-2.2.exe" %1 --no-fonts --no-splash --ignore-wintab // "C:\Program Files\GIMP-2.0\bin\gimp-win-remote.exe" gimp-2.2.exe %1
と書いて拡張子をbatで保存
IrfanView32の基本設定→その他2 で外部エディタにbatのフルパスを記述でOK.
Gimpが起動していなければ起動し、起動していれば2重起動せずにファイルを渡します。

IrfanView32で開いている(もしくはサムネイルで選択中の)画像を[Shift+E]でGimpに送れます。サムネイルで選択した場合は複数可。

IrfanView32 ver.4.10から外部アプリケーションが3つ登録できるようになりました!


.\ Gimp\CanvasSize1.uws (フルスクリーンモードでパン可能にする)
Gimpで開いた画像のピクセル数にモニタ画素数を加え、現在のキャンバスサイズをモニタ画素数の分だけ広げます(中央寄せ)。
広がった範囲(=余白)は透明部分になります。

例えば1024x768dotのモニタで800x600ピクセルの画像を開いていれば、実行後のキャンバスサイズは元画像が中央寄せで1824x1368ピクセルになります(モニタサイズは自動判断します)。
Gimpは画像の表示サイズがモニタより小さいとき、スクロールやパンできません(端っこが描きづらい)。なのでキャンバスサイズを上下左右に広げることで、フルスクリーン時でもSaiやPhotoshopのように画像端をモニタの中央まで持ってこれるようにします(無理やり杉)。


上図右のように用紙の4隅はモニタの中央までパンできます(図はズームした状態を再現しただけで、元画像自体は拡大しません)。
あまり小さな画像で使うと余白がありすぎるので、少なくともモニタ画素数より大きな画像で使った方が良いかも。

開いているファイルがjpg or bmpならば、そのままキャンバスサイズを変更し、それ以外かつタイトルバーに"1 枚のレイヤー"という文字列があれば、コピーレイヤーを作成して元レイヤー(背景)を削除、白く塗潰したレイヤーを最背面に作成してからキャンバスサイズ変更します。

元のサイズに戻すには、白く塗潰されているbackgroundレイヤーを選択した状態で[イメージ]→[キャンバスをレイヤーに合わせる]で戻ります(backgroundレイヤーは透明ピクセルをロックしてあります)。

タイトルバーにレイヤー数を表示する設定(%L)にしてなければ動作しません。Gimpのタイトルバーにレイヤー枚数が表示されていない時は、Gimp環境設定 [タイトル&ステータスバー]→[画像タイトルとフォーマットの形式]で"%L"を加えてください。
例) %D*%f-%p.%i (%t, %L) %wx%h

最後にフルスクリーン表示にして画像をピクセル等倍、ツールボックス・パレットウィンドウを最前面に固定します。


ところでGimpには手のひらツールがないので不便です。
AutoHotkeyというツールを使うと、わずか2行
#IfWinActive ahk_class gdkWindowToplevel
space::MButton
と書いたスクリプトを走らせておくだけでSpaceキーが手のひらツールになります(Spaceキーにマウス中ボタンを割り当てる)。その2行に続けて
<#LAlt::Suspend, Toggle
Return
と書くと、この場合[左ミ田+左Alt]キーでキーリマップのOff,Onがトグります。
ただし残念ながらタブレットペンでこれが出来るのは筆圧を無効にして起動(gimp-2.2.exe --ignore-wintab)しなければなりません。
同じ事をUWSCでやると、やはりタブレットとの相性が悪いのかキャンバスがどこか遠くにすっ飛んでいきます・・・。

--ignore-wintabで起動すればタブレットペンでもパン可能になりますが、Photoshopなどの手のひらツールと違って、ペン先を浮かした状態でパンする必要があります。

ClassName=gdkWindowToplevelで有効になるのでInkscapeでもSpaceキーでパン出来るようになりますが、InkscapeはSpaceキーが選択ツールとトグルスイッチになっているのでWindowTitleで判断するようにした方が良いかも(Spaceキーをリマップした場合、Inkscapeではペンを浮かせなくてもパンします)。


.\etc\word_filelist_word.uws (指定したファイルリストを任意の文字列で挟み込む)
指定したディレクトリの、指定した条件にマッチしたファイル名を、任意の文字列で挟み込んでテキストに書き出します。

ディレクトリフルパス // マッチさせる条件(ファイル名) // 文字列(1) // 文字列(2)
のような形で記入して使います。
たとえば入力ボックスに
D:\Webpage\image // *.png;*.jpg // <tr>\\n<td><img src="./img/ // "></td>\\n<td></td>\\n</tr>
と書いて実行すると、そのディレクトリ内の全てのpngとjpgのファイル名だけをタグで挟み込みます(\\nは改行を表します)。
あるいは
D:\Webpage\image // *.png // uploadFile -u <アカウント> -P <パスワード> -f // -d ./img -tF
のようにしてココログアップロード用バッチファイルの作成にも使えます
(ココログ用 ディレクトリツリー丸投げ版はコレ image_1 image_2)。


.\etc\ren_ftype.uws (拡張子をリネーム)
指定したディレクトリの、指定した条件にマッチしたファイル名の、拡張子部分だけを別の拡張子に書き換えます。
ファイル形式を変換(コンバート)するのでなく、あくまでリネームするだけです。


.\etc\kouyaku_suu.uws (最大公約数を計算)
入力した2つの数の、最大公約数を計算します。
最大公約数は本来、共通で割り切れる最大の整数ですが、少数点の数でも計算できます。
正方形パターンを任意の矩形にフィットしたいときなどにどうぞ。


.\etc\jyuuhuku_line.uws (重複する行を削除)
ファイルのフルパスを入力し、OKボタンを押すと、そのファイルで2行以上続けて同じ行があった場合、重複する行を削除して上書きします。

例)
_
なんで2回言うのかな?
なんで2回言うのかな?

<br>
<br>
_
 →  _
なんで2回言うのかな?

<br>
_
※意図して同じ行を挿入した場合でも削除対象になるのでバックアップを取っておくことをお勧めします。 行は論理行で検索します。
飛び行で同じ文字列が書かれていた場合は削除されません。


.\etc\jyuuhuku_line.ahk ↑のahk版。こっちのが確実で速いですがクリップボードを使用するので処理中はコピー操作が使えなくなります。
こちらはアイコンに対象のファイルをドロップすれば実行されます。入力ファイルと同じ場所に自動バックアップ(同名.bak)を作成。
AutoHotkeyのダウンロード版マニュアル(./manual/commands/index2.html)のようなファイルで実行すると読みやすくなります。


.\etc\doublekey.ahk (同じ呼び出しキーでアクティブなウィンドウによって起動するランチャを振り分ける)
僕は普段3種類のランチャを使用していますが、中でもorchisはCtrlキー2回押しで呼び出せたりして便利です(残り2つはSpecial LaunchとObjectBar。ObjectBarはランチャというより殆ど飾り)。

orchisのデフォルトでは、キー2回押しでの呼び出し方法は[Ctrl*2],[Shift*2],[Alt*2]の3通りだけですが、Ctrlキー2回押しなどはCPU切換え機を繋いでいると使えない場合があります。
そんなとき、AutoHotkeyを使うと例えばCapsLockキーや無変換キー2回押しでも呼び出しキーに使えるようになります(コンビネーションキー登録時と違い、キーを単体で押した時の機能は失われません)。
さらに、orchisのコマンドラインオプションと併用する事で、同じ呼び出しキーを押した場合でもアクティブなウィンドウ(アプリケーション)によって起動するランチャパッドを切り替える事ができます。

これのおかげで今までジャンル別にランチャを分けていた物が、そのアプリケーションで使う物だけになり、かなりスッキリしました。
たとえばエクスプローラやデスクトップがアクティブな時には、"%USERPROFILE%\SendTo"に入れたショートカットなどを登録したランチャパッドを表示(ファイルドロップで登録したアプリケーションで実行)、Inkscapeがアクティブなときは↑にあるマクロなどInkscapeでしか使わない物を登録(シングルクリックやランチャのホットキーで項目を実行)、Gimpがアクティブな時は(...略
のように、『そのとき必要な物だけ表示』できます。
この手のツールは一度体が覚えた動作を変えると逆に使い辛かったりしますが。もっと早くにこのツールに出会いたかった。

出展
http://www.donationcoder.com/Forums/bb/index.php?topic=5926.msg41894
と、2chAutoHotkey スレッド part4 http://pc11.2ch.net/test/read.cgi/software/1184556627/629

大まかな実行内容は、それぞれのUWSファイルの先頭と要所ゝにコメントとして書いてあります。愛用のテキストエディタなどで開いて見てみてください。
くどい様ですが初心者が書いたショートカットの羅列(しかもキーを受け付けとってくれない部分は相対座標で記録した座標の羅列...)なので、スクリプトに精通してる方は鼻で笑ってやってください。質問されても答えられる知識がありません_orz

 MENU△ PAGE TOP▲

Jan 15 2007