Getting a particular Portion of Image (Picture)

17,058

Solution 1

This will load the original and create a cropped version starting at (0,0) and with dimensions of 64x64.

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

BTW, you don't specify if this is WinForms or WPF, so going with WinForms as I don't really know WPF image manipulation functions.

Solution 2

For those who need to use the cropped image for their website within img-tag , you need some more code (just advicing, because i needed it myself) Take the code above plus this:

 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))" />
Share:
17,058
Farid-ur-Rahman
Author by

Farid-ur-Rahman

Updated on June 08, 2022

Comments

  • Farid-ur-Rahman
    Farid-ur-Rahman almost 2 years

    I want to cut the the specific portion of the the picture and use it to compare the cropped image with another stored in the HDD. The problem is that I don't know how to get a specific section of the source image. I know the location (X,Y) of the image to be cropped.

  • Cody Gray
    Cody Gray about 13 years
    @user574917: Your caps lock key is stuck.
  • Farid-ur-Rahman
    Farid-ur-Rahman about 13 years
    It shows an error: Error 1 Cannot implicitly convert type 'System.Drawing.Image' to 'System.Drawing.Bitmap'. An explicit conversion exists (are you missing a cast?)
  • Ed S.
    Ed S. about 13 years
    Sorry, you need to cast the return value of Bitmap.FromFile because that method comes from the Image class. I changed it to just use the constructor instead, it was late :)