# VBForums CodeBank > CodeBank - C# >  JPEG Compression -> save JPEG images with any quality

## MrPolite

(VB version of this article is here )

Here's the code! Too many people ask for this :Big Grin: 
Using this code you can save an image (System.Drawing.Image) item as a jpeg image, specifying the quality of it. Jpeg quality is the same as compression so the lower the quality, the smaller the file size. It's simple to use, ie just do this:



```

Image myImage = //... load the image somehow
// Save the image with a quality of 50%
SaveJpeg (destImagePath, myImage, 50); 



```



```

// Please do not remove :)
// Written by Kourosh Derakshan
//

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



```


hope it's helpful  :Smilie:

----------


## Odanez

Hi,
a small problem is though, that you should use long as quality, not int. Anyway that's the only way I got it to work, got an error the way you used it...   :Confused:  
For EncoderParameter qualityParam = new EncoderParameter (Encoder.Quality, quality); quality can be something like 50L, or casting: (long)50, or you could use (long)quality, should also work... for me that does the trick anyway

----------

