Search
Close this search box.

Compress Image files using C#

Found a nice post by Mr.Polite for compressing JPEG images. Here’s the link:

http://www.vbforums.com/showthread.php?p=2038463

Posting the code here for my reference in case the original post gets deleted or changed.

Image myImage =  //... load the image somehow
    // Save the image with a quality of 50%
    SaveJpeg(destImagePath, myImage, 50);
// add this!
using System.Drawing.Imaging;

/// <summary>
/// Saves an image as a jpeg image, with the given quality
/// </summary>
/// <param name="path">Path to which the image would be saved.</param>
// <param name="quality">An integer from 0 to 100, with 100 being the
/// highest quality</param>
public static void SaveJpeg(string path, Image img, int quality) {
  if (quality < 0 || quality > 100)
    throw new ArgumentOutOfRangeException("quality must be between 0 and 100.");

  // Encoder parameter for image quality
  EncoderParameter qualityParam =
      new EncoderParameter(Encoder.Quality, quality);
  // Jpeg image codec
  ImageCodecInfo jpegCodec = GetEncoderInfo("image/jpeg");

  EncoderParameters encoderParams = new EncoderParameters(1);
  encoderParams.Param[0] = qualityParam;

  img.Save(path, jpegCodec, encoderParams);
}

/// <summary>
/// Returns the image codec with the given mime type
/// </summary>
private 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;
}
This article is part of the GWB Archives. Original Author: Mayank Sharma

Related Posts