A mozaik elrendezések kézi létrehozása unalmas és hibás folyamat, különösen, ha több tucat vagy több száz képet foglalkozik. Ez a feladat még kihívóbbvá válik, amennyiben több projekt vagy kampány következetességének megőrzésére van szükség. Az automatizálási eszközök megjelenésével, mint az Aspose.Imaging .NET, a fejlesztők most tökéletes, ismétlődő képmózákat hozhatnak létre erőfeszítés nélkül.

Ebben a blogbejegyzésben meg fogjuk vizsgálni, hogyan lehet automatizálni a több kép összekapcsolásának folyamatát egy hálózati elrendezéshez Aspose.Imaging for .NET használatával.Mindent fedünk fel a környezet beállításától és a forráskódképek szervezésétől a hálózatformátumban való újratervezésig és rendezéséig.Ebben az útmutatóban átfogó megértést kapunk arról, hogy hogyan kell használni az ASPOSE-t a csodálatos képmózák programozásához.

előfeltételek

Mielőtt a kódba merülne, győződjön meg róla, hogy a következő előfeltételek vannak beállítva:

  • Visual Studio 2019 vagy később
  • .NET 6.0 vagy újabb (vagy .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET a NuGet-ről

Kód példa: Automatizálása kép Mosaic Layouts 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>();
    }
}

A kódex megértése

Vegyük le a végrehajtás kulcsfontosságú részét:

1. lépés: kezdeti beállítás

Először kezdeményezzük a mérhető licencet, és feltöltjük a beviteli fájlokat:

// 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);

Ez a szakasz összeállítja a szükséges licenceket, és feltölti az összes képet egy meghatározott mappából egy listába.

2. lépés: A kanvasok kimenetelének kiszámítása

Következésképpen kiszámítjuk a kimeneti csövek dimenzióit a sorok és oszlopok száma alapján:

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

Itt meghatározzuk a kompozit kép szélességét és magasságát a hálózati dimenziók alapján.

3. lépés: A képek feltöltése és átirányítása

Most minden képet feltöltünk a listából, és átirányítjuk, hogy megfeleljen a hálózaton belül:

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

Ez a vágás minden képet feltölti, és egyenletes méretre helyezi, mielőtt a hálózatba helyezné.

4. lépés: Képek elrendezése a hálózatban

Ezután kiszámítjuk az egyes képek pozícióját a hálózaton belül, és rajzoljuk azt Graphics.DrawImage:

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

graphics.DrawImage(image, xPosition, yPosition);

Ez a rész biztosítja, hogy az egyes képek megfelelően helyezkedjenek el az index alapján a kompozit képbe.

5. lépés: A kompozit kép megőrzése

Végül a kompozit képet egy meghatározott kimeneti útvonalra mentjük:

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

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

Ez a vágás mentse az utolsó mozaik képet egy fájlra.

következtetések

Ebben a blogbejegyzésben felfedeztük, hogyan lehet automatizálni a képmózák létrehozásának folyamatát az Aspose.Imaging for .NET használatával.Ebben az útmutatóban felsorolt lépéseket követve könnyedén programozottan alkothat következetes és vizuálisan vonzó hálózati elrendezéseket.A megközelítés nemcsak időt takarít meg, hanem biztosítja, hogy a projektek magas színvonalú minőséget és következetességet tartanak fenn.

Érezze magát ingyenes kísérletezni a különböző konfigurációkkal és fejlesztésekkel, hogy a megoldást az Ön speciális igényeihez igazítsa!

More in this category