본문 바로가기

.net

Image Resizing


특정폴더내 이미지들을 모두 특정사이즈로 리사이즈해야 하는 일이 생겨서... 만들어봤다.


DirectoryInfo dir = new DirectoryInfo(Server.MapPath("해당폴더 경로지정"));
if(dir.Exists)
{
FileInfo[] files = dir.GetFiles();
foreach(FileInfo subFile in files)
{
      //******************1. GetThumbnailImage()메소드방식*********************//
     System.Drawing.Image imgFile = System.Drawing.Image.FromFile(subFile.FullName.ToString());
     System.Drawing.Image thumbnail = imgFile.GetThumbnailImage(가로, 세로, null, (IntPtr)0);
     thumbnail.Save(Server.MapPath("리사이즈 경로"),System.Drawing.Imaging.ImageFormat.Gif);
     imgFile.Dispose();
     thumbnail.Dispose();
      //******************2. Bitmap방식*********************/
      Bitmap imgFile = new Bitmap(subFile.FullName.ToString());
      Bitmap thumbnail = new Bitmap(imgFile, 가로, 세로);
      thumbnail.Save(Server.MapPath("리사이즈 경로"),System.Drawing.Imaging.ImageFormat.Gif);
      imgFile.Dispose();
      thumbnail.Dispose();
}
}


위 소스를 보면 리사이즈 방식에 2가지 방법을 사용했다.
첫째는 GetThumbnailImage()를 사용
(참고 사이트 http://www.hoons.kr/Lecture/LectureView.aspx?BoardIdx=70&kind=11)
둘째는 Bitmap 객체를 생성해서 사용

http://msdn.microsoft.com/ko-kr/library/system.drawing.image.getthumbnailimage.aspx
GetThumbnailImage
메서드는 요청된 축소판 그림 이미지의 크기가 120 x 120픽셀 정도인 경우 제대로 작동합니다. 포함된 축소판 그림이 있는 Image에서 300 x 300 정도의 큰 축소판 그림 이미지를 요청한 경우 축소판 그림 이미지의 화질이 크게 떨어질 수 있습니다. 포함된 축소판 그림의 배율을 조정하는 것보다는 DrawImage 메서드를 호출하여 기본 이미지의 배율을 조정하는 것이 더 좋은 방법입니다.

첫번째 GetThumbnailImage()는 MSDN을 참고하면 위와 같이 120 x 120픽셀의 경우만 제대로 작동한다고 나와있다.

아래는 원본과 GetThumbnailImage(), Bitmap을 이용하여 리사이즈한 이미지들이다.

가. 원본


나. GetThumbnailImage()로 가로 319 & 세로 224로 변환한 이미지

다. Bitmap객체를 이용하여 가로 319 & 세로 224로 변환한 이미지

위 이미지만 비교해봐도 확연히 차이가 나는걸 확인할 수 있다.

'.net' 카테고리의 다른 글

XML XmlAttribute다루기(삭제, 수정, 추가)  (0) 2009.01.13
Xml 수정하기(update)  (0) 2008.07.08
ASP.NET 디렉토리(directory) 복사  (1) 2008.07.04