画像ビューア ImageTest1

# 1. はじめに

[自炊(本のスキャン)向けスキャナ設定](https://qiita.com/mayo00/items/7a2e85b3afd67c9439d0)の記事にちょこっと記述した自作画像ビューアです。Windows用です。
このビューアには、スキャン支援機能をいくつか盛り込んでいます。
一度表示した画像をすばやく再度表示するために、あえて読み込んだ画像データを開放していないため、非常にメモリを使用します。解放するオプションもあります。

![前後表示_画像使用 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/cbe2749b-cc93-6474-2f6f-402a49bfc7b6.png)
ImageTest1 前後表示モードの表示例

# 2. バイナリ

画像ビューア

[ImageTest1_1.14_20200912.zip](https://1drv.ms/u/s!Ag9NTi4_AogqlmXQDDM4-5VT3SIO?e=FzTvkk)　最新版

追加ツール　※スキャン支援用です。画像表示のみの場合には不要です。
[ScanTool_1.13_20200522.zip](https://1drv.ms/u/s!Ag9NTi4_AogqllVOubgtcSZp1Ah8?e=cxs5KK)　最新版

どちらもフリーウェアとします。無保証です。

# 3. ソース

[ImageTest1_src_1.14_20200912.zip](https://1drv.ms/u/s!Ag9NTi4_AogqlmYPjo7z5BtGVHlh?e=wHLkLo)　最新版
[GitHubリポジトリ ImageTest1 1.12～](https://github.com/mayo55/ImageTest1)
[GitHubリポジトリ ScanTool 1.12～](https://github.com/mayo55/ScanTool)
[旧版バイナリ、ソース、追加ツール](https://1drv.ms/u/s!Ag9NTi4_AogqliKP03-eo8p08XIN?e=0SlEL0)

C#で記述しています。Visual Studio 2019でビルド可能です。

# 4. 動作環境

.NET Framework 4.7.2以上。
Windows 10 April 2018 Update(1803)以上であればインストールされています。32ビットWindows、64ビットWindowsどちらも対応(64ビット優先)していますが、動作確認は64ビットWindowsのみで行っています。
ソースからリビルドすればおそらく.NET Framework 4.5以上まで落とすことができます。ZipArchiveクラスを使用しているため、4.5は必要です。

# 5. 事前準備

画像ビューアのみを使用する場合には、事前にインストールするソフトはありません。

追加ツールを使用する場合には、下記1点が必要です。

- AutoHotKeyのインストールと、ahkファイルの関連付け

# 6. インストール方法

ファイル配置例：
C:\tools\ImageTest1\ImageTest1.exe
C:\tools\ImageTest1\ImageTest1.exe.config

以下オプション(追加ツール)：
C:\tools\ImageTest1\RenScan.bat
C:\tools\ImageTest1\RenScan.ps1
C:\tools\ImageTest1\ScanClick.ahk

ImageTest1.exeとImageTest1.exe.configは任意のフォルダに配置可能です。同じフォルダに置いて下さい。
追加ツール(RenScan.bat、RenScan.ps1、ScanClick.ahk)の配置場所を変更する場合には、設定画面で変更して下さい。配置しないで実行時のエラーをなくしたい場合には、設定画面で該当箇所を空にして下さい。
exe実行時に警告が表示される場合は、プロパティからブロックの解除を行って下さい。

# 7. 動作説明

# 7.1. 1面モード

1画像を表示します。

![1 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/8d4040fb-7109-4bd2-acf3-e46ffa14546b.png)

# 7.1.1. フルスクリーン表示

アスペクト比を維持したまま画面サイズに合わせて表示します。

# 7.1.2. 原寸表示

ウィンドウ枠やメニュー等がないウィンドウで、画像を原寸で表示します。移動と拡大縮小が可能です。

# 7.2. 見開きモード

縦長画像を見開き、横長画像を1画面で表示します。縦長画像は表裏2ページ続くものとして、最初の1ページや横長画像の直後は左側に片面表示し、最後の1ページが余る場合や横長画像の直前は右側に片面表示します。
カレントページは左側となります。最後の1ページを右側に表示する場合はそのページがカレントとなります。
右側画像は左側画像のサイズに合わせて内接して表示するため、サイズが極端に異なると左右で縮尺が異なります。
右綴じのみ対応しています。

![2,1 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/c8c2c0c8-03cd-d39a-796e-6c36d7399552.png)

# 7.3. 3面モード

1画面の中に3ページを横に並べて表示します。主に監視モード(後述)と合わせて使用して、BTScan等のスキャンアプリケーションの画像保存先フォルダを監視し、画像が追加された時に最新の3画像を表示します。これにより、最新画像が奇数ページの場合には右側2ページが見開き、偶数ページの場合には左側2ページが見開きとなり、スキャン中に見開き画像のチェックが可能となります。
前の画像、後の画像で2ページずつ移動し、移動中に見開きの位置がずれないようにしています。
カレントページは一番左側となります。
中央画像と右側画像は左側画像のサイズに合わせて内接して表示するため、サイズが極端に異なると左右中央で縮尺が異なります。
右綴じのみ対応しています。

![3,2,1 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/2c1b2e6c-c380-644f-fc40-a60fd20f5e87.png)

# 7.4. 前後表示モード

画像を画面幅3/4で表示し、1つ前の画像を画面右上に、1つ次の画像を画面右下に小さく表示します。
指定ディレクトリへコピー1～9(コピー後にコンフィグで指定した方向への移動あり)、指定ディレクトリへコピーなしで次・前に移動で、移動を繰り返す想定です。これにより、画像を複数のフォルダに振り分けてコピーしていくことができます。(移動でなくコピーですが)
画面の最下行に振り分けメッセージを表示します。
ファイル名昇順、ファイル名降順、更新日時昇順、更新日時昇順で並び順が変わります。
カレントページは左側の大画像となります。

![前後表示 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/e752621b-6dbd-5d29-5dc2-7831abee39e3.png)

# 7.5. 見開き＋前後表示モード

見開きかつ前後表示のモードです。見開きモード同様、横長の画像は1面表示となります。
カレントページは一番左の画像となります。

![見開き＋前後表示 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/9eebd96c-efdc-7249-0b24-005dd14a9085.png)

# 7.6. 監視モード

現在のディレクトリを監視し、ファイルが追加されたらそのファイルを表示するためのモードです。
厳密な動作としては、画像・フォルダの更新日時が変化した(ファイルが追加された場合を含む)時に、現在のソート順で画像を表示します。ソート順はデフォルトではファイル名昇順のため、スキャンアプリケーションでシーケンス番号を一定の桁数(5桁、6桁等)で付加すると、作成順に表示されます。あまり桁数を小さくすると、桁が増加する時に表示順が逆転します。
1面モード、見開きモード、3面モード、前後表示モード、見開き＋前後表示モードと併用するモードですが、主に3面モードでの利用を想定しています。

# 7.7. 連動モード

スキャン失敗画像とスキャンし直し画像を並べて同時に確認するためのモードです。目視確認後、RenScanを手動で実行して差し替える流れとなります。

サブウィンドウを開き、ImageTest1.exe.configのInterlockFolderで指定したフォルダ（デフォルトはC:\scan）を表示します。1モニタの場合はウィンドウを横半分にして分割表示し、2モニタ以上ある場合には、他のモニタに表示します。

![連動1画面 (240x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/802b3e05-227e-2511-8653-a38111bbc09e.png)
1画面の場合

![連動2画面 (480x135).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/2e0e3f4c-a75c-5702-28a3-6f112cd97279.png)
2画面の場合

1面モード、見開きモード、3面モード、前後表示モード、見開き＋前後表示モードでそれぞれ連動モードを始めると、サブウィンドウも同じモードとなります。

キー操作が下記のように変化します。

1つ前・後の画像、1つ前・後の画像(左右入れ替え可)、10個前の画像、10個後の画像：
両方のウィンドウに作用します。片方が移動できない場合は、両方とも移動しません。

更新、1面モードに切り替え、見開き/1面モード切り替え、3面/1面モード切り替え、前後表示/1面モード切り替え、見開き＋前後表示/1面モード切り替え、ページ番号表示/非表示：
両方のウインドウに作用します。

ページ番号増加・減少、ファイルを開く、フォルダを開く：
現在フォーカスがあるウィンドウに作用します。

指定ディレクトリへコピー1～9、指定ディレクトリへコピーなしで次・前に移動、フルパスファイル名コピー、ファイルコピー、エクスプローラ起動、コマンド1～5起動、複数ファイル移動、ページ番号に合わせてリネーム、監視モードON/OFF：
メインウィンドウに対して動作します。

先頭画像、最終画像、指定モニタに移動、ファイル名昇順、ファイル名降順、更新日時昇順、更新日時昇順：
使用できません。無視されます。

設定：
動作が変化しません。

F6：
メインウィンドウとサブウィンドウのフォーカスを切り替えます。各ウィンドウのクリックでも切り替わります。

フルキー2、Esc：
連動モードを終了します。

注意点：
サブウィンドウに対して監視モードは動作しません。

# 7.8. ファイルを開く、フォルダを開く

それぞれファイルオープンダイアログとフォルダ選択ダイアログを開きます。それぞれファイルとフォルダを選択すると、そのファイル・フォルダに移動します。監視モードだった場合には監視モードを停止します。読み込み済み画像データを全て破棄します。それぞれのダイアログは現在のファイル・フォルダを選択しています。ファイルオープンダイアログを開いてそのままEnterを押下すると、同じ画像に戻りつつ、読み込み済みデータを全て破棄してメモリ使用量を下げることができます。

# 7.9. zipファイル表示

zipファイル内の画像を表示します。
画像ファイル以外が入っている場合の動作は未検証です。
エントリ取得順に表示します。未テストですがおそらく後から追加したファイルは後ろに表示されます。

# 7.10. 複数ファイル移動

フォルダ指定ダイアログを開き、表示しているフォルダの画像ファイルを全て指定フォルダへ移動します。

![複数ファイル移動ダイアログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/92d029ad-8cef-34c7-2c3e-d22aa3b8f605.png)

監視モードでの利用を想定しています。
ファイル移動後に、複数ファイル移動後起動コマンドを実行します。デフォルトでは「ImageTest1 -p2 -b -spn ＜移動先フォルダ＞」で、ImageTest1を見開きモード・ボーダー表示あり・ページ番号表示ありでもう1つ起動します。元のImageTest1は空ディレクトリ表示となります。監視モードだった場合には引き続き監視を行います。

# 7.11. 複数ファイル移動(現在のファイルまで)

フォルダ指定ダイアログを開き、表示しているフォルダの画像ファイルのうち、先頭から現在のファイルまでを指定フォルダへ移動します。

複数冊の本をスキャンし、1冊ずつフォルダ分けしていく利用を想定しています。2、3面表示の場合、現在のファイルが分かりづらいため、1面表示モードに切り替えての利用をお勧めします。

# 7.12. ページ番号表示

ページ抜けチェックとファイル名リネーム用です。1面モードと見開きモードのみで、3面モードと前後表示モードでは無視されます。画像サイズによっては画面外にはみ出して見えないこともあります。

![ページ番号のみ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/86fb4030-efdb-9456-429b-3b6c8771652c.png)

# 7.13. ページ番号に合わせてリネーム

]、[キーで増減させたページ番号に合わせて現在のフォルダの画像ファイル名をリネームします。拡張子以外の部分を3桁0パディングでページ番号にします。
リネーム前に確認ダイアログを表示し、「はい」を選択するとリネームを実行します。「いいえ」「キャンセル」の場合にはリネームを実行しません。

![複数ファイルリネーム確認ダイアログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/b7b8dfa3-0b67-667e-df56-30dd17b2213b.png)

リネーム後のファイル名のいずれかが既存ファイル名とぶつかる場合には、一度ページ番号の後ろ(拡張子の手前)に"\_"を付加して全てリネームし、改めてページ番号のファイル名にリネームします。"\_"付きのファイル名とぶつかる場合には、リネームを実行しません。

例1：
10001～10004を001～004にリネーム
10001.jpg、10002.jpg、10003.png、10004.jpg
→001.jpg、002.jpg、003.png、004.jpg

例2：
001～004を003～006にリネーム(004.jpgがぶつかる)
001.jpg、002.jpg、003.png、004.jpg
→003_.jpg、004_.jpg、005_.png、006_.jpg
→003.jpg、004.jpg、005.png、006.jpg

処理対象の拡張子は表示対象と同じで、.jpg、.jpeg、.png、.bmp、.gifです。

# 8. キー操作

設定を変更していない場合のキー操作です。

1つ前の画像：↑、q
1つ後の画像：↓、a
1つ前の画像(左右入れ替え可)：←　※見開きモード、3面モードの場合には逆になる
1つ後の画像(左右入れ替え可)：→　※見開きモード、3面モードの場合には逆になる
10個前の画像：PageUp　※↑を10回繰り返す(途中の画像を全て読み込む)
10個後の画像：PageDown　※↓を10回繰り返す(途中の画像を全て読み込む)
先頭画像：Home　※先頭画像にジャンプする(途中の画像を読み込まない)
最終画像：End　※最終画像にジャンプする(途中の画像を読み込まない)
左回転：d　※1面モードのみ
右回転：f　※1面モードのみ
原寸表示/フルスクリーン表示切り替え：x
拡大：+　※原寸表示のみ
縮小：-　※原寸表示のみ
1ピクセル移動：Ctrl+↑、↓、←、→　※原寸表示のみ
32ピクセル移動：Shift+↑、↓、←、→　※原寸表示のみ
指定モニタに移動：Shift+↑、↓、←、→　※フルスクリーン表示のみ
短辺を画面幅または高さに合わせて表示する/戻す：z　※フルスクリーン表示のみ
ファイル名昇順：Shift+F1　※zipファイルは対象外
ファイル名降順：Shift+F2　※zipファイルは対象外
更新日時昇順：Shift+F3　※zipファイルは対象外
更新日時昇順：Shift+F4　※zipファイルは対象外
ページ番号増加：]
ページ番号減少：[
フルパスファイル名コピー：Shift+C
ファイルコピー：Ctrl+C
エクスプローラ起動：Shift+Enter
コマンド1起動：Enter　※ScanClick
コマンド2起動：Shift+F12　※RenScan
コマンド3起動：Shift+F11　※空
コマンド4起動：Shift+F10　※空
コマンド5起動：Shift+F9　※空
再読み込み：F5　※見開き、3面の場合には左端画像のみ
指定ディレクトリへコピー1～9：テンキー1～9　※保存先フォルダはImageTest1.exe.configで指定。コピー先に同名ファイルが存在する場合にはコピーしない。コピー後(コピーしなかった後も)にMoveAfterCopyで指定した方向へ進む。zipファイルの場合は正常動作しない。
指定ディレクトリへコピーなしで次・前に移動：テンキー0、テンキー.
1面モードに切り替え：フルキー1
見開き/1面モード切り替え：フルキー2
3面/1面モード切り替え：フルキー3
前後表示/1面モード切り替え：フルキー4
見開き＋前後表示モード/1面モード切り替え：フルキー6
連動モード開始/終了：Shift+I
複数ファイル移動：Shift+M
複数ファイル移動(現在のファイルまで)：Ctrl+M
ページ番号に合わせてリネーム：Shift+P
ページ番号表示/非表示：p
ボーダー表示/非表示：b
ファイルを開く：o、Ctrl+O
フォルダを開く：Shift+O
監視モードON/OFF：Shift+W
見開きモードと3面モードの←、→処理の切り替え：Shift+R
設定：@
終了/連動モード終了：Esc

右クリック：メニュー表示　※上記キー操作のうち、原寸表示の移動処理以外が可能です。
マウスドラッグ：移動　※原寸表示のみ
ホイール：拡大縮小　※原寸表示のみ
ScrollLock：ONの場合は、横長画像はHorizontallyLongScreenのモニタに、縦長画像はVerticallyLongScreenのモニタに表示します。このキーはコンフィグ不可です。

# 9. コマンドライン

ImageTest1 [オプション] [画像ファイル名|ディレクトリ名|zipファイル名]

オプション： (-または/から始まる。大文字小文字区別あり)
-p1 1面モード(デフォルト)
-p2 見開きモード。縦長画像を見開き、それ以外(横長と正方形)を1画面で表示します。
-p3 3面モード。
-p4 前後表示モード
-p6 見開き＋前後表示モード
-wm 監視モード。ディレクトリ名にスキャンアプリケーションの保存先フォルダを指定して下さい。ファイルが増えると表示を更新します。
-sfa ファイル名昇順　※zipファイルは対象外
-sfd ファイル名降順　※zipファイルは対象外
-sta 更新日時昇順　※zipファイルは対象外
-std 更新日時降順　※zipファイルは対象外
-snN 指定した画面に表示(N=画面番号 0～)　※フルスクリーンモードのみ
-plN プリロード数(N=プリロード数 0～)　※あまり使用をお勧めしない
-mtN プリロード時の最大スレッド数(N=最大スレッド数 1～)　※あまり使用をお勧めしない
-imN 拡大時のアルゴリズム(N=.NETのInterpolationMode列挙型の値 0～)
-b[N] ボーダー表示(N=ボーダー幅)　※赤枠表示
-bnN バッファ数(N=バッファ数)　※画像を記憶する数
-spn ページ番号表示　※1面モードと見開きモードのみ。3面モードと前後表示モードでは無視される。

使用例：
ImageTest1
マイピクチャの最初の画像ファイルを表示します。

ImageTest1 C:\image\image1.jpg
C:\image\image1.jpgを表示します。

ImageTest1 C:\image
C:\imageの先頭ファイルを表示します。

ImageTest1 -p2 -spn C:\book\book1.zip
C:\book\book1.zipを見開きモード、ページ番号表示ありで表示します。

ImageTest1 -p3 -b -wm C:\scan
3面モードでC:\scanを監視します。ボーダーを表示します。

ImageTest1 -p4 C:\image\image1.jpg
前後表示モードでC:\image\image1.jpgを表示します。image1.jpgの1つ前と1つ後の画像が小さく表示されます。

# 10. 設定

バージョン1.12より画面の設定ダイアログで全項目設定可能にしたため、ImageTest1.exe.configを直接編集する必要はなくなりました。直接編集していた場合には画面上から設定を行って下さい。画面上から設定変更を行うと、次回以降その設定が引き継がれます。設定の保存場所は、C:\Users\\(ユーザー名)\AppData\Local\ImageTest1\ImageTest1.exe_Url_(英数字)\1.0.0.0\user.config です。(.NET標準)

DoXXXXX
キーコンフィグです。

画面情報自動取得(ScreenInfoAuto)
1(デフォルト)の場合、モニタ情報を自動取得し、フルスクリーン時にShift+←、→でモニタを切り替えます。モニタ座標に合わせた移動ではなく、例えば3モニタの場合には、Shift+→はモニタ0→1→2→0、Shift+←はモニタ0←1←2←0とループします。
0を指定すると、下記6項目でモニタ情報を設定します。解像度と移動先画面を設定でき、モニタの物理配置に合わせた定義が可能です。また、物理画面よりも小さくすることも可能です。

画面数(NumberOfScreen)　例：3　※画面数
解像度情報(ScreenInfomations)　例：0, 0, 1920, 1080 / 1920, 0, 1920, 1080 / -1920, 0, 1920, 1080　※解像度。X, Y, Width, Heightをモニタの数だけ / で区切って下さい。この例の場合は3画面なので画面番号は順に0、1、2となります。
左画面移動先(LeftDestinations)　例：2, 0, 1　※Shift+←押下時の移動先画面(0～)。-1で無効。
右画面移動先(RightDestinations)　例：1, 2, 0　※Shift+→押下時の移動先画面(0～)。-1で無効。
上画面移動先(UpDestinations)　例：-1, -1, -1　※Shift+↑押下時の移動先画面(0～)。-1で無効。
下画面移動先(DownDestinations)　例：-1, -1, -1　※Shift+↓押下時の移動先画面(0～)。-1で無効。

リサイズリスト(ResizeList)
原寸表示の拡大・縮小時の倍率リストです。

横長画面No(HorizontallyLongScreen)
ScrollLockがONの場合に、横長画像をこの画面(0～)に表示します。

縦長画面No(VerticallyLongScreen)
ScrollLockがONの場合に、縦長画像をこの画面(0～)に表示します。

初期表示フルスクリーン(Maximize)
初期表示の原寸表示/フルスクリーン表示の指定です。True(デフォルト)でフルスクリーン、Falseで原寸表示です。

移動量小(MoveValueSmall)
原寸表示のCtrl+↑、↓、←、→での移動ピクセル数です。デフォルトは1(ピクセル)です。

移動量大(MoveValueLarge)
原寸表示のShift+↑、↓、←、→での移動ピクセル数です。デフォルトは32(ピクセル)です。

コマンドライン(CommandLine)
コマンドラインの前に追加する文字列です。デフォルトは空文字列です。-p4等を指定してデフォルト動作とすることができます。その状態でコマンドラインに-p1を指定すると、後優先で-p1のモードとなります。

ボーダー幅(BorderWidth)
ボーダー表示(赤枠表示)のボーダー幅。デフォルトは2(ピクセル)です。

プリロード数(PreLoadNumber)
プリロード数(0～)。　※あまり使用をお勧めしない

プリロードの最大スレッド数(MaxThreads)
プリロード時の最大スレッド数(1～)。　※あまり使用をお勧めしない

Interpolationモード(InterpolationMode)
拡大時のアルゴリズムです。.NETのInterpolationMode列挙型の値(0～)です。デフォルトは0です。詳しくは[Microsoftのページ](https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.drawing2d.interpolationmode?view=netframework-4.7.2)を参照して下さい。

0　Default(既定のモード)　(Bilinear？)
1　Low(低品質補間)
2　High(高品質補間)
3　Bilinear(双一次補間)
4　Bicubic(双三次補間)
5　NearestNeighbor(最近傍補間)
6　HighQualityBilinear(高品質双一次補間)
7　HighQualityBicubic(高品質双三次補間)

バッファ数(BufferNumber)
バッファ数。画像ファイルを読み込むと、画像ファイルと拡大・縮小ファイルをメモリ上に持ち続けますが、バッファ数を指定すると、指定した数を超えると古い順に解放します。-1(デフォルト)を指定すると解放せずに全てメモリ上に持ち続けます。

連動モード画面No(InterlockScreenNumber)
0～：モニタが2画面以上ある場合に、指定した画面に連動モードのサブウィンドウを表示します。
-1(デフォルト)：モニタが2画面以上ある場合に、連動モードで元ウィンドウが画面0の場合にサブウィンドウを画面1に、元ウィンドウが画面1の場合にサブウィンドウを画面0に表示します。
-2：モニタが2画面以上ある場合にも、連動モードを1画面(画面分割)で動作させます。

コピー後の移動方向(MoveAfterCopy)
指定ディレクトリへコピー1～9のコピー後、指定ディレクトリへコピーなしで次・前に移動で移動する方向の指定です。
1：次の画像(デフォルト)
0：移動しない
-1：前の画像

左右入れ替え(ChangeLeftRight)
見開きモードと3面モードの場合の←、→キーの動作の指定です。
1：左右を入れ替える(デフォルト)
0：左右を入れ替えない

コピー先ディレクトリ1～9(DestinationDirectory1～9)
指定ディレクトリへコピー1～9(テンキー1～9押下)時のコピー先フォルダです。

実行コマンド1～5(ExecCommand1～5)
起動コマンドです。空にすると何も起動しません。

コマンド実行後のキャッシュクリア有無1～5(ClearAfterExecCommand1～5)
起動コマンド終了後に読み込み済みの画像データを全てクリアするかどうかの指定です。0(デフォルト)でクリアせず、1でクリアします。
既知の問題：1を指定した時に、表示中の画像のみクリアされず古いままとなります。F5を押下して更新して下さい。

連動フォルダ(InterlockFolder)
連動モードで表示するフォルダです。デフォルトはC:\scanです。

初期表示フォルダ(InitialFolder)
コマンドライン引数にファイル名・フォルダ名を指定しないで起動した場合に開くフォルダ。デフォルトはマイピクチャ。

複数ファイル移動後実行コマンド(ExecCommandAfterMoveFiles)
複数ファイル移動後に実行するコマンドです。デフォルトは{ImageTest1} -p2 -b -spn {destDir}で、ImageTest1を見開きモード・ボーダー表示あり・ページ番号表示ありでもう1つ起動します。

# 11. 追加ツール

# 11.1. ScanClick

ImageTest1のEnterキー押下で起動します。
下記のスキャナのスキャン開始ボタンまたはエラーダイアログの続行ボタンを押下します。
スキャナダイアログが開いていない場合は、BTScanのウィンドウがある場合には、BTScanの入力開始ボタンをクリックしてからスキャナのスキャン開始ボタンを押下します。
BTScanのウィンドウがなくITScanのウィンドウがある場合には、ITScanのスキャンボタンをクリックしてからスキャナのスキャン開始ボタンを押下します。

- Canon DRシリーズ(DR-9080C、DR-7580、DR-9050C、DR-X10C、DR-G1130で動作確認)
- FUJITSU TWAIN32(富士通のレガシードライバ)(fi-6130、fi-5900Cで確認)
- PaperStream IP (TWAIN)(富士通の新ドライバ)(fi-6130、fi-7160で確認)
- EPSON Scan(スキャン開始ボタンでなくプレビューボタンを押下します)(ES-9000Hで確認)

Canon DRシリーズのスキャナエラーダイアログを閉じると裏でBTscanの画面に戻るので、スキャンするにはEnterキーを2回押下する必要があります。
本家AutoHotKeyがマルチバイトに対応していないため、ウィンドウタイトルの検索で正規表現を使用中にCanon DRシリーズの「スキャン」ボタンを正しく押下できない場合があります(DR-9050C、DR-X10Cで発生。ウィンドウタイトルの検索で正規表現を使用しない場合は発生しない)。これを回避するため、「スキャン」ボタンのクリックではなく、座標指定のクリックに変更しています。しかし、DR-G1130のみボタンの位置が異なるため、どの機種でもクリックボタンに引っかかりそうな座標を指定してクリックしています。DR-G1130の場合はボタンの左端近く、他の機種ではボタンの右端近くです。日本語を多用する場合にはAutoHotKey_L Unicode版を使用するほうが確実だそうですが、全スキャナでテストし直しが厳しいため、局所的な修正で乗り切っています。

# 11.2. RenScan

ImageTest1のShift+F12で起動します。
指定画像以降のファイルを、スキャンフォルダのファイルと差し替えます。元のファイルはRenScan.ps1内で指定している保存先に移動します。

※zipファイル表示中に使用しないで下さい。おそらく異常終了します。
※スキャンフォルダで使用しないで下さい。ループしておかしくなります。
※スキャンフォルダのファイルは*.jpg、*.jpeg、*.png、*.bmp、*.gifを対象としています。

# 12. スキャン作業の流れ(ソフト操作詳細)

1) BTscanまたはITScanを起動する。
2) スキャナを選択する。
3) ImageTest1 -p3 -b -wm C:\scan を実行する。
4) 本または本の一部をスキャナにセットする。
5) Enterキーを押下してスキャンを開始する。(ScanClick呼び出し)
6) スキャンが終了したら、スキャン失敗がないかチェックする。(画像を読み込み済みのため、表示が速い)
7) Shift+M(複数ファイル移動)を押下し、フォルダ選択ダイアログで新しいフォルダを作成または既存のフォルダを選択してスキャンした画像(複数ファイル)を移動し、新しくImageTest1が見開きモードで起動される。
8) スキャン失敗がなければ20)に進む。
9) 新しいImageTest1でスキャン失敗ページ(奇数ページ)を表示する。
10) Alt+Tabで元の(3面モードかつ監視モードの)ImageTest1に戻る。
11) スキャン失敗分の原稿(連続して失敗しているひとかたまり)をセットし、Enterキーを押下してスキャンする。(ScanClick呼び出し)
12) Alt+Tabで新しい(見開きモードの)ImageTest1に切り替える。
13) Shift+Iを押下して連動モードにする。
14) スキャン失敗ページとスキャンし直しページを全て目視確認する。
15) スキャン失敗ページの最初に戻る。
16) Shift+F12でRenScanを呼び出し、スキャン失敗ページとスキャンし直しページを置き換える。　※3)が起動していると移動に失敗することがあるので、一度落として置換後に3)を起動し直す。 ※全てを置き換えたくない場合には、エクスプローラで削除、表示位置を移動、RenScanを使用せずに置き換え等を行って下さい。
17) EscまたはShift+Iで連動モードを終了する。
18) F5で現在のページを更新する。(RenScan呼び出し後に現在のページが更新されない既知の問題の対策)
19) スキャン失敗がまだあれば9)に戻る。
20) 本の途中の場合は、新しいImageTest1を終了して、4)に戻る。
21) ]、[キーでページ番号を増減させて本のページ番号に合わせる。
22) Shift+Pでファイル名をページ番号に合わせてリネームする。
23) 新しいImageTest1を終了する。
24) 4)に戻る。

# 13. スキャン作業の流れ(裁断からスキャンまで)

# 13.1. カラー、白黒混じりの本(雑誌、同人誌、A5、B6本等)

私はカラーはカラー指定、白黒(単色)ページはグレースケールと設定を変えてスキャンしているので、カラー、白黒混じりの本は、1冊ずつ裁断して、1冊ずつスキャンしています。
表紙カバーを外し、内側の厚紙を前後繋がったまま剥ぎます。
表紙カバーは切らずにDR-G1130やDR-X10CのADFでスキャンします。
内側の厚紙は、表紙と同じ内容の場合にはスキャンせずに廃棄し、違う内容の場合には前後繋がったままES-9000Hのフラットベッドでスキャンします。
裁断機に入らない厚い本は、中央付近で開いて片側ずつ裁断します。中央付近で開いて本の背の側からカッターで切って2つに分けたほうがずれませんが、面倒なので切らずに裁断しています。
本文はカラーページはカラー設定、白黒ページはグレースケール設定にしながら、DR-G1130やDR-X10CのADFでスキャンします。
[、]、Shift+Pでファイル名をページ番号に合わせます。表紙カバーはエクスプローラで000aなどにリネームします。(各ページよりも前になるように) 内側の厚紙は000bにします。

# 13.2. 白黒の本(ジャンプコミックスサイズ)

表紙カバーと内側の厚紙部分を取り除いて、本文を1冊ずつ裁断します。
本文を3冊まとめてDR-G1130やDR-X10CのADFでスキャンします。
スキャン後にImageTest1で画像チェックをしながら、本の最後のページでCtrl+Mを押下して、Alt+Nで新規フォルダを作成して1冊分移動します。[、]、Shift+Pでファイル名をページ番号に合わせます。
表紙カバーは十数枚まとめてDR-G1130やDR-X10CのADFでスキャンします。エクスプローラでリネームと各フォルダへの移動を行います。

# 13.3. 白黒の本(同人誌)

表紙・裏表紙をまとめて剥がして、本文を1～7冊程度(PK-513や200DXで)まとめて裁断します。
本文を20冊前後まとめてDR-X10CのADFでスキャンします。
表紙・裏表紙は上記ADFスキャン中に、別PCに繋いだfi-7700Sのフラットベッドで見開きでスキャンします。
ADFスキャン後にImageTest1で画像チェックをしながら、本の最後のページでCtrl+Mを押下して、Alt+Nで新規フォルダを「1」などの仮の名前で作成して1冊分移動します。[、]、Shift+Pでファイル名をページ番号に合わせます。表紙画像をエクスプローラでリネームと上記フォルダへの移動を行います。表紙画像と本文1ページ目が合っているのを確認し、表紙画像等をもとに先程作成したフォルダをタイトルとサークル名にリネームします。購入履歴等を検索して入力を省力化します。

# 13.4. カラー、白黒混じりの本(雑誌、同人誌、A5、B6本等) その2 (2022/05/05追記)

本文のカラーページはカラー設定、白黒ページはグレースケール設定にいちいち設定を切り替えると時間と手間がかかるので、切り替えを1回で済ませる手順です。

同じサイズの本をカラー、白黒ページ関係なくまとめてDR-X10Cの給紙トレイに3冊(同人誌の場合は20冊ほど)載せて、グレースケールでスキャンします。スキャンし終わったらさらに他の本を3冊(または20冊)載せてスキャンします。重送、紙詰まり等で止まった場合には、直すついでに給紙トレイに1～2冊(数冊)継ぎ足します。排紙トレイに原稿が溜まりすぎないように取り除きます。

これをひたすら繰り返し、数十冊スキャンします。

スキャン済みの原稿からカラーページを全て抜き取り、スキャンモードをカラーに切り替えてまとめてスキャンします。スキャナが2台ある場合には片方をカラー専用にする手もあります。

表紙カバーをADFかフラットベッドでスキャンします。

表紙内側の厚紙をフラットベッドでスキャンします。

C:\scan\ のファイルを別のフォルダに移動します。

スキャンした本文を、見開き(2キー)、ページ表示あり(pキー)で縦線やページ折れ等がないか確認しながら、1冊の最後のページまで移動したら1または2キーで1ページ表示にして、1ページ前に戻り、Shift+M、Alt+Nで新規フォルダを「1」から連番でフォルダを作成して1冊分ずつ移動します。
確認は、性能の高いPCで、SSD上で行うと表示が速くて効率が良いのでお勧めです。画面表示は4KでなくフルHD程度だとなお良いです。
移動したファイルが見開きで表示されるので、ページ番号を合わせてShift+Pでリネームします。Escで閉じます。
次の本の先頭ページが単ページで表示されているので、2キーで見開き表示にして、ページがなくなるまで同じことを続けます。

スキャンしたカラーページのうち、連続した1冊分(数ファイル)をエクスプローラで C:\scan\ に移動します。
若い番号のフォルダから、カラーページに対応するグレースケールスキャンページの先頭を開き、Shift+F12(RenScan)でカラーページと入れ替えます。F5で現在ページをリロードします。(既知の問題により現在ページだけリロードされないので)
カラーページがなくなるまで繰り返します。

表紙カバーと厚紙をリネームして、若い番号のフォルダから順に移動していきます。

フォルダをリネームします。

# 14. 更新履歴

# 14.1. ImageTest1

2020/09/12 1.14
1) 複数ファイル移動(現在のファイルまで)を追加。

2020/05/22 1.13
1) 監視モードで他のプロセス(主にITScan)が書き込み中のファイルを表示しようとして読み込みエラーにならないように変更。

2020/05/08 1.12
1) 見開き＋前後表示モード追加。
2) 設定画面追加。
3) 見開きモードでEnd押下時に左右ずれるのを修正。
4) ExecCommand3～5の設定を読み込んでいなかったのを修正。

2020/05/03 1.11
1) ファイルを開くダイアログでzipファイルを表示対象とするように変更。
2) ファイルを開くでzipファイルを開けないのを修正。
3) ファイルを開くにCtrl+Oを追加。
4) コマンド3～5追加(Shift+F11、F10、F9)。定義は空。
5) 見開きモードの右側は左側の画像サイズ、3面モードの右側と真ん中は左側の画像サイズに合わせていて、アスペクト比が極端に異なるとアスペクト比が狂っていたのを、内接描画にしてアスペクト比が狂わないように変更。
6) コマンド1～2実行失敗(C#の例外発生時。コマンドが存在しない等)にアプリケーションが異常終了していたのを、エラーダイアログを表示するように修正。

2020/05/02 1.10
1) ScanClickとRenTestのインストール先をImageTest1と同じに変更。コンフィグに{ImageTest1-Dir}追加。(絶対パスを記述しなくてよいようにした)
2) コマンドライン付加を前に変更。後優先のため、引数で動作を上書き可。
3) 1キーで1面モード、2キーで見開きモード/1面モード切り替え、連動モードをShift+Iに変更。
4) タイトルバーのファイル名を表示画像に合わせて変更(Alt+Tab等で表示される)。
5) メニューにフォルダ2にコピーが2つあるのを修正。
6) メニューの「10個先の画像」を「10個後の画像」に変更。

2020/04/29 1.09
1) メニューの上下左右画面に移動が左右上下になっていたのを修正。

2020/04/29 1.08
1) 右クリックメニュー追加。
2) コマンドライン引数のファイル名・フォルダ名なしで起動可能に変更。デフォルトはマイピクチャの先頭画像を表示する。
3) 原寸表示の1ピクセル移動を↑、↓、←、→からCtrl+↑、↓、←、→に変更。(前・次の画像に移動が同時に動いてしまうため)
4) 複数ファイル移動後コマンドの-b2を-bに変更。
5) -bの数値指定省略で落ちるのを修正。
6) 1ファイル表示後に複数ファイル移動で落ちるのを修正。

2020/04/29 1.07
1) ←、→が次の画像、前の画像だったのを、1面モードと前後表示モードの場合は前の画像、次の画像とし、見開きモードと3面モードの場合に次の画像、前の画像となるように変更。この見開きモードと3面モードの場合に左右を入れ替えるかどうかのコンフィグ(ChangeLeftRight)とキー操作(Shift+R)を追加。
2) 前後表示モードで空フォルダを表示すると落ちるのを修正。
3) ボーダー表示なしの時にボーダー分表示がずれていたのを修正。

2020/04/28 1.06
1) 前後表示モードの前後画像を大きめに変更。
2) ボーダー表示/非表示追加。デフォルトで非表示とし、デフォルトのボーダー幅を0から2に変更。

2020/04/27 1.05
1) 前後表示モード追加。
2) 指定ディレクトリへコピー1～9に、コピー後にコンフィグで指定した方向への移動を追加。
3) 指定ディレクトリへコピーなしで次・前に移動を追加。
4) テンキー0に終了を割り当てていたのを削除。

2020/04/26 1.04
1) ファイルを開くを追加。
2) フォルダを開くを追加。
3) 3面/1面モード切り替えを追加。
4) 監視モードON/OFFを追加。
5) ページ番号表示/非表示を追加。
6) 連動モードでのフォーカス切り替えを追加。
7) 1面モードと見開きモードで監視モードを使用できるように変更。

2020/04/26
1) ページ番号に合わせてリネームを追加。
2) 複数ファイル移動後起動コマンドに-spn(ページ番号表示)を追加。

2020/04/25
1) 複数ファイル移動追加。

2020/04/24
1) 連動モード追加。
2) 監視モードで最初から最新の画像を表示するように変更。
3) 起動コマンド実行後に読み込み済み画像をクリアする機能を追加。RenScan後にクリアするように変更。
4) -bnNのNを取得できなかったのを修正。
5) 見開きモード、3面モードの時に、最初から2ページ目、最後から2ページ目付近の時に、Home、Endが効かなかったのを修正。
6) フォルダにファイルがない時に落ちるのを修正。
7) 指定したファイルがない場合や、後からファイルがなくなった場合に落ちるのを修正。
8) 監視モードで移動して表示枚数が減った後、最新画像が増加した場合に、表示枚数が増えないのを修正。

2020/04/22
初版。

# 14.2. 追加ツール

2020/05/22 1.13

1) ScanClickに下記の変更を実施。

- Canon DR-9050C、DR-X10Cに対応。
- [スキャンアプリケーション ITScan - Qiita](https://qiita.com/mayo00/items/01a22bbe1e9283fce6cb)に対応。

2) RenScanに下記の変更を実施。

- *.bmpのみの対応から、*.jpg、*.jpeg、*.png、*.bmp、*.gifの対応に変更。

2020/05/12 1.12

1) ScanClickに下記の変更を実施。

- Canonスキャナのエラー画面の対応を追加。(「スキャナエラー」と「スキャナーエラー」(今回対応追加)の両方のダイアログに対応)

2020/05/03 1.11

1) ScanClickで下記の動作確認を実施。

- Canon DR-G1130で動作確認。

2) RenScanに下記の変更を実施。

- RenScan.bat内ののRenScan1.ps1のパスの C:\tools\ImageTest1\ を %~dp0 にして、パスを埋め込まないように変更。

2020/05/02 1.10

1) ScanClickに下記の変更を実施。

- PaperStream IP (TWAIN)(富士通新ドライバの32ビット版)対応。fi-6130、fi-7160で動作確認。
- Canon DR-9080C以外のDRシリーズにある程度対応。DR-7580で動作確認。
- Canon DRシリーズのスキャナエラーダイアログに対応。
- BTscanのウィンドウを探す時の3.07の部分を除去。

2) RenScanに下記の変更を実施。

- RenScan.bat内のRenScan1.ps1のパスを、C:\tools\ から C:\tools\ImageTest1\ に変更。

2020/04/22
初版。

# 15. その他

見開きで1ページずらすには、2、↑↓←→のどれか、2で、1ページずれます。ただ、デフォルトの左右を入れ替えるモードの場合に、2で一面モードにした時に←→は移動方向が逆になるのでご注意下さい。

機能追加の要望はすみませんが受けられません。