Створення мозаїчних розкладів вручну є сміливим і помилковим процесом, особливо при справі з десятками або сотнями зображень. Ця задача стає ще більш складною, якщо вам потрібно підтримувати консистенцію в кількох проектах або кампаніях. З приходом інструментів автоматизації, таких як 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. Слідкуючи за кроками, зазначеними в цьому керівництві, ви можете легко створити послідовні і візуально привабливі мережеві розташування програматично. Цей підхід не тільки заощаджує час, але і забезпечує, що ваші проекти підтримують високий рівень якості і консистенції.
Відчувайте себе вільними експериментувати з різними конфігураціями та поліпшеннями, щоб адаптувати рішення до ваших конкретних потреб!