posts - 25, comments - 24, trackbacks - 0

My Links

News

Archives

Post Categories

Wednesday, April 29, 2009

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

 

posted @ Wednesday, April 29, 2009 8:15 AM | Feedback (0) | Filed Under [ C# ASP.NET ]

Powered by: