For Bitmap manipulation I wrote three extension methods. With this method you can resize, crop and save (as jpg) your image.
Resize Method
[code:c#]
public static Bitmap resizeImage(this Bitmap input, Size size)
{
int sourceWidth = input.Width;
int sourceHeight = input.Height;
float nPercent = 0;
float nPercentW = 0;
float nPercentH = 0;
nPercentW = ((float)size.Width / (float)sourceWidth);nPercentH = ((float)size.Height / (float)sourceHeight);
if (nPercentH < nPercentW)
nPercent = nPercentH;
else
nPercent = nPercentW;
int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage(b);g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(input, 0, 0, destWidth, destHeight);
g.Dispose();
return b;
}
[/code]
Crop Method
[code:c#]
public static Bitmap cropImage(this Bitmap input, Rectangle cropArea)
{
Bitmap bmpImage = new Bitmap(input);Bitmap bmpCrop = bmpImage.Clone(cropArea, input.PixelFormat);
return (System.Drawing.Bitmap)(bmpCrop);
}
[/Code]
Safe Method
[Code:c#]
public static void saveJpeg(this Bitmap img, string path, long quality)
{
// Encoder parameter for image quality
EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);
// Jpeg image codec
ImageCodecInfo jpegCodec = getEncoderInfo("image/jpeg"); if (jpegCodec == null)
return;
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = qualityParam;
img.Save(path, jpegCodec, encoderParams);
}
public static ImageCodecInfo getEncoderInfo(string mimeType)
{
// Get image codecs for all image formats
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
// Find the correct image codec
for (int i = 0; i < codecs.Length; i++)
if (codecs[i].MimeType == mimeType)
return codecs[i]; return null;
}
[/Code]