C#なら簡単に写真や画像の切り抜き、切り取り、トリミング加工ができます。トリミングした画像をそのままのサイズで保存したりサイズを変更(拡大または縮小)するのも簡単にできます。

Bitmap.Cloneメソッドを使う

もし画像の一部を切り抜いてそのままのサイズで保存するのであれば以下の方法が簡単でおすすめです。

System.Drawing名前空間のBitmapクラスを使います。srcFilePathは切り抜きたい画像ファイルのパス、destFilePathは切り抜いた画像をファイルとして保存するときのパスです。画像を読み込んだら画像を切り抜く範囲を指定してCloneメソッドで取得します。

切り抜く範囲はRectangleオブジェクトで指定できます。Rectangleクラスのコンストラクタの引数として

四角形の左上隅のX座標
四角形の左上隅のY座標
四角形の幅
四角形の高さ

を順に渡します。

処理が終わったら忘れずに画像リソースを解放する処理をおこないます。これを忘れるとファイルがロックされたままになり再度開いたり移動、削除などの処理ができなくなります(アプリケーションが終了したらできるようになるが…)。

Graphics.DrawImageメソッドを使う

他にこんな方法もあります。

Bitmapクラスに加えてGraphicsクラスもあわせて使います。これだとトリミングした画像をそのままのサイズで保存できるだけでなく、サイズを変更(拡大または縮小)することもできます。縦横のサイズ比を変更することもできます。

保存したいサイズで新しいBitmapを生成します。そしてGraphics.FromImageメソッドでGraphicsオブジェクトを生成してからDrawImageメソッドで元の画像の一部を取得します。ここではGraphics.DrawImage(Image, Rectangle, Rectangle, GraphicsUnit)を使用しています。第一引数は元になるイメージ、第二引数はトリミングしたイメージを描画する矩形、第三引数はこの矩形のなかに入る部分が元になるイメージからトリミングされます。第四引数はGraphicsUnit.Pixelを指定すると単位がピクセルになります。

終わったらBitmapだけでなくGraphicsもDisposeしてください。

トリミングする幅を指定したらトリミングされたイメージを表示するアプリを作成します。

デザイナで以下のようなものをつくります。左側にあるのはPictureBox、右にはトリミングする幅を指定するためのNumericUpDownコントロールを配置します。

画像ファイルを読み込んだらフィールド変数にBitmapオブジェクトを保存すると同時にPictureBoxにこれを表示します。

トリミングする幅を指定してボタンがクリックされたらトリミングされた状態のBitmapのサイズを計算して新しいBitmapオブジェクトを生成します。もし不正な値が設定されていてサイズが0以下になる場合は処理を打ち切ります。

処理が正常におこなわれている場合は、Graphics.DrawImageメソッドでトリミングされたBitmapを書き込みます。そしてそれをPictureBoxに表示します。

元に戻すボタンがクリックされたらPictureBoxに表示されているイメージをトリミング前の状態に戻します。

保存が選択されたらトリミングされたBitmapオブジェクトをPNGファイルとして保存します。