Креирање мозаичних распореда ручно је досадан и погрешан процес, посебно када се бави десетинама или стотинама слика. Овај задатак постаје још изазовнији ако морате да одржите конзистентност кроз више пројеката или кампања. Са доласком аутоматизационих алата као што је Асписе.Имање за .НЕТ, програмери сада могу да креирају савршену, понављајућу слику мозак без напора.

У овом блогу ћемо истражити како да аутоматизујемо процес спојивања више слика у распоред мреже користећи Аппосе.Имагинг за .НЕТ. Ми ћемо покрити све од постављања вашег окружења и организовање изворних слика до рецидива и распоређивања у мрежном формату.

Принципи

Пре пливања у код, уверите се да имате следеће услове постављене:

  • Визуел Студио 2019 или касније
  • .NET 6.0 или новији (или .Net Framework 4.6.2+)
  • Aspose.Imaging za .NET od NuGet

Пример кода: Аутоматизација слике Мозаик распореде Ц#

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>();
    }
}

Razumeti kodeks

Хајде да прекинемо кључне делове ове имплементације:

Корак 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}");

Овај снимак сачува коначну мозаичну слику у датотеку.

Закључак

У овом чланку на блогу, истражили смо како да аутоматизујемо процес креирања мозаика слике користећи Аппосе.Имагинг за .НЕТ. Следећи кораке наведене у овом водичу, лако можете програмирати конзистентне и визуелно атрактивне распореде мреже. Овај приступ не само да штеди време, већ и осигурава да ваши пројекти одржавају висок ниво квалитета и консистенције.

Осећајте се слободним да експериментишете са различитим конфигурацијама и побољшањима како бисте прилагодили решење вашим специфичним потребама!

More in this category