Setting the compression level when saving JPEG images
 Images are serialized by an encoder specially adapted for the image format. Certain encoders, such as the JPEG encoder, can be instructed to alter the method serialization by the use of encoder parameters which specify the characteristics of the data written to the file or stream. The EncoderParameter class provides encapsulation for these different settings and may be applied to the specific image encoder before an image is saved. In the case of Jpeg images, you can write files with differing levels of compression by using the specialized Quality encoder and a suitable compression setting as shown in the code in the following listing. //Load a bitmap from fileBitmap bm=(Bitmap)Image.FromFile("mypic.jpg"); //Get the list of available encodersImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders(); //find the encoder with the image/jpeg mime-typeImageCodecInfo ici=null;foreach(ImageCodecInfo codec in codecs){      if(codec.MimeType=="image/jpeg")            ici=codec;} //Create a collection of encoder parameters (we only need one in the collection)EncoderParameters ep=new EncoderParameters();      //We'll save images with 25%, 50%, 75% and 100% quality as compared with the originalfor(int x=25;x<101;x+=25){      //Create an encoder parameter for quality with an appropriate level setting      ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)x);      //Save the image with a filename that indicates the compression quality used      bm.Save("C:\\quality"+x.ToString()+".jpg",ici,ep);}