Створення мозаїчних розкладів вручну є сміливим і помилковим процесом, особливо при справі з десятками або сотнями зображень. Ця задача стає ще більш складною, якщо вам потрібно підтримувати консистенцію в кількох проектах або кампаніях. З приходом інструментів автоматизації, таких як Aspose.Imaging для .NET, розробники тепер можуть створювати ідеальні, повторювальні мозайки знімків без зусиль.

У цьому блозі ми розглянемо, як автоматизувати процес поєднання декількох зображень в мережеве розташування за допомогою Aspose.Imaging для .NET. Ми будемо охоплювати все від встановлення вашого середовища і організації джерельних знімків до рецидиву та розпорядження їх у мережному форматі.

Передумови

Перед посадкою в код, переконайтеся, що у вас встановлені наступні вимоги:

  • Visual Studio 2019 або пізніше
  • .NET 6.0 або пізніше (або .Net Framework 4.6.2+)
  • Aspose.Imaging для .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 для .NET. Слідкуючи за кроками, зазначеними в цьому керівництві, ви можете легко створити послідовні і візуально привабливі мережеві розташування програматично. Цей підхід не тільки заощаджує час, але і забезпечує, що ваші проекти підтримують високий рівень якості і консистенції.

Відчувайте себе вільними експериментувати з різними конфігураціями та поліпшеннями, щоб адаптувати рішення до ваших конкретних потреб!

More in this category