NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    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;
        }
    }

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.