複数の画像ファイルの大きさを一度に変更する

前回はサイズ変更できる範囲に縛りがありましたが、今回はユーザーが自由な値を設定することができるようにしました。

一律縦横の比を指定した倍率で縮小
横幅が指定した値を超えていたら縮小
高さが指定した値を超えていたら縮小

という3つのオプションのなかから選べるようにしました。

コンストラクタ内で各コントロールの初期値を設定します。それからラジオボタンが選択されたときの処理(他のコントロールの有効無効を切り替える)ができるようにイベントハンドラを追加しています。

ラジオボタンのチェック状態が変化したら、一番上がチェックされているときは上側のNumericUpDownコントロールのみ、下側のふたつがチェックされているときは下側のNumericUpDownコントロールのみ有効にします。

フォーム上にドラッグされているときの処理です。これは前回と変わりません。

フォーム上にドロップされたときの処理です。

どのラジオボタンがチェックされているかを調べて、適切な処理をおこないます。まずファイルがドロップされたときにそれぞれのファイルが画像ファイルかどうか調べます。

画像ファイルであれば、「一律縦横の比を指定した倍率で縮小」であればnumericUpDown1.Valueの値を調べて縮小処理をすることで得られるBitmapを取得します。「横幅が指定した値を超えていたら縮小」「高さが指定した値を超えていたら縮小」のときは幅・高さを変更することで得られるBitmapを取得します。そのあとこれをファイルとして保存します。

GetBitmapMagnification(Bitmap orgBitmap, double magnification)は、第一引数のBitmapを指定された倍率で縮小(拡大)したあとのBitmapを取得するメソッドです。

GetBitmapFromWidth(Bitmap orgBitmap, int maxWidth)は、第一引数のBitmapの幅が指定された幅よりも広い場合、これを縮小処理したあとのBitmapを取得するメソッドです。

GetBitmapFromHeight(Bitmap orgBitmap, int maxHeight)は、第一引数のBitmapの幅が指定された高さも高い場合、これを縮小処理したあとのBitmapを取得するメソッドです。