A union of curiosity and data science

Knowledgebase and brain dump of a database engineer


Resize Images in C# - Extreme Compression

 

Method for resizing images in C#

 

  public static void resizeImage(Image image, string save_path)
        {
            ImageCodecInfo myImageCodecInfo;
            System.Drawing.Imaging.Encoder myEncoder;
            EncoderParameter myEncoderParameter;
            EncoderParameters myEncoderParameters;

            int new_width = Convert.ToInt32(image.Width*.4281);
            int new_height = Convert.ToInt32(image.Height*.4281);

            Bitmap new_image = new Bitmap(new_width, new_height);
            Graphics g = Graphics.FromImage((Image)new_image);
            g.InterpolationMode = InterpolationMode.High;
            g.DrawImage(image, 0, 0, new_width, new_height);

            //Quality encoding. 
            myImageCodecInfo = GetEncoderInfo("image/jpeg");

            myEncoder = System.Drawing.Imaging.Encoder.Quality;

            myEncoderParameters = new EncoderParameters(1);

            //// EXTREME COMPRESSION Save the bitmap as a JPEG file with quality level 25.
            //myEncoderParameter = new EncoderParameter(myEncoder, 25L);
            //myEncoderParameters.Param[0] = myEncoderParameter;
            //new_image.Save(save_path, myImageCodecInfo, myEncoderParameters);

            //// Save the bitmap as a JPEG file with quality level 50.
            //myEncoderParameter = new EncoderParameter(myEncoder, 50L);
            //myEncoderParameters.Param[0] = myEncoderParameter;
            //new_image.Save(save_path, myImageCodecInfo, myEncoderParameters);

            // Save the bitmap as a JPEG file with quality level 75.
            myEncoderParameter = new EncoderParameter(myEncoder, 90L);
            myEncoderParameters.Param[0] = myEncoderParameter;
            new_image.Save(save_path, myImageCodecInfo, myEncoderParameters);


            // new_image.Save(save_path);
            // return new_image;
        }

        private static ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }