Mosaikkirakenteiden luominen manuaalisesti on tylsää ja virheellistä prosessia, varsinkin kun käsitellään kymmeniä tai satoja kuvia. Tämä tehtävä tulee entistä haastavammaksi, jos tarvitset johdonmukaisuuden monissa hankkeissa tai kampanjoissa. Automaatiotyökalujen kuten Aspose.Imaging for .NETin tullessa kehittäjät voivat nyt luoda täydellisiä, toistettavissa olevia kuvan mosaikkoja vaivattomasti.

Tässä blogikirjoituksessa tutkitaan, miten automatisoida useiden kuvien yhdistämisen prosessi verkkojärjestelmään käyttämällä Aspose.Imaging for .NET. Me katamme kaiken ympäristön luomisesta ja lähdekuvien järjestämisestä uudelleenjärjestelyyn ja järjestämään ne verkkoon. Tämän oppaan lopussa sinulla on kattava ymmärrys siitä, kuinka käyttää Asposia.Imaging luoda upeita kuvan mosaikoita ohjelmattisesti.

edellytykset

Ennen sukellusta koodiin varmista, että sinulla on seuraavat edellytykset:

  • Visual Studio 2019 tai uudempi
  • .NET 6.0 tai uudempi (tai .NET Framework 4.6.2+)
  • Aspose.Imaging for .NET kohteesta NuGet

Esimerkki koodista: Automaattinen kuvan mosaikkalaatu 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>();
    }
}

Koodin ymmärtäminen

Katsotaanpa tämän täytäntöönpanon keskeiset osat:

Vaihe 1: Alkuperäinen asennus

Ensinnäkin aloitamme mittarillisen lisenssin ja lataamme sisäänkäyntitiedostot:

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

Tässä osassa luodaan tarvittavat lisenssit ja ladataan kaikki kuvat määritellystä kansiosta luetteloon.

Vaihe 2: Tuotemäärän laskeminen

Seuraavaksi laskemme tuotantokannoksen ulottuvuudet riviä ja sarakkeiden lukumäärän perusteella:

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

Tässä määritämme komposiitin kuvan leveyden ja korkeuden verkon ulottuvuuksien perusteella.

Vaihe 3: Kuvan lataaminen ja kierrätys

Nyt ladataan jokainen kuva luettelosta ja kierrätetään siihen, että se sopii verkkoon:

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

Tämä leikkaus kuvaa jokaisen kuvan ja uudistaa sen yhdenmukaiseen kokoon ennen sen asettamista verkkoon.

Vaihe 4: Kuvien järjestäminen verkossa

Laskemme sitten kunkin kuvan sijainnin verkossa ja piirrämme sen käyttämällä Graphics.DrawImage:

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

graphics.DrawImage(image, xPosition, yPosition);

Tämä osa varmistaa, että jokainen kuva sijoitetaan oikein sen indeksiin perustuvan komposiittisen kuvan sisällä.

Vaihe 5: Tallenna komposiittikuva

Lopuksi tallennamme komposiittisen kuvan määritellylle lähtömuodolle:

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

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

Tämä kappale tallentaa lopullisen mosaikan kuvan tiedostoon.

johtopäätöksiä

Tässä blogikirjoituksessa tutkittiin, miten automatisoida kuvan mosaikkojen luomisen prosessi käyttämällä Aspose.Imaging for .NET. Noudattamalla tässä oppaassa esitettyjä askeleita voit helposti luoda johdonmukaisia ja visuaalisesti houkuttelevia verkkojärjestelmiä ohjelmattisesti. Tämä lähestymistapa ei pelkästään säästää aikaa vaan myös varmistaa, että projektisi ylläpitää korkeaa laatua ja yhtenäisyyttä.

Tuntuu vapaa kokeilemaan eri konfiguraatioiden ja parannusten mukauttamiseksi ratkaisuihin omiin tarpeisiisi!

More in this category