팡이네

/// 
/// 사진 정보
/// 
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;
		}
	}
}