Manchmal müssen wir ein Bild erstellen, indem wir mehrere JPG-Bilder miteinander kombinieren. In diesem Artikel wird erläutert, wie Sie dies in C# tun.

C#-Imaging-API – kostenloser Download

Aspose.Imaging for .NET bietet eine Reihe flexibler Routinen zum Erstellen und Bearbeiten von Bildern in .NET-Anwendungen. Damit können Sie JPG-Dateien in wenigen Codezeilen kombinieren. Sie können es entweder in Ihrer .NET-Anwendung installieren, indem Sie NuGet oder die DLL der API herunterladen verwenden.

Install-Package Aspose.Imaging

JPG-Bilder horizontal in C# zusammenführen

Im Folgenden sind die Schritte zum horizontalen Zusammenführen von JPEG-Bildern in C# aufgeführt.

  • Erstellen Sie ein Array von JPEG-Bildern, die Sie zusammenführen möchten.
  • Berechnen Sie die Breite des resultierenden Bildes, indem Sie die Breite aller Bilder im Array und die Höhe addieren, indem Sie die maximale Höhe eines Bildes im Array ermitteln.
  • Erstellen Sie ein neues Bild mit der Klasse JpegImage und legen Sie seine Breite und Höhe auf die im letzten Schritt berechnete fest.
  • Iterieren Sie über das Array von Bildern (die Sie zusammenführen möchten) und führen Sie die folgenden Aufgaben für jedes Bild aus:
    • Laden Sie Pixel eines Bildes mit der Methode LoadArgb32Pixels und speichern Sie sie im resultierenden Bild mit der Methode SaveArgb32Pixels. Diese Methode akzeptiert auch ein Rectangle-Objekt als Argument, das die Position eines Bilds im resultierenden Bild definiert.
  • Speichern Sie das resultierende Bild als JPEG-Bild.

Das folgende Codebeispiel zeigt, wie JPEG-Bilder in C# horizontal verbunden werden.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Aspose.Imaging;
using Aspose.Imaging.FileFormats.Jpeg;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.Sources;

// Array von Bildern, die Sie zusammenführen möchten.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

// Name der Ausgabe-/Ergebnisdatei.
string outputPath = "MergeImages_Horizontally.jpg";

// Erhalten der resultierenden Bildgröße.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Breite und Höhe des resultierenden Bildes
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Bilder zu einem zusammenfügen.
Source tempFileSource = new FileCreateSource("temp.jpg", isTemporal: true);
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    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;
        }
    }

    newImage.Save(outputPath);
}

Bilder eingeben

Ausgabebild

JPG-Bilder vertikal in C# zusammenführen

Die Schritte zum vertikalen Zusammenführen von JPEG-Bildern sind die gleichen wie oben. Ein kleiner Unterschied besteht darin, dass wir die Höhe des resultierenden Bildes berechnen, indem wir die Höhe aller Bilder im Array addieren, und die Breite, indem wir die maximale Breite eines Bildes im Array ermitteln. Das folgende Codebeispiel zeigt, wie JPEG-Bilder in C# vertikal verbunden werden.

// Ein Array von Bildern, die Sie zusammenführen möchten
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

string outputPath = "MergeImages_Vertically.jpg";

// Erhalten der resultierenden Bildgröße.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Breite und Höhe des resultierenden Bildes
int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);

// Bilder zu einem zusammenfügen.
using (MemoryStream memoryStream = new MemoryStream())
{
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        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;
            }
        }

        newImage.Save(outputPath);
    }
}

Zusammenführen von JPG-Bildern in PDF in C#

Möglicherweise müssen Sie die JPEG-Bilder zu PDF kombinieren. Sie können dies tun, indem Sie nur eine kleine Änderung in der Methode Image.Save vornehmen (verwenden Sie die Erweiterung .pdf anstelle von .jpg).

// Ein Array von Bildern, die Sie zusammenführen möchten.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

string outputPath = "MergeHorizontalAsPDF";
string tempFilePath = "temp.jpg";

// Erhalten der resultierenden Bildgröße.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Breite und Höhe des resultierenden Bildes.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Bilder zu einem zusammenfügen.
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    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;
        }
    }

    newImage.Save(outputPath + ".pdf", new PdfOptions());
}

Zusammenführen von JPG-Bildern in PNG in C#

Ebenso möchten Sie vielleicht die JPEG-Bilder in PNG kombinieren. Wie oben gezeigt, müssen Sie nur die Erweiterung .png anstelle von .jpg in der Methode Image.Save verwenden.

// Ein Array von Bildern, die Sie zusammenführen möchten.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

string outputPath = "MergeHorizontalAsPNG";

// Erhalten der resultierenden Bildgröße.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Breite und Höhe des resultierenden Bildes.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Bilder zu einem zusammenführen und als PNG speichern
using (MemoryStream memoryStream = new MemoryStream())
{
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedWidth = 0;
        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;
            }
        }

        newImage.Save(outputPath + ".png", new PngOptions());
    }
}

Fazit

In diesem Artikel haben Sie gelernt, wie Sie JPEG-Bilder in C# verbinden. Sie können sie entweder horizontal oder vertikal kombinieren. Sie haben auch gelernt, wie Sie das zusammengeführte Bild als PDF oder PNG speichern. Weitere Informationen finden Sie in der Dokumentation von Aspose.Imaging für .NET. Wenn Sie Fragen haben, können Sie sich gerne unter unser Support-Forum an uns wenden.

Siehe auch