사진 이미지 관련 클래스
C#2016. 4. 14. 16:15
////// 사진 정보 /// public class PhotoInfo { private int maxWidth = 200, maxHeight = 267; private int orgWidth = 0, orgHeight = 0; private int width = 0, height = 0; private bool portraitMode = false; private string base64String = null; ////// 사진 정보 /// public PhotoInfo() { } ////// 사진 정보 /// /// public PhotoInfo(MemoryStream ms) { this.base64String = "data:image/jpg;base64," + Convert.ToBase64String(ms.ToArray()); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); this.orgWidth = img.Width; this.orgHeight = img.Height; this.portraitMode = (img.Height - img.Width) > 0; //세로가 긴 사진인 경우 if (this.portraitMode) { if (this.orgHeight > this.maxHeight) { this.height = this.maxHeight; var ratio = (this.maxHeight * 1.0) / (this.orgHeight * 1.0); this.width = (int)Math.Round(this.orgWidth * ratio); if (this.width > maxWidth) { this.width = maxWidth; ratio = (this.maxWidth * 1.0) / (this.orgWidth * 1.0); this.height = (int)Math.Round(this.orgHeight * ratio); } } else { this.height = this.orgHeight; this.width = this.orgWidth; if (this.width > maxWidth) { this.width = maxWidth; var ratio = (this.maxWidth * 1.0) / (this.orgWidth * 1.0); this.height = (int)Math.Round(this.orgHeight * ratio); } } } //가로가 긴 사진인 경우(LandscapeMode) else { if (this.orgWidth > this.maxWidth) { this.width = this.maxWidth; var ratio = (this.maxWidth * 1.0) / (this.orgWidth * 1.0); this.height = (int)Math.Round(this.orgHeight * ratio); if (this.height > maxHeight) { this.height = maxHeight; ratio = (this.maxHeight * 1.0) / (this.orgHeight * 1.0); this.width = (int)Math.Round(this.orgWidth * ratio); } } else { this.width = this.orgWidth; this.height = this.orgHeight; if (this.height > maxHeight) { this.height = maxHeight; var ratio = (this.maxHeight * 1.0) / (this.orgHeight * 1.0); this.width = (int)Math.Round(this.orgWidth * ratio); } } } } ////// 사진 최대 너비 /// public int MaxWidth { get { return maxWidth; } } ////// 사진 최대 높이 /// public int MaxHeight { get { return maxHeight; } } ////// 원본 사진 너비 /// public int OrgWidth { get { return this.orgWidth; } } ////// 원본 사진 높이 /// public int OrgHeight { get { return this.orgHeight; } } ////// 사진 너비 /// public int Width { get { return this.width; } } ////// 사진 높이 /// public int Height { get { return this.height; } } ////// 사진 가로방향여부 /// public bool PortraitMode { get { return this.portraitMode; } } ////// Base64 문자열 /// public string Base64String { get { return base64String; } } ////// 사진 정보 표시 /// /// public void SetImage(Image image) { if (this.Base64String != null) { image.ImageUrl = this.Base64String; image.Height = this.Height; image.Width = this.width; } } }
'C#' 카테고리의 다른 글
ClosedXML 사용 (0) | 2017.05.17 |
---|---|
ASP.NET 엑셀 출력 스타일 (0) | 2016.08.31 |
오라클 BLOB 등록 및 조회 (0) | 2016.04.14 |
다른 프로젝트의 Resources.resx 파일의 리소스에 접근하기 (0) | 2012.05.07 |
윈도우에 등록된 확장자를 가진 파일 열기 (0) | 2011.11.16 |