2011年6月11日

画像を切り取って保存する

画像処理において、画像の一部を切り出すことをトリミングというらしい。画像編集ソフトなんかにも大抵「トリミング」機能が実装されているだろう。

そんな画像を切り取る処理を.NETでやってみる。

.NETでは画像を扱う際にはBitmapクラスを使用する。BitmapクラスのCloneメソッドでサイズを指定すれば、そのサイズのBitmapオブジェクトができるので、それを保存すればよい。Cloneメソッドの引数はRectangle構造体とPixelFormat列挙体。

Rectangle構造体とは四角形の位置とサイズを表したもの。元画像の左上を(0, 0)として(X座標, Y座標, 幅, 高さ)の値でRectangle構造体を作成して渡す。PixelFormat列挙体はヘルプを見てもよくわからなかった。とりあえずは元画像の値をそのまま渡す。

例えば


photo by tsukacyi

のようなユッケの画像をトリミングするプログラムは以下のように書ける

'元画像
Dim source As Bitmap
source = New Bitmap("source.jpg")

'切り取るサイズ
Dim rect As Rectangle
rect = New Rectangle(30, 80, 400, 320)

'切り取り後の画像
Dim trimed As Bitmap
trimed = source.Clone(rect, source.PixelFormat)

'保存
trimed.Save("trimed.jpg")

source.Dispose()
trimed.Dispose()


トリミング後の画像は以下の通り。

0 件のコメント:

コメントを投稿