수동으로 모자이크 레이아웃을 만드는 것은, 특히 수십 또는 수백 개의 이미지를 다루는 경우에 어리석고 오류가 발생하는 과정입니다.이 작업은 여러 프로젝트 또는 캠페인을 통해 일관성을 유지할 필요가 있다면 더욱 어려워집니다. Aspose.Imaging for .NET과 같은 자동화 도구의 출현으로 개발자는 이제 완벽하고 반복 가능한 이미지 모자를 쉽게 만들 수 있습니다.

이 블로그 게시물에서 우리는 Aspose.Imaging을 사용하여 여러 이미지를 네트워크 레이아웃에 결합하는 과정을 자동화하는 방법을 탐구 할 것입니다 .NET. 우리는 당신의 환경을 설정하고 출처 이미지의 조직에서 그들을 재설정하고 네드 형식으로 배치하는 모든 것을 다루게 될 것입니다.이 가이드의 끝에, 당신은 Asposa.Imaging를 사용 하는 방법에 대한 포괄적 인 이해가있을 것입니다 놀라운 이미지 모자이크를 프로그래밍적으로 만들 수 있습니다.

원칙

코드에 몰입하기 전에 다음과 같은 조건이 설정되어 있는지 확인하십시오 :

  • Visual Studio 2019 또는 이후
  • ** .NET 6.0 또는 이후 (또는 .Net Framework 4.6.2+)**
  • Aspose.Imaging for .NET 에서 NuGet

코드 예: 자동화 이미지 모자이크 레이아웃 C#

using System;
using System.Collections.Generic;
using System.Drawing;
using Aspose.Imaging;
using Aspose.Imaging.FileFormats;

public class ImageMosaicGenerator
{
    public static void Main(string[] args)
    {
        // Initialize metered license
        Metered metered = new Metered();
        metered.SetMeteredKey("your-public-key", "your-private-key");

        string inputFolder = @"path\to\input\images";
        int rows = 5;
        int columns = 4;

        List<string> imagePaths = GetImageFilePaths(inputFolder);
        
        // Calculate output canvas dimensions
        int totalWidth = columns * 200; // Assuming each image is resized to 200x200 pixels
        int totalHeight = rows * 200;
        
        using (Bitmap compositeImage = new Bitmap(totalWidth, totalHeight))
        {
            Graphics graphics = Graphics.FromImage(compositeImage);
            
            for (int i = 0; i < imagePaths.Count; i++)
            {
                string imagePath = imagePaths[i];
                
                // Load and resize images
                Image image = Image.Load(imagePath);
                int newWidth = 200;
                int newHeight = 200;

                if (image.VerticalResolution != 96 || image.HorizontalResolution != 96)
                {
                    image.ResizeFullFrame(newWidth, newHeight, ResizeType.Bicubic);
                }
                
                // Calculate position in grid
                int xPosition = (i % columns) * newWidth;
                int yPosition = (i / columns) * newHeight;

                graphics.DrawImage(image, xPosition, yPosition);
            }

            // Save the composite image
            string outputFilePath = @"path\to\output\mosaic.jpg";
            compositeImage.Save(outputFilePath);

            Console.WriteLine($"Mosaic layout saved to {outputFilePath}");
        }
    }

    private static List<string> GetImageFilePaths(string folderPath)
    {
        // Implement logic to get all image file paths from the specified folder
        return new List<string>();
    }
}

코드를 이해하는 방법

우리는이 구현의 핵심 부분을 분해 할 것입니다 :

단계 1 : 초기 설정

먼저, 우리는 측정 된 라이센스를 시작하고 입력 파일을 충전합니다 :

// Initialize metered license
Metered metered = new Metered();
metered.SetMeteredKey("your-public-key", "your-private-key");

string inputFolder = @"path\to\input\images";
int rows = 5;
int columns = 4;

List<string> imagePaths = GetImageFilePaths(inputFolder);

이 섹션은 필요한 라이센스를 작성하고 지정된 폴더에서 모든 이미지를 목록으로 업로드합니다.

단계 2 : 출력 캔버스 크기를 계산

다음으로, 우리는 라인과 열의 수를 기반으로 출력 캔버스의 차원을 계산합니다 :

int totalWidth = columns * 200; // Assuming each image is resized to 200x200 pixels
int totalHeight = rows * 200;

여기서, 우리는 네트워크 차원에 따라 복합 이미지의 폭과 높이를 결정합니다.

단계 3 : 사진을 업로드하고 재시작

이제 우리는 목록에서 각 이미지를 업로드하고 네트워크 내에서 맞게 재시작합니다 :

using (Bitmap compositeImage = new Bitmap(totalWidth, totalHeight))
{
    Graphics graphics = Graphics.FromImage(compositeImage);
    
    for (int i = 0; i < imagePaths.Count; i++)
    {
        string imagePath = imagePaths[i];
        
        // Load and resize images
        Image image = Image.Load(imagePath);
        int newWidth = 200;
        int newHeight = 200;

        if (image.VerticalResolution != 96 || image.HorizontalResolution != 96)
        {
            image.ResizeFullFrame(newWidth, newHeight, ResizeType.Bicubic);
        }
    }
}

이 스니프트는 각각의 이미지를 충전하고 그것을 네트워크에 넣기 전에 동일한 크기로 재구성합니다.

단계 4 : 네트워크에서 이미지를 배치

우리는 그 다음 네트워크 내의 각 이미지의 위치를 계산하고 그것을 사용하여 그린다. Graphics.DrawImage:

// Calculate position in grid
int xPosition = (i % columns) * newWidth;
int yPosition = (i / columns) * newHeight;

graphics.DrawImage(image, xPosition, yPosition);

이 부분은 각 이미지가 그것의 지표를 바탕으로 복합 이미지 내에 올바르게 배치되도록 보장합니다.

5단계: 복합 이미지를 저장하는 방법

마지막으로, 우리는 지정된 출력 경로에 복합 이미지를 저장합니다 :

// Save the composite image
string outputFilePath = @"path\to\output\mosaic.jpg";
compositeImage.Save(outputFilePath);

Console.WriteLine($"Mosaic layout saved to {outputFilePath}");

이 스니프트는 마지막 모자이크 이미지를 파일에 저장합니다.

결론

이 블로그 게시물에서 우리는 Aspose.Imaging for .NET을 사용하여 이미지 모자이크를 만드는 과정을 자동화하는 방법을 탐구했습니다.이 가이드에 명시된 단계를 따르면 일관되고 시각적으로 매력적인 네트워크 레이아웃을 쉽게 프로그래밍 할 수 있습니다.

당신의 특정 요구에 맞게 솔루션을 조정하기 위해 다양한 구성 및 향상으로 실험 할 수있는 자유롭게 느끼십시오.

More in this category