C#에서 이미지 크기 조정

Muhammad Maisam Abbas 2024년2월16일
  1. C#에서 Bitmap 클래스를 사용하여 이미지 크기 조정하기
  2. C#에서 Graphics.DrawImage() 함수를 사용하여 이미지 크기 조정하기
  3. 결론
C#에서 이미지 크기 조정

이 자습서에서는 C#에서 이미지 크기를 조정하는 방법에 대해 알아볼 것입니다.

원본 이미지를 로드하여 크기를 조정한 버전을 저장하기까지의 전체 과정을 안내해 드리겠습니다.

C#에서 Bitmap 클래스를 사용하여 이미지 크기 조정하기

Bitmap 클래스는 C#에서 이미지를 처리하는 데 사용되는 많은 메서드를 제공합니다. Bitmap 클래스는 이미지의 픽셀 데이터를 가져옵니다. 우리는 Bitmap 클래스의 생성자 내에서 Size 매개변수를 초기화하여 이미지의 크기를 조정할 수 있습니다.

다음 코드 예제는 C#에서 Bitmap 클래스의 생성자를 사용하여 이미지 크기를 조정하는 방법을 보여줍니다.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image imgToResize, Size size) {
      return (Image)(new Bitmap(imgToResize, size));
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

이 코드는 C#에서 Bitmap 클래스를 사용하여 이미지 크기를 조정하는 전체 과정을 보여줍니다. 작동 방식을 살펴보겠습니다.

단계 1: 원본 이미지 로드

먼저, Image.FromFile 메서드를 사용하여 원본 이미지를 로드해야 합니다. 자신의 이미지 파일 경로("C:\\Images\\img1.jpg")로 대체해야 합니다.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

단계 2: 이미지를 Bitmap으로 변환

다음으로 로드한 이미지를 Bitmap 객체로 변환해야 합니다. 이 단계는 크기 조정 작업을 수행하기 위해 필요합니다.

Bitmap imgBitmap = new Bitmap(img);

단계 3: 이미지 크기 조정

이제 크기 조정 부분입니다. ResizeImage 함수는 Bitmap 객체와 원하는 크기(new Size(200, 200))를 인수로 받고 크기가 조정된 이미지를 반환합니다.

Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));

단계 4: 크기가 조정된 이미지 저장

마지막으로, Save 메서드를 사용하여 크기가 조정된 이미지를 파일로 저장할 수 있습니다. 이 예제에서는 크기가 조정된 이미지를 "resized.jpg"로 저장합니다. 파일 확장자(예: .jpg, .png, .bmp)를 변경하여 저장된 이미지의 형식을 선택할 수 있습니다.

resizedImage.Save("resized.jpg");

C#에서 Graphics.DrawImage() 함수를 사용하여 이미지 크기 조정하기

Graphics.DrawImage() 함수는 C#에서 지정된 위치와 크기로 이미지를 그리는 기능을 제공합니다. 이 방법을 사용하면 이미지 크기 조정에 관련된 여러 제한 사항을 제거할 수 있습니다. 다음 코드 예제는 C#에서 Graphics.DrawImage() 함수를 사용하여 이미지 크기를 조정하는 방법을 보여줍니다.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image image, int width, int height) {
      var destinationRect = new Rectangle(0, 0, width, height);
      var destinationImage = new Bitmap(width, height);

      destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

      using (var graphics = Graphics.FromImage(destinationImage)) {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;

        using (var wrapMode = new ImageAttributes()) {
          wrapMode.SetWrapMode(WrapMode.TileFlipXY);
          graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
                             GraphicsUnit.Pixel, wrapMode);
        }
      }

      return (Image)destinationImage;
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

작동 방식을 살펴보겠습니다.

단계 1: 원본 이미지 로드

먼저, Image.FromFile을 사용하여 원본 이미지를 로드해야 합니다. 자신의 이미지 파일 경로("C:\\Images\\img1.jpg")로 대체해야 합니다.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

단계 2: 대상 Bitmap 생성

조정된 이미지를 보유할 대상 Bitmap 객체를 생성합니다. SetResolution를 사용하여 대상 이미지의 해상도를 원본 이미지와 동일하게 설정합니다.

destinationImage.SetResolution() 함수은 이미지의 dpi를 실제 크기와 상관없이 유지합니다.

var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);

destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

단계 3: 이미지 크기 조정

이제, Graphics.FromImage를 사용하여 대상 Bitmap과 연결된 Graphics 개체를 얻습니다. 최상의 결과를 위해 합성 모드와 품질을 설정합니다.

using (var graphics = Graphics.FromImage(destinationImage)) {
  graphics.CompositingMode = CompositingMode.SourceCopy;
  graphics.CompositingQuality = CompositingQuality.HighQuality;

  using (var wrapMode = new ImageAttributes()) {
    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
    graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
                       wrapMode);
  }
}

graphics.CompositingMode = CompositingMode.SourceCopy 속성은 색상이 렌더링될 때 배경색을 덮어쓴다고 지정합니다.

graphics.CompositingQuality = CompositingQuality.HighQuality 속성은 고화질 이미지만 렌더링하도록 지정합니다.

wrapMode.SetWrapMode(WrapMode.TileFlipXY) 함수는 이미지 테두리 주위에 유령 효과를 방지합니다.

단계 4: 크기 조정된 이미지 저장

마지막으로, Save 메서드를 사용하여 크기가 조정된 이미지를 파일로 저장할 수 있습니다. 이 예제에서는 크기가 조정된 이미지를 "resized.jpg"로 저장합니다. 저장된 이미지의 형식은 파일 확장자(예: .jpg, .png, .bmp)를 변경하여 선택할 수 있습니다.

resizedImage.Save("resized.jpg");

결론

이미지 크기 조정은 소프트웨어 개발에서 흔한 작업이며, C#은 이를 위한 여러 가지 접근 방식을 제공합니다. 이 글에서는 Bitmap 클래스를 사용하여 이미지 크기를 조정하는 방법에 초점을 맞추었습니다. 원본 이미지를 로드하여 크기가 조정된 버전을 저장하는 전체 프로세스를 안내했습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp Image