Setting the compression level when saving JPEG images

출처 : http://www.bobpowell.net/jpeg_compression.htm

====================================

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 file

Bitmap bm=(Bitmap)Image.FromFile("mypic.jpg");

 

//Get the list of available encoders

ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders();

 

//find the encoder with the image/jpeg mime-type

ImageCodecInfo 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 original

for(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);

}

이 글은 분류되지 않음 카테고리에 분류되었습니다. 고유주소 북마크.

댓글 남기기