ImageView
1 なんすか?これ?
画像ファイルのビュアです。 元々、D言語で画像ファイルの読み込みを行う自作ライブラリを作成した時の、 動作テスト用のフレームワークを画像ビュアとして公開してみました。
2 遊び方
動作確認はWindows10 64bit で行いました。以下の7zファイルを適当なディレクトリに 展開します。
7zファイルを展開して、bin32/imageview.exe か bin64/imageview.exeを実行すると ウインドが開くと思います。32bit Windowsを御使用の方はbin32の方しか起動できない と思います。bin64の方がより大きな画像を読み込めます。
ざっくり操作方法は以下の通り。
- 画像ファイルの開き方
- メニューの File→Open を選択すると ファイル選択ダイアログが開きます。 画像ファイルを選ぶと表示されます。
- ファイルエクスプローラからファイルをドラッグ&ドロップする事でも開けます。
- Cygwinなどのシェル コマンドラインから起動する場合、
imageview.exe foo.jpg
のように引数に画像ファイルを指定する事で開く事ができます。
- 操作方法
- マウス左ボタンドラッグでスクロールします。
- マウスホイールで表示を拡大/縮小します。
- Ctrlキーを押しながらマウス左ボタンドラッグ(上下方向)でも表示を拡大/縮小します。
- その他の操作
- メニューの Help→Operation でキーボードショートカットなど、その他の操作方法 を表示します。モードレスダイアログなので、ダイアログを開いたまま操作が可能に なっています。
- ウインドウ下に表示されているボタン群はツールボックスと呼んでいます。
アイコン | 説明 |
---|---|
フォルダ内の前のファイルを表示します。 | |
100%表示とウインドウに合わせた拡大/縮小表示を切り替えます。 | |
フォルダ内の次のファイルを表示します。 | |
ファイルを再読み込みします。 |
コマンドラインオプションについて
いくつかの状態をコマンドラインオプションで指定する事ができます。
$ ./imageview.exe --help Usage: imageview [OPTIONs] [FILE or DIRECTORY] command-line help -A, --autofit Enable Auto Fit images to window size. -N, --noscrollbar No scrollbar mode. -T, --hidetoolbox Hide toolbox at startup. -h, --help Print this help.
これらはショートカットで指定する事が可能です。以下は -A
と -T
を指定した例です。
かなり雑な説明ですがそんな感じで。
動作確認は行ってはいますが、バグが潜んでいる可能性は多々あります。もしずっこけた場合は 「しょうがないなぁ〜」という寛大な心で許してやってください。
3 対応フォーマット
対応しているつもりのフォーマットは以下の通りです。
- JPG,PNG,TGA,BMP,PBM,PGM,PPM
4 プログラムソース
D言語(2.0)で書かれています。
Windows API (githubに移った模様)プロジェクトのWinAPIバインディングを利用させていただいています。 Win64対応の修正を少し入れてあります。 D言語はコンパイラバージョンが変わると、すぐにコンパイルが通らなくなりますので、 コンパイルできるセットとしてwin32-r433b.tar.xzとして勝手に固めさせてもらいました。 そんな訳で、Windowsでしか動きません(^^;
zlib , libpng , libjpeg を、MinGW用に野良ビルドしたものをスタティックリンク しています。
コンパイラは2016年9月時点でgithubでメンテされている GDC を使用しました。 ただし、メインラインのtrunkはMinGW向けにビルドできません。 MinGW向けに 手を入れたCygwinのクロスコンパイラを使用しています(ビルドの参考)。
$ x86_64-w64-mingw32-gdc -v Using built-in specs. COLLECT_GCC=x86_64-w64-mingw32-gdc COLLECT_LTO_WRAPPER=/usr/local/gdc_2068_610_mingwcross/libexec/gcc/x86_64-w64-mingw32/6.1.0/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../gcc-6.1.0/configure --with-pkgversion='gdc-6 e9bcb3abd1(DMD2.068)' --build=i686-pc-cygwin --host=i686-pc-cygwin --target=x86_64-w64-mingw32 --enable-languages=c,c++,d --prefix=/usr/local/gdc_2068_610_mingwcross --with-sysroot=/usr/x86_64-w64-mingw32/sys-root --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --enable-threads=win32 --disable-win32-registry --enable-target-optspace --disable-nls --disable-bootstrap --disable-shared --disable-multilib --enable-long-long --enable-sjlj-exceptions Thread model: win32 gcc version 6.1.0 (gdc-6 e9bcb3abd1(DMD2.068))
ビルド方法は以下の通り。~/Downloads/ の下にtar.xzアーカイブをダウンロードしたとし、 作業ディレクトリはカレントディレクトリだとします。
xz -dc ~/Downloads/imageview_v001_src.tar.xz | tar xvf -
cd imageview_v001_src
xz -dc ~/Downloads/win32-r433b.tar.xz | tar xvf -
./mk.sh -a -m 64 -b x86_64-w64-mingw32- -l'-lgphobos2 -lgdruntime -lws2_32' -j 7
どちらかと言うとコンパイル環境を整えるのにかなり手間がかかりますが、それをいとわないという方 ならば適当に改造するなどして遊んでみてください。
5 制作メモ
自作の画像読み込みライブラリをテストするのに、画像フォーマット毎に専用のテストベッドを 書いては読み込みテストを行っていたのですが、表示だけなら一つテストベッドがあれば良いんじゃね?と いう訳で作成したのが原型になります。 その後、Windows10標準の画像ビュアでは、拡大表示した時にフィルタ がかかってピクセルの粒を確認するのに向いていませんでした。代用の為にビュアとして テストベッドの表示操作を改良したのが今のImageViewという訳です。
そんな感じなので、対応する画像は少ない上にマニアックなものばかりです。 元々の用途がテストベッドという訳で、ついでに出来たものなので御容赦願います(^^;