| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- jQuery
- Ajax
- 실버라이트
- .net
- 자바스크립트
- 해킹
- 형태소분석기
- 리팩토링
- MS
- silverlight
- hnd-7070
- ASP.NET
- 백신
- GDI+
- 개발자
- Web 2.0
- 실버라이트2
- JavaScript
- C#
- 암호화
- Sliverlight
- 구글
- WEb 2.0 Expo
- 전기차
- COM+
- 성공
- 게으름
- XML
- GTD
- 검색
- Today
- Total
꿈으로 가는 작은 계단
C#으로 이미지 리사이즈/조작 시 부드럽게 렌더링 하기 본문
C#에서 GDI+의 Graphics 오브젝트를 사용해서 렌더링을 할 때 사이즈 변경 등의 변형이 일어나면 들쭉날쭉한 도트가 심해지는 현상이 있는데요, 간단하게 InterpolationMode를 설정하여 렌더링 방식을 선택할 수 있네요.
Image img = Image.FromFile("a.jpg");
using (Bitmap bitmap = new Bitmap(img.Width, img.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
// 드로잉 모드
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
// 메모리에 렌더링
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
// 파일 저장
bitmap.Save("a.png");
}
}
내친김에 간단한 윈폼 프로젝트를 하나 만들어서 각 모드별 차이점을 찾아봤어요.
이미지를 선택하면 무조건 200 x 200 사이즈로 렌더링 하는데요, 각 모드별로 걸리는 시간도 함께 표시했어요.
각 모드별로 구분이 확실히 되죠? High...시리즈가 확실히 품질이 더 좋지만 리사이즈에 시간이 훨씬 더 걸리죠.
InterpolationMode는 텍스트나 직선이 많이 들어갈 때 더 확실히 차이가 나는데요, High...시리즈는 흐릿하지만 어느 정도 글자를 읽을 수 있게 되죠.
대용량 사진으로 테스트. 가장 시간이 많이 걸리는건 HighQualityBilinear 방식이고요, 계산을 더 할 수록 이미지가
부드러워지는 혹은 흐려지는 경향이 있네요. HighQualityBilinear는 원본 이미지가 너무 뭉개지는 감이 있고요,
HighQualityBicubic이 적당해 보여요.
특히 Deepzoom을 사용할 때에는 이미지가 가급적 부드러운 쪽이 더 자연스러운 확대축소 효과를 보여주게 되므로 혹시
Deepzoom을 위한 이미지를 코드로 리사이즈 한다면 부드러우면서도 약간이나마 더 빠른 HighQualityBicubic쪽을
추천해요.
'소프트웨어 > C# & ASP.NET' 카테고리의 다른 글
| .NET Enterprise Services 성능 (0) | 2008.09.05 |
|---|---|
| .NET의 Enterprise Service(COM+) 이해 (0) | 2008.09.05 |
| ASP.NET 2개 폼 사용하는 꽁수 (0) | 2008.08.28 |
| 하나의 클래스를 통째로 넘기는 방법 ( a.aspx.cs -> b.aspx.cs ) (0) | 2008.08.28 |
| 숫자 -> 한글 표기 ( Microsoft Visual Studio International Pack 1.0 ) (0) | 2008.08.28 |
ImageRendering.zip