A volte abbiamo la necessità di creare un’immagine combinando più immagini JPG insieme. Questo articolo spiega come eseguire questa operazione in C#.
- API C# Imaging – Download gratuito
- Combina immagini JPG orizzontalmente in C#
- Combina immagini JPG verticalmente in C#
- Combina immagini JPG in PDF in C#
- Combina immagini JPG in PNG in C#
API C# Imaging – Download gratuito
Aspose.Imaging for .NET fornisce una serie di routine flessibili per la creazione e la manipolazione di immagini all’interno di applicazioni .NET. Ti consente di combinare file JPG in poche righe di codice. Puoi installarlo all’interno della tua applicazione .NET utilizzando NuGet o download DLL dell’API.
Install-Package Aspose.Imaging
Unisci immagini JPG orizzontalmente in C#
Di seguito sono riportati i passaggi per unire le immagini JPEG orizzontalmente in C#.
- Crea una matrice di immagini JPEG che desideri unire.
- Calcola la larghezza dell’immagine risultante aggiungendo la larghezza di tutte le immagini nell’array e l’altezza trovando l’altezza massima di un’immagine nell’array.
- Crea una nuova immagine usando la classe JpegImage e impostane la larghezza e l’altezza su quella calcolata nell’ultimo passaggio.
- Scorri l’array di immagini (che desideri unire) ed esegui le seguenti attività su ciascuna immagine:
- Carica i pixel di un’immagine usando il metodo LoadArgb32Pixels e salvali nell’immagine risultante usando il metodo SaveArgb32Pixels. Questo metodo accetta anche un oggetto Rectangle come argomento che definisce la posizione di un’immagine nell’immagine risultante.
- Salva l’immagine risultante come immagine JPEG.
L’esempio di codice seguente mostra come unire le immagini JPEG orizzontalmente in C#.
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;
// Matrice di immagini che vuoi unire.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };
// Nome del file di output/risultato.
string outputPath = "MergeImages_Horizontally.jpg";
// Ottenere la dimensione dell'immagine risultante.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
// Larghezza e altezza dell'immagine risultante
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);
// Unire le immagini in una.
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);
}
Immagini di input


Immagine di uscita

Unisci immagini JPG verticalmente in C#
I passaggi per unire le immagini JPEG verticalmente sono gli stessi di cui sopra. Una piccola differenza è che calcoliamo l’altezza dell’immagine risultante aggiungendo l’altezza di tutte le immagini nell’array e la larghezza trovando la larghezza massima di un’immagine nell’array. L’esempio di codice seguente mostra come unire le immagini JPEG verticalmente in C#.
// Una serie di immagini che vuoi unire
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };
string outputPath = "MergeImages_Vertically.jpg";
// Ottenere la dimensione dell'immagine risultante.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
// Larghezza e Altezza dell'immagine risultante
int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);
// Unire le immagini in una.
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);
}
}

Unisci immagini JPG in PDF in C#
Potrebbe essere necessario combinare le immagini JPEG in PDF. Puoi farlo semplicemente apportando una piccola modifica al metodo Image.Save (usa l’estensione .pdf invece di .jpg).
// Una serie di immagini che vuoi unire.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };
string outputPath = "MergeHorizontalAsPDF";
string tempFilePath = "temp.jpg";
// Ottenere la dimensione dell'immagine risultante.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
// Larghezza e altezza dell'immagine risultante.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);
// Unire le immagini in una.
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());
}
Unisci immagini JPG in PNG in C#
Allo stesso modo, potresti voler combinare le immagini JPEG in PNG. Come mostrato sopra, devi solo usare l’estensione .png invece di .jpg nel metodo Image.Save.
// Una serie di immagini che vuoi unire.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };
string outputPath = "MergeHorizontalAsPNG";
// Ottenere la dimensione dell'immagine risultante.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
// Larghezza e altezza dell'immagine risultante.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);
// Unire le immagini in una e salvarle come PNG
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());
}
}
Conclusione
In questo articolo, hai imparato come unire immagini JPEG in C#. Puoi combinarli orizzontalmente o verticalmente. Hai anche imparato a salvare l’immagine unita come PDF o PNG. Per ulteriori informazioni, consultare la documentazione di Aspose.Imaging per .NET. In caso di domande, non esitare a contattarci al nostro Forum di supporto.