티스토리 뷰

보통 많이 쓰는 아래 방법으로는

압축율이 알아서 결정되기 때문에 용량은 작아도 화질이 많이 떨어지게 된다. (약 75% 정도?)

 

Image imgBig = Image.FromFile(이미지 경로);

 

Image imgThumb = imgBig.GetThumbnailImage(가로 크기, 세로 크기, delegate { return false; }, IntPtr.Zero);

 

imgThumb.Save(저장할 경로, ImageFormat.Jpeg);

 

imgBig.Dispose();

 

이럴 경우 아래와 같이 인코딩 설정을 통해서 원하는 품질(90%)의 썸네일 이미지를 만들 수 있다.

 

ImageCodecInfo imageCodecInfo;

Encoder encoder;

EncoderParameters encoderParams;

EncoderParameter encoderParam;

 

imageCodecInfo = GetEncoderInfo("image/jpeg");

encoder = Encoder.Quality;

encoderParams = new EncoderParameters(1);

encoderParam = new EncoderParameter(encoder, 90L);

encoderParams.Param[0] = encoderParam;

 

Image imgBig = Image.FromFile(이미지 경로);

 

Image imgThumb = imgBig.GetThumbnailImage(가로 크기, 세로 크기, delegate { return false; }, IntPtr.Zero);

 

imgThumb.Save(저장할 경로, imageCodecInfo, encoderParams);

 

imgBig.Dispose();

 

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;

}

 

원하는 건 모두 MSDN에 Image.Save 메서드 (String, ImageCodecInfo, EncoderParameters)

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday