특정폴더내 이미지들을 모두 특정사이즈로 리사이즈해야 하는 일이 생겨서... 만들어봤다.
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("해당폴더 경로지정"));
if(dir.Exists)
{
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();
}
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 메서드는 요청된 축소판 그림 이미지의 크기가 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 |