Today I’ll show you how to compress your images with help of the JPEG-codec in C#. You will be able to choose the grade of compression. So it’s your choice, if the function should produce smaller filesize or better quality of images.
private void CompressImage(Image sourceImage, int imageQuality, string savePath) { try { //Create an ImageCodecInfo-object for the codec information ImageCodecInfo jpegCodec = null; //Set quality factor for compression EncoderParameter imageQualitysParameter = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, imageQuality); //List all avaible codecs (system wide) ImageCodecInfo[] alleCodecs = ImageCodecInfo.GetImageEncoders(); EncoderParameters codecParameter = new EncoderParameters(1); codecParameter.Param[0] = imageQualitysParameter; //Find and choose JPEG codec for (int i = 0; i < alleCodecs.Length; i++) { if (alleCodecs[i].MimeType == "image/jpeg") { jpegCodec = alleCodecs[i]; break; } } //Save compressed image sourceImage.Save(savePath, jpegCodec, codecParameter); } catch (Exception e) { throw e; } }
Call the function as follows:
CompressImage(Image.FromFile(Application.StartupPath + "\mySourcePicture.jpg"), 30, Application.StartupPath + "\myCompressedPicture.jpg");
Thank you for the post. Really worked great.
Thanks for the article.It’s working fine for me.