Sloučit obrázky v C#

V tomto článku se dozvíte, jak sloučit nebo kombinovat více obrázků do jednoho obrázku programově pomocí C#. Podrobný průvodce a ukázky kódu demonstrují, jak sloučit obrázky vodorovně nebo svisle.

C# API pro sloučení obrázků – ke stažení zdarma

Abychom sloučili více obrázků do jednoho obrázku, použijeme Aspose.Imaging for .NET. Jedná se o výkonné a na funkce bohaté rozhraní API pro zpracování obrázků, které vám umožňuje manipulovat s širokou škálou formátů obrázků. API si můžete buď stáhnout, nebo jej nainstalovat pomocí NuGet.

PM> Install-Package Aspose.Imaging

Informace: Další rozhraní API od společnosti Aspose, zejména Aspose.Slides for .NET, vám také mohou umožnit slučování obrázků ([JPG](https://products .aspose.com/slides/net/merger/jpg-to-jpg/) nebo PNG), PDF , [HTML dokumenty](https://products.aspose.com/slides/net/merger/html-to -html/) a soubory v jiných formátech.

Sloučit více obrázků v C#

Existují dva způsoby, jak sloučit obrázky do jednoho: vertikálně a horizontálně. V první metodě jsou obrázky připojeny k sobě vertikálně, zatímco v druhé jsou obrázky kombinovány jeden po druhém horizontálně. V následujících částech se seznámíte s oběma metodami s ukázkami kódu.

C# Sloučit obrázky vertikálně

Následují kroky pro vertikální sloučení obrázků pomocí C#.

  • Nejprve zadejte cesty k obrázkům v poli řetězců.
  • Poté vytvořte seznam Velikost a uložte do něj velikost každého obrázku.
  • Vypočítejte výšku a šířku výsledného obrázku.
  • Vytvořte objekt třídy StreamSource a inicializujte jej pomocí nového MemoryStream.
  • Vytvořte objekt třídy JpegOptions a nastavte jeho možnosti.
  • Vytvořte instanci třídy JpegImage pro nový obrázek a inicializujte jej pomocí JpegOptions a vypočítané výšky a šířky.
  • Iterujte seznam obrázků a v každé iteraci načtěte obrázek do objektu RasterImage.
  • Vytvořte Rectangle pro každý obrázek a přidejte jej do nového obrázku pomocí metody JpegImage.SaveArgb32Pixels().
  • Zvyšte výšku šití v každé iteraci.
  • Nakonec nový obrázek uložte pomocí metody JpegImage.Save(string).

Následující ukázka kódu ukazuje, jak sloučit obrázky vertikálně v C#.

// Vytvořte seznam obrázků
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Získejte výslednou velikost obrázku
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);

// Spojte obrázky do nového
using (MemoryStream memoryStream = new MemoryStream())
{
    // Vytvořte výstupní zdroj
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // Vytvořte možnosti jpeg
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    
    // Vytvořte výstupní obrázek
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        // Sloučit obrázky
        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;
            }
        }
        
        // Uložte sloučený obrázek
        newImage.Save("merged-image.jpg");
    }
}

Sloučit obrázky vodorovně v C#

Následují kroky pro horizontální kombinování obrázků pomocí C#.

  • Nejprve zadejte cesty k obrázkům v poli řetězců.
  • Poté vytvořte seznam Velikost a uložte do něj velikost každého obrázku.
  • Vypočítejte výšku a šířku výsledného obrázku.
  • Vytvořte nový zdroj pomocí FileCreateSource(String, Boolean) a inicializujte jej s cestou k souboru.
  • Vytvořte objekt třídy JpegOptions a nastavte jeho možnosti.
  • Vytvořte instanci třídy JpegImage pro nový obrázek a inicializujte jej pomocí JpegOptions a vypočítané výšky a šířky.
  • Iterujte seznam obrázků a v každé iteraci načtěte obrázek do objektu RasterImage.
  • Vytvořte Rectangle pro každý obrázek a přidejte jej do nového obrázku pomocí metody JpegImage.SaveArgb32Pixels().
  • Zvětšete šířku šití v každé iteraci.
  • Po dokončení uložte nový obrázek pomocí metody JpegImage.Save(string).

Následující ukázka kódu ukazuje, jak vodorovně sloučit více obrázků.

// Vytvořte seznam obrázků
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// Chcete-li vytvořit dočasný obrázek
string tempFilePath = "temp.jpg";

// Získejte výslednou velikost obrázku
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);

// Spojte obrázky do nového
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// Vytvořte možnosti jpeg
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    
    // Sloučit obrázky
    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;
        }
    }
    
    // Uložte sloučený obrázek
    newImage.Save(outputPath);
}

C# Image Merging API – Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a sloučit obrázky bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak sloučit více obrázků do jednoho obrázku pomocí C#. Ukázky kódu ukázaly, jak kombinovat obrázky vertikálně a horizontálně. Kromě toho můžete prozkoumat více o rozhraní API pro zpracování obrázků .NET pomocí dokumentace. Své dotazy s námi můžete sdílet také prostřednictvím našeho fóra.

Viz také

Informace: Aspose poskytuje bezplatnou webovou aplikaci Collage. Pomocí této online služby můžete sloučit obrázky JPG do JPG nebo PNG do PNG, vytvářet mřížky fotografií a tak dále.