Создание мозаичных расчётов вручную является скучным и ошибочным процессом, особенно при работе с десятками или сотнями изображений. Эта задача становится еще более сложным, если вам нужно поддерживать консистенцию по нескольким проектам или кампаниям. С появлением инструментов автоматизации, таких как 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. Следуя шагам, описанным в этом руководстве, вы можете легко создавать последовательные и визуально привлекательные сетевые расположения программатически. Этот подход не только экономит время, но и гарантирует, что ваши проекты поддерживают высокий уровень качества и последовательности.
Чувствуйте себя свободным экспериментировать с различными конфигурациями и улучшениями, чтобы адаптировать решение к вашим специфическим потребностям!