mieki256's diary



2019/12/11(水) [n年前の日記]

#2 [cg_tools] EDGE2の操作を微妙に自動化

EDGE2 というドットエディタで、画像の右半分を左側に反転コピーする処理を自動化したい。環境は Windows10 x64 1903 + EDGE2 1.15 + AutoIt 3.3.14.5。

例えば、96x96ドットの画像の右半分、48x96ドットを、左に反転コピーしたい。

まあ、左右対称でドットを打ちたいなら GrafX2、Aseprite、Krita、GIMP 2.10 等々を使ったほうが、という場面ではあるのだろうけど、一応メモ。

手動で操作する場合。 :

手動で操作する場合は、以下のような操作になる。

  1. グリッドサイズを 48x48ドットに設定。
  2. 長方形領域の選択ツールを選んで、「編集単位1使用」にチェックを入れる。
  3. 右半分を選択。
  4. Ctrl + C でコピー。
  5. Ctrl + V で貼り付け。
  6. 選択範囲内をドラッグして左側に移動。
  7. 選択範囲内で右クリックしてメニューを表示。
  8. 左右反転を選択。
  9. Ctrl + D で選択範囲解除。
  10. 長方形領域の選択ツール、の、「編集単位1使用」のチェックを外す。(コレをいつも忘れて後で酷い目に合う)

何度もやってると、かなり面倒臭い。

自動化できそうかどうか。 :

右半分、あるいは左半分の選択範囲を作るのは、数値を指定して選択範囲を作る機能があるから ―― 選択範囲 → 座標指定による範囲の選択、を呼び出せば済みそうだなと。自動化スクリプト等を呼び出す前に、画像サイズに応じて手動で数値を入力しておく必要があるけれど、EDGE2は入力値を覚えていてくれるから、その後はダイアログが開いたタイミングで Enterキーを押すだけで済むだろうと。

コピーは Ctrl + C で済むし、貼り付けも Ctrl + V で済む。左右反転は、イメージ → 左右反転、を呼べば済む。

しかし、貼り付けたソレを任意の座標に移動するところで悩んだり。そこはマウス操作が必要になるのでは…。手詰まりかな…。

いや、範囲の移動、という機能が使えるだろうか。選択範囲 → 範囲の移動 → 範囲の大きさで移動 → 範囲の幅分左へ移動。これでどうにかならんか…。

AutoIt3を使って微妙に自動化。 :

AutoIt3 v.3.3.14.5 を使って、微妙に自動化できた、ような気がする。たぶん。

edge2_autoit3_ss01.gif

_edge2_flipcopy_r2l.au3
HotKeySet("{ESC}", "Terminate")

Const $wdwtitle = "EDGE2"
Const $kwait = 100

Dim $keylist[13]
$keylist[0] = "!s"      ; Selection (Alt + S)
$keylist[1] = "l"       ; Create selection by coordinates
$keylist[2] = "{ENTER}" ; Enter
$keylist[3] = "^c"      ; Copy (Ctrl + C)
$keylist[4] = "^v"      ; Paste (Ctrl + V)
$keylist[5] = "!s"      ; Selection (Alt + S)
$keylist[6] = "p"       ; Move selection
$keylist[7] = "s"       ; Move by size
$keylist[8] = "l"       ; Move left by width
$keylist[9] = "{ALT}"   ; Alt key
$keylist[10] = "i"      ; Image
$keylist[11] = "h"      ; H flip
$keylist[12] = "^d"     ; Cancel selection (Ctrl + D)

Dim $wdw, $state

If WinExists($wdwtitle) == 0 Then
    MsgBox(0, "State", $wdwtitle & " Not found")
    Exit 0
EndIf

$wdw = WinActivate($wdwtitle)

If $wdw == 0 Then
    MsgBox(0, "State", $wdwtitle & " not activate")
    Exit 0
EndIf

$state = WinGetState($wdw)
If Not BitAND($state, 4) Then
    MsgBox(0, "State", $wdwtitle & " is control disable.")
EndIf

; Send keys
For $i = 0 to 12 Step 1
    Send($keylist[$i])
    Sleep($kwait)
Next

Exit 0

Func Terminate()
    Exit 0
EndFunc

実行する前に、選択範囲 → 座標指定による範囲の選択、を選んで、右半分を選択できるよう、数値を入れておかないといけない点が、ちょっとアレ。まあ、一度入力してしまえば、次回からは入力しなくていいけれど。

更に、このファイルをランチャーから呼び出せるようにした。今回は、FloatingButton というランチャーを使わせてもらった。

_「FloatingButton」任意のショートカットキーに対応するボタンをデスクトップに配置 - 窓の杜
_FloatingButton - k本的に無料ソフト・フリーソフト
_trifoliumStudio | FloatingButton

ちなみに、このランチャーは、タブレットPC等、キーボードがついてないPC上で、任意のショートカットキーを押せるようにしたい場合に便利。

とりあえず、これで、デスクトップ画面上のボタン(?)を1回クリックするだけで、画像の右半分を左側に反転コピーすることができるようになった。

余談。昔はこの手のソレをする際に、 _Asroc=Launcher 2nd というランチャーを常用していたのだけど、今回試してみたところ、Windows10上では、タイトルバーの右端の最小化ボタンのあたりを隠してしまうようで…。スペースを取らずに各アプリに機能追加っぽいことができるからイイ感じのランチャーだったのだけどなあ…。

反転コピーという機能も見つけたけれど。 :

EDGE2 の機能を確認していた際に、イメージ → 反転コピー → 左から右を作成、という項目が目に入って喜んだけど。これは、左半分に相当するサイズの画像から右半分に反転コピーした画像を生成する機能なのだな…。例えば、16x32ドットの画像があれば、32x32ドットの画像が出来上がりますよ、みたいな感じらしい。

今回は、例えば 32x32ドットの画像のうち、左半分の 16x32ドット分を、右側に左右反転して貼り付ける、てな感じの処理がしたいわけで…。やりたいことが、ちょっと違う…。

表示だけならできる。 :

一応、念のために書いとくけど。EDGE2で、画像の右半分、あるいは左半分を反転して表示するだけなら、キャプチャグループフレーム機能とアニメーションプレイヤーを使えばできる。編集はできない。表示だけならできる。

やり方は、EDGE2取扱説明書の、「キャプチャグループアニメーション機能を使うには」の項を眺めれば分かる。と思う。たぶん。

以上です。

過去ログ表示

Prev - 2019/12 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project