2011-01-30 66 views
2

我想剪切圖片的特定部分,並使用它將裁剪後的圖像與存儲在HDD中的圖像進行比較。問題是我不知道如何獲取源圖像的​​特定部分。我知道要裁剪的圖像的位置(X,Y)。獲取圖像的特定部分(圖片)

+0

當心 - 這是可能的,但效率低下。我曾經通過這樣做減緩了ASP.NET應用程序的爬行速度。我最終創建了一個將大多數方法委託給原始位圖但共享像素數據的「BitmapRegion」類。 – finnw 2011-01-30 21:29:20

+0

是的,如果你覺得這是你應用程序的瓶頸,那麼這是一個好主意。我的例子複製圖像。 – 2011-01-30 21:34:36

回答

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); 

順便說一句,你不指定,如果這是的WinForms或WPF,與WinForms的那麼回事,因爲我真的不知道WPF圖像處理功能。

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))" />