이 기사에서는 C#을 사용하여 프로그래밍 방식으로 여러 이미지를 단일 이미지로 병합하거나 결합하는 방법을 배웁니다. 단계별 가이드와 코드 샘플은 이미지를 수평 또는 수직으로 병합하는 방법을 보여줍니다.
이미지 병합을 위한 C# API
여러 이미지를 단일 이미지로 병합하기 위해 Aspose.Imaging for .NET을 사용합니다. 다양한 이미지 형식을 조작할 수 있는 강력하고 기능이 풍부한 이미지 처리 API입니다. API를 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.
PM> Install-Package Aspose.Imaging
C#을 사용하여 여러 이미지 병합
이미지를 하나의 이미지로 병합하는 방법에는 세로 및 가로의 두 가지가 있습니다. 전자는 이미지를 세로로 합치는 방식이고, 후자는 가로로 합치는 방식이다. 다음 섹션에서는 코드 샘플을 사용하여 두 가지 방법을 모두 학습합니다.
수직으로 이미지 병합
다음은 C#을 사용하여 이미지를 세로로 병합하는 단계입니다.
- 먼저 string형 배열에서 이미지의 경로를 지정합니다.
- 그런 다음 크기의 목록을 만들고 각 이미지의 크기를 저장합니다.
- 결과 이미지의 높이와 너비를 계산합니다.
- StreamSource 클래스의 객체를 생성하고 새로운 MemoryStream로 초기화합니다.
- JpegOptions 클래스의 객체를 생성하고 해당 옵션을 설정합니다.
- 새 이미지에 대한 JpegImage 클래스를 인스턴스화하고 JpegOptions 및 계산된 높이 및 너비로 초기화합니다.
- 이미지 목록을 반복하고 각 반복에서 이미지를 RasterImage 개체에 로드합니다.
- 각 이미지에 대해 Rectangle을 만들고 JpegImage.SaveArgb32Pixels() 메서드를 사용하여 새 이미지에 추가합니다.
- 각 반복에서 스티치 높이를 늘립니다.
- 마지막으로 JpegImage.Save(string) 메서드를 사용하여 새 이미지를 저장합니다.
다음 코드 샘플은 이미지를 세로로 병합하는 방법을 보여줍니다.
// 이미지 목록 만들기
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };
// 결과 이미지의 크기 가져오기
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);
// 이미지를 새 이미지로 결합
using (MemoryStream memoryStream = new MemoryStream())
{
// 출력 소스 만들기
StreamSource outputStreamSource = new StreamSource(memoryStream);
// jpeg 옵션 생성
JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
// 출력 이미지 생성
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
int stitchedHeight = 0;
// 이미지 병합
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
Rectangle bounds = new Rectangle(0, stitchedHeight, image.Width, image.Height);
newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
stitchedHeight += image.Height;
}
}
// 병합된 이미지 저장
newImage.Save("merged-image.jpg");
}
}
이미지를 수평으로 병합
다음은 C#을 사용하여 이미지를 가로로 결합하는 단계입니다.
- 먼저 string형 배열에서 이미지의 경로를 지정합니다.
- 그런 다음 크기의 목록을 만들고 각 이미지의 크기를 저장합니다.
- 결과 이미지의 높이와 너비를 계산합니다.
- FileCreateSource(String, Boolean)를 이용하여 새로운 소스를 생성하고 파일의 경로로 초기화한다.
- JpegOptions 클래스의 객체를 생성하고 해당 옵션을 설정합니다.
- 새 이미지에 대한 JpegImage 클래스를 인스턴스화하고 JpegOptions 및 계산된 높이 및 너비로 초기화합니다.
- 이미지 목록을 반복하고 각 반복에서 이미지를 RasterImage 개체에 로드합니다.
- 각 이미지에 대해 Rectangle을 만들고 JpegImage.SaveArgb32Pixels() 메서드를 사용하여 새 이미지에 추가합니다.
- 각 반복에서 스티치 너비를 늘립니다.
- 완료되면 JpegImage.Save(string) 메서드를 사용하여 새 이미지를 저장합니다.
다음 코드 샘플은 여러 이미지를 가로로 병합하는 방법을 보여줍니다.
// 이미지 목록 만들기
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };
// 임시 이미지를 만들려면
string tempFilePath = "temp.jpg";
// 결과 이미지의 크기 가져오기
List <Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);
// 이미지를 새 이미지로 결합
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);
// jpeg 옵션 생성
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
int stitchedWidth = 0;
// 이미지 병합
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.Width, image.Height);
newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
stitchedWidth += image.Width;
}
}
// 병합된 이미지 저장
newImage.Save(outputPath);
}
무료 API 라이선스 받기
평가 제한 없이 API를 사용하기 위해 임시 무료 라이선스 받기를 할 수 있습니다.
결론
이 문서에서는 C#을 사용하여 여러 이미지를 단일 이미지로 병합하는 방법을 배웠습니다. 코드 샘플은 이미지를 수직 및 수평으로 결합하는 방법을 보여주었습니다. 문서를 사용하여 .NET 이미지 처리 API에 대해 자세히 알아볼 수 있습니다. 또한 포럼을 통해 질문을 공유할 수 있습니다.
또한보십시오
정보: Aspose는 무료 콜라주 웹 앱을 제공합니다. 이 온라인 서비스를 사용하여 JPG를 JPG로 또는 PNG를 PNG로 이미지를 병합하고 사진 격자 등을 만들 수 있습니다.