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
클래스를 사용하여 이미지 크기를 조정하는 방법에 초점을 맞추었습니다. 원본 이미지를 로드하여 크기가 조정된 버전을 저장하는 전체 프로세스를 안내했습니다.
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