Bilder in C# zusammenführen

In diesem Artikel erfahren Sie, wie Sie mehrere Bilder programmgesteuert mit C# zu einem einzigen Bild zusammenführen oder kombinieren. Die Schritt-für-Schritt-Anleitung und die Codebeispiele zeigen, wie Sie Bilder horizontal oder vertikal zusammenführen.

C# API zum Zusammenführen von Bildern

Um mehrere Bilder zu einem einzigen Bild zusammenzuführen, verwenden wir Aspose.Imaging for .NET. Es ist eine leistungsstarke und funktionsreiche Bildverarbeitungs-API, mit der Sie eine Vielzahl von Bildformaten bearbeiten können. Sie können die API entweder herunterladen oder sie mit NuGet installieren.

PM> Install-Package Aspose.Imaging

Mehrere Bilder mit C# zusammenführen

Es gibt zwei Möglichkeiten, Bilder zu einem einzigen zusammenzuführen: vertikal und horizontal. Bei ersterem Verfahren werden die Bilder vertikal aneinander angehängt, während bei letzterem Bilder horizontal nacheinander kombiniert werden. In den folgenden Abschnitten lernen Sie beide Methoden anhand von Codebeispielen kennen.

Bilder vertikal zusammenführen

Im Folgenden finden Sie die Schritte zum vertikalen Zusammenführen von Bildern mithilfe von C#.

  • Geben Sie zunächst die Pfade der Bilder in einem String-Array an.
  • Erstellen Sie dann eine Liste mit Größe und speichern Sie die Größe jedes Bildes darin.
  • Berechnen Sie die Höhe und Breite des resultierenden Bildes.
  • Erstellen Sie ein Objekt der Klasse StreamSource und initialisieren Sie es mit einem neuen MemoryStream.
  • Erstellen Sie ein Objekt der Klasse JpegOptions und legen Sie seine Optionen fest.
  • Instanziieren Sie die Klasse JpegImage für das neue Bild und initialisieren Sie es mit JpegOptions und der berechneten Höhe und Breite.
  • Durchlaufen Sie die Liste der Bilder und laden Sie bei jeder Iteration das Bild in ein RasterImage objekt.
  • Erstellen Sie für jedes Bild ein Rectangle und fügen Sie es mit der methode JpegImage.SaveArgb32Pixels() zum neuen Bild hinzu.
  • Erhöhen Sie die gestickte Höhe in jeder Iteration.
  • Speichern Sie schließlich das neue Bild mit der methode JpegImage.Save(string).

Das folgende Codebeispiel zeigt, wie Bilder vertikal zusammengeführt werden.

// Erstellen Sie eine Liste mit Bildern
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Holen Sie sich die Größe des resultierenden Bildes
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);

// Kombinieren Sie Bilder zu neuen
using (MemoryStream memoryStream = new MemoryStream())
{
    // Ausgabequelle erstellen
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // Erstellen Sie JPEG-Optionen
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    
    // Ausgabebild erstellen
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        // Bilder zusammenführen
        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;
            }
        }
        
        // Speichern Sie das zusammengeführte Bild
        newImage.Save("merged-image.jpg");
    }
}

Bilder horizontal zusammenführen

Im Folgenden sind die Schritte zum horizontalen Kombinieren von Bildern mit C# aufgeführt.

  • Geben Sie zunächst die Pfade der Bilder in einem String-Array an.
  • Erstellen Sie dann eine Liste mit Größe und speichern Sie die Größe jedes Bildes darin.
  • Berechnen Sie die Höhe und Breite des resultierenden Bildes.
  • Erstellen Sie eine neue Quelle mit FileCreateSource(String, Boolean) und initialisieren Sie sie mit dem Pfad der Datei.
  • Erstellen Sie ein Objekt der Klasse JpegOptions und legen Sie seine Optionen fest.
  • Instanziieren Sie die Klasse JpegImage für das neue Bild und initialisieren Sie es mit JpegOptions und der berechneten Höhe und Breite.
  • Durchlaufen Sie die Liste der Bilder und laden Sie bei jeder Iteration das Bild in ein RasterImage objekt.
  • Erstellen Sie für jedes Bild ein Rechteck und fügen Sie es mit der methode JpegImage.SaveArgb32Pixels() zum neuen Bild hinzu.
  • Erhöhen Sie die gestickte Breite in jeder Iteration.
  • Wenn Sie fertig sind, speichern Sie das neue Bild mit der methode JpegImage.Save(string).

Das folgende Codebeispiel zeigt, wie mehrere Bilder horizontal zusammengeführt werden.

// Bildliste erstellen
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// So erstellen Sie ein temporäres Image
string tempFilePath = "temp.jpg";

// Holen Sie sich die Größe des resultierenden Bildes
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);

// Kombinieren Sie Bilder zu neuen
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// Erstellen Sie JPEG-Optionen
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    
    // Bilder zusammenführen
    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;
        }
    }
    
    // Speichern Sie das zusammengeführte Bild
    newImage.Save(outputPath);
}

Holen Sie sich eine kostenlose API Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die API ohne Evaluierungseinschränkungen zu verwenden.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mehrere Bilder mit C# zu einem einzigen Bild zusammenführen. Die Codebeispiele haben gezeigt, wie die Bilder vertikal und horizontal kombiniert werden. Weitere Informationen zur .NET Bildverarbeitungs-API finden Sie in Dokumentation. Außerdem können Sie uns Ihre Fragen über unser Forum mitteilen.

Siehe auch

Info: Aspose bietet eine KOSTENLOSE Collage-Web-App. Mit diesem Onlinedienst können Sie JPG zu JPG oder PNG zu PNG Bildern zusammenführen, Fotoraster erstellen und so weiter.