C# 이미지를 고정 비율로 사이즈 변경하기. (Resize an image to a fixed ratio.)
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 이미지 사이즈를 변경하는 옵션은 상당히 다양합니다. 품질이 될수도 있고, 비율을 고정하지 않을수도 있죠. 대부분은 이미지가 왜곡되는것을 방지하기 위해 고정 비율로 변환되기를 바랄겁니다. 가로 세로 사이즈 계산을 잘못해서 확대 또는 축소시 비율이 달라지면 왜곡이 발생하게 됩니다. 상황에 따라 다를수는 있겠지만 왜곡이 발생하면 비교 또는 분석에 문제가 될수도 있어요~
/// <summary>
/// 이미지의 크기를 조정합니다.
/// </summary>
/// <param name="image">크기를 조정할 이미지입니다.</param>
/// <param name="width">크기를 조정할 이미지의 폭입니다.</param>
/// <param name="height">크기를 조정할 이미지의 높이입니다.</param>
/// <param name="isRatio">고정 비율 여부입니다. 이 값을 True로 설정하면 폭과 높이에서 큰 값을 기준으로 비율이 맞춰집니다.</param>
/// <param name="isDispose">이미지를 메모리에서 해제합니다.</param>
/// <returns>크기가 조정된 이미지를 반환합니다.</returns>
public static Image Resize(Image image, int width, int height, bool isRatio = false, bool isDispose = true)
{
if (NSL.ModuleCheck.Invalid)
{
image.Dispose();
return null;
}
if (width > 0 && height > 0)
{
var newHeight = height;
if (isRatio)
{
newHeight = image.Height * width / image.Width;
if (newHeight > height)
{
width = image.Width * height / image.Height;
newHeight = height;
}
}
var res = new Bitmap(width, newHeight);
using (var graphic = Graphics.FromImage(res))
{
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = SmoothingMode.HighQuality;
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphic.CompositingQuality = CompositingQuality.HighQuality;
graphic.DrawImage(image, 0, 0, width, newHeight);
if (isDispose)
image.Dispose();
}
return res;
}
else
{
return image;
}
}
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
추천0 비추천0
- 이전글이미지 사이즈를 변경할 때 품질이 떨어지지 않게 유지하는 방법. 21.05.08
- 다음글이미지 자르기. (How to crop to image.) 21.05.08
댓글목록
등록된 댓글이 없습니다.