Slå samman bilder i C#

I den här artikeln kommer du att lära dig hur du slår samman eller kombinerar flera bilder till en enda bild programmatiskt med C#. Steg-för-steg-guiden och kodexemplen visar hur man sammanfogar bilder horisontellt eller vertikalt.

C# API för att slå samman bilder - Gratis nedladdning

För att slå samman flera bilder till en enda bild kommer vi att använda Aspose.Imaging for .NET. Det är ett kraftfullt och funktionsrikt bildbehandlings-API som låter dig manipulera ett brett utbud av bildformat. Du kan antingen ladda ner API:et eller installera det med NuGet.

PM> Install-Package Aspose.Imaging

Info: Andra API:er från Aspose, särskilt Aspose.Slides for .NET, kan också tillåta dig att slå samman bilder (JPG .aspose.com/slides/net/merger/jpg-to-jpg/) eller PNG), PDFs , [HTML docs](https://products.aspose.com/slides/net/merger/html-to -html/), och filer i andra format.

Slå samman flera bilder i C#

Det finns två sätt att slå samman bilder till en enda: vertikalt och horisontellt. I den förra metoden läggs bilderna till varandra vertikalt, medan i den senare kombineras bilderna en efter en horisontellt. I följande avsnitt kommer du att lära dig båda metoderna med kodexempel.

C# Slå samman bilder vertikalt

Följande är stegen för att slå samman bilder vertikalt med C#.

  • Ange först sökvägarna för bilderna i en strängmatris.
  • Skapa sedan en lista med Size och lagra storleken på varje bild i den.
  • Beräkna höjden och bredden på den resulterande bilden.
  • Skapa ett objekt av klassen StreamSource och initiera det med en ny MemoryStream.
  • Skapa ett objekt av klassen JpegOptions och ställ in dess alternativ.
  • Instantiera klassen JpegImage för den nya bilden och initiera den med JpegOptions och beräknad höjd och bredd.
  • Iterera genom listan med bilder och ladda bilden i ett RasterImage-objekt i varje iteration.
  • Skapa en Rektangel för varje bild och lägg till den i den nya bilden med metoden JpegImage.SaveArgb32Pixels().
  • Öka stygnhöjden i varje iteration.
  • Slutligen sparar du den nya bilden med metoden JpegImage.Save(string).

Följande kodexempel visar hur man sammanfogar bilder vertikalt i C#.

// Skapa en lista med bilder
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Få den resulterande bildens storlek
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);

// Kombinera bilder till en ny
using (MemoryStream memoryStream = new MemoryStream())
{
    // Skapa utdatakälla
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // Skapa jpeg-alternativ
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    
    // Skapa utdatabild
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        // Slå ihop bilder
        foreach (string imagePath in imagePaths)
        {
            using (RasterImage image = (RasterImage)Image.Load(imagePath))
            {
                Rectangle bounds = new Rectangle(0, stitchedHeight, image.Width, image.Height);
                newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
                stitchedHeight += image.Height;
            }
        }
        
        // Spara den sammanslagna bilden
        newImage.Save("merged-image.jpg");
    }
}

Slå ihop bilder horisontellt i C#

Följande är stegen för att kombinera bilder horisontellt med C#.

  • Ange först sökvägarna för bilderna i en strängmatris.
  • Skapa sedan en lista med Size och lagra storleken på varje bild i den.
  • Beräkna höjden och bredden på den resulterande bilden.
  • Skapa en ny källa med FileCreateSource(String, Boolean) och initiera den med filens sökväg.
  • Skapa ett objekt av klassen JpegOptions och ställ in dess alternativ.
  • Instantiera klassen JpegImage för den nya bilden och initiera den med JpegOptions och beräknad höjd och bredd.
  • Iterera genom listan med bilder och ladda bilden i ett RasterImage-objekt i varje iteration.
  • Skapa en Rektangel för varje bild och lägg till den i en ny bild med metoden JpegImage.SaveArgb32Pixels().
  • Öka stygnbredden i varje iteration.
  • När du är klar, spara den nya bilden med metoden JpegImage.Save(string).

Följande kodexempel visar hur man slår ihop flera bilder horisontellt.

// Skapa en lista med bilder
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// För att skapa en tillfällig bild
string tempFilePath = "temp.jpg";

// Få den resulterande bildens storlek
List <Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Kombinera bilder till en ny
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// Skapa jpeg-alternativ
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    
    // Slå ihop bilder
    foreach (string imagePath in imagePaths)
    {
        using (RasterImage image = (RasterImage)Image.Load(imagePath))
        {
            Rectangle bounds = new Rectangle(stitchedWidth, 0, image.Width, image.Height);
            newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
            stitchedWidth += image.Width;
        }
    }
    
    // Spara den sammanslagna bilden
    newImage.Save(outputPath);
}

C# Image Merging API - Skaffa en gratis licens

Du kan få en gratis tillfällig licens och slå samman bilderna utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har du lärt dig hur du slår samman flera bilder till en enda bild med C#. Kodproverna har visat hur man kombinerar bilderna vertikalt och horisontellt. Dessutom kan du utforska mer om .NET-bildbehandlings-API:et med hjälp av dokumentation. Du kan också dela dina frågor med oss via vårt forum.

Se även

Info: Aspose tillhandahåller en GRATIS Collage-webbapp. Med den här onlinetjänsten kan du slå samman JPG till JPG eller PNG till PNG-bilder, skapa fotorutnät och så vidare.