|
.NET TIPS 画像の一部の領域を切り抜くには?[C#、VB]デジタルアドバンテージ 一色 政彦2009/08/13 |
![]() |
|
|
|
画像の不要な部分をカットしたいなどの目的で、画像の中の一部の領域を切り抜きたい場合がある。
このような場合には、まずBitmapクラス(System.Drawing名前空間)のオブジェクトを作成する。これには、画像を読み込んだり(参考「TIPS:画像を読み込むには?」)、画面キャプチャで画像データを取得したり(参考「TIPS:スクリーンやウィンドウをキャプチャするには?」)すればよい。
画像の切り抜きにはいくつかの方法があるが、BitmapオブジェクトのCloneメソッドを使うと少ない手順で可能だ。Cloneメソッドの第1パラメータにはRectangle構造体(System.Drawing名前空間)のオブジェクトを、第2パラメータにはPixelFormat列挙体(System.Drawing.Imaging名前空間)の値を指定する。
Rectangleオブジェクトは、切り抜く四角形の領域を示す。Rectangleオブジェクトを生成するコンストラクタのパラメータには、
- 四角形の左上隅のX座標
- 四角形の左上隅のY座標
- 四角形の幅
- 四角形の高さ
を順に指定する。
PixelFormat値は、画像のピクセル・データ形式を示す(最も代表的な値は、「R:赤」「G:緑」「B:青」のそれぞれの色で8bitずつ使用して、合計24bitが1ピクセルとなる形式の「PixelFormat.Format24bppRgb」)。実際には、現在のBitmapオブジェクトのPixelFormat値は、PixelFormatプロパティで取得できるので、これを使う(※元画像と異なるピクセル値を指定した場合、切り抜き後の画像が劣化したり、ひどい場合はOutOfMemoryException例外が発生したりするので、必ずこれを使うこと)。
以上の内容を踏まえてサンプルを作成してみよう。次のコードは、画像を切り抜いて別画像として保存するコンソール・アプリケーションのサンプルだ(※画像の保存方法に関しては「TIPS:画像をファイルに保存するには」を参照されたい)。
|
||
| 画像の一部の領域を切り抜くコンソール・アプリケーションのサンプル・コード | ||
| System.Drawingアセンブリへの参照を追加する必要がある。 |
次の画像は、上記のサンプルを実行した結果で、切り抜き前と切り抜き後の画像だ。
![]() |
![]() |
| 上記のサンプルを実行した結果(上:切り抜き前の画像、下:切り抜き後の画像) |
注意点として、Bitmapオブジェクトは使い終わったら、必ずDisposeメソッドを呼び出して画像リソースを解放するのが好ましい。これを行わない場合、GC(ガベージ・コレクタ)がリソースを解放してくれるまで、読み込んだ画像ファイルにロックがかかったり、メモリ上から消えずに空きメモリ領域を圧迫したりするためだ。![]()
| カテゴリ:クラス・ライブラリ 処理対象:ビットマップ 使用ライブラリ:Bitmapクラス(System.Drawing名前空間) 使用ライブラリ:Rectangle構造体(System.Drawing名前空間) 使用ライブラリ:PixelFormat列挙体(System.Drawing.Imaging名前空間) 使用ライブラリ:OutOfMemoryExceptionクラス(System名前空間) 関連TIPS:画像を読み込むには? 関連TIPS:スクリーンやウィンドウをキャプチャするには? 関連TIPS:画像をファイルに保存するには |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




