前回触れたように、ImageListのサンプルプログラムを再利用して、GDI+(注)で扱う画像ファイル形式の相互変換が行えるツールを先ず作ってみようと考えています。
注:16bit Windows時代のGraphics Device Interface(GDI)→32bit Windows XP時代からのGDI+→GPUとDirectXを使ったWindows Platform Foundation(WPF-GDI+との比較についてはこれが分かり易いかも)という発展の歴史がありますが、今もGDI+のWindows FormベースでC#プログラムを書いている私にはpng、jpeg/jpg、bmp、gif等(各型式のメリデメ等、詳しくはこれ...私は無智で、「pngよりもjpgの方が良い」と信じ切っていました<恥>)の相互変換だけでも結構ありがたいツールとなります。
その名もImageConverter!
では、「そのプログラムを、どのような仕様にするのか?」という最初の問いが生じますが、BCCForm and BCCSkeltonを開発した私らしく、UI(≒ウィンドウデザイン)を検討することと同義(というと不正確ですが...)、というか深い関連があるというか、
要するに、あーでもない、こーでもない
と色々と試行錯誤してみることでその答えを出してゆくわけです。と、いうことで先ずは前回お見せしたプロトタイプ
が、最終的にこの(↓)ようになりました。
(最小サイズ状態)
これを仕様面から説明すると、次のようになります。
(1)png、jpeg/jpg、bmp、gif等のファイルを左上のリストボックスに追加(「イメージの選択・追加」)し、編集は全ファイル(「リスト初期化」)または1ファイル(「イメージの削除」)ごと削除して行います。変換対象ファイルは同じ場所にまとまってあると思いますが、異なるフォールダー(ファイルパス)にあっても構いません。
(2)このままの状態で「イメージ形式を変換」ボタンを押すと、リストボックスに登録された全ファイルを、そのファイルがあるフォールダーに「出力ファイル形式指定」ドロップダウンリストで指定した形式に変換して保存します。(ソースファイルと変換ファイルが同じ形式(従って拡張子も同じ)である場合、サイズ変更する場合のみファイル名を変えて出力し、そうでなければエラー扱いにする予定です。)
(3)出力先はソースファイルと同じフォールダーを基本としますが、「出力先指定」(「フォールダーを参照」ダイアログを使います)を行えば、ソースファイルがどこにあっても出力先は一つに纏められます。
(4)出力形式はペイントツールを参考に"image/png"、 "image/jpeg"、 "image/bmp"、 "image/gif"。 "image/tiff"に絞りました。
(5)オプションとしては、複数リストボックスに入っていてもそのうちの一つだけを変換できるように「選択ファイルのみ変換」が可能とし、その他ファイルサイズを指定することが出来るようにします。この場合、選択した複数ファイルを同じファイル形式、同じサイズで纏めて出力することが可能になります。
(6)更にオプションの「サイズ変更」のオプションとしてソース画像の「縦横比」を維持する、しないの選択を可能にします。
まぁ、元々の目的がトランプカードのファイル形式とサイズを統一する為だったので、こんな風にしましたが、このままでも他のイメージファイルを変換したい場面で結構役に立つツールになると思います。(その為には、各ファイル形式がどういうメリデメがあるのかをよく理解しないとだけですね...私は怠って誤解していましたけど。)
現在開発は最終段階に入っており、「イメージ形式を変換」ボタンの処理のみを残して動作チェックも完了しています。動くようになったら、またコードを紹介してゆくつもりです。