プログラミング

C#の理解を深めるついでに、既にVB2005で作成していた自作アプリをC#でもっと高速に動くように作り直そうと思った。フォルダ内にある画像ファイルをピクセルの大きさで篩い分けるという単純なアプリだ。

VB2005の時はフォルダ内の画像ファイル一覧を修得し、AutoスケールにしたPictureBoxに画像を1個づつ読み込ませ、PictureBoxのサイズから画像ファイルのサイズを判断していた。

C#では、画像ファイルをバイナリで開いてヘッダー情報からサイズを得られれば、PictureBoxに画像を読み込ますよりは早いと思ったのだ。

しかしとんだ誤算であった。まず、Jpeg画像ファイルにおいてヘッダーにサイズを記録したバイナリ情報(FF C0)は複数あるファイルもある。解決策が見当たらないので、取り合えずJpegクリーナーソフトで不要なヘッダーを消す事にした。その作業だけでも時間がかかる。そうするとC#で作ったプログラムは動くのだが以外に遅い。結局はバイナリファイルを開くためにストリームリーダーで開くので時間がかかるのか、コンソールに文字を書き出すので時間がかかるのか、よく判らない。