2011-01-30 12 views
2

画像の特定の部分を切り取り、切り取った画像とHDDに保存されている画像とを比較したいと思います。問題は、ソースイメージの特定のセクションを取得する方法がわからないことです。私は、切り取る画像の位置(X、Y)を知っています。画像の特定の部分を取得する(画像)

+0

注意してください - これは可能ですが非効率的です。私はかつてこれを行うことによってクロールにASP.NETアプリを遅らせる。私はほとんどのメソッドを元のビットマップに委譲したが、ピクセルデータを共有する 'BitmapRegion'クラスを作成しました。 – finnw

+0

アプリケーションでボトルネックと判断された場合、似たようなものが良いアイデアです。私の例はイメージをコピーします。 –

答えて

17

これは元のデータを読み込み、クロップされたバージョンを(0,0)から64x64のサイズで作成します。

Bitmap original = new Bitmap(@"C:\SomePath"); 
Rectangle srcRect = new Rectangle(0, 0, 64, 64); 
Bitmap cropped = (Bitmap)original.Clone(srcRect, original.PixelFormat); 

これはリサイズやWPFであればところで、あなたは私は本当にWPF画像操作機能を知らないようにリサイズと一緒に行く、指定しないでください。

+0

これはWINFORMアプリケーションです –

+1

さてあなたはそこに行く。 –

+8

@ user574917:キャップロックキーが押されています。 –

2

IMGタグの中に自分のウェブサイトのためにトリミングされた画像を使用する必要がある人のために、あなたはいくつかのより多くのコード(私はそれを自分自身を必要とするので、単に、advicing)が必要 上でプラスにこのコードを取る:

byte[] imgbytes;  
using (MemoryStream stream = new MemoryStream()) 
{ 
     cropped.Save(stream, System.Drawing.Imaging.ImageFormat.Png); 
     imgbytes = stream.ToArray(); 
} 
<img src="@String.Format("data:image/png;base64,{0}", Convert.ToBase64String(imgbytes))" /> 
関連する問題