Злиття зображень у C#

У цій статті ви дізнаєтесь, як об’єднати або об’єднати кілька зображень в одне програмним способом за допомогою C#. Покрокове керівництво та зразки коду продемонструють, як об’єднати зображення горизонтально чи вертикально.

C# API для об’єднання зображень – Безкоштовне завантаження

Щоб об’єднати кілька зображень в одне, ми використаємо Aspose.Imaging for .NET. Це потужний і багатофункціональний API для обробки зображень, який дозволяє працювати з широким діапазоном форматів зображень. Ви можете завантажити API або встановити його за допомогою NuGet.

PM> Install-Package Aspose.Imaging

Інформація: інші API від Aspose, особливо Aspose.Slides for .NET, також можуть дозволяти об’єднувати зображення (JPG .aspose.com/slides/net/merger/jpg-to-jpg/) або PNG), PDF-файли , [HTML-документи](https://products.aspose.com/slides/net/merger/html-to -html/), а також файли в інших форматах.

Об’єднання кількох зображень у C#

Є два способи об’єднання зображень в одне: вертикальне і горизонтальне. У першому методі зображення додаються одне до одного по вертикалі, а в другому – зображення об’єднуються одне за одним по горизонталі. У наступних розділах ви ознайомитеся з обома методами зі зразками коду.

C# Вертикальне злиття зображень

Нижче наведено кроки для вертикального об’єднання зображень за допомогою C#.

  • Спочатку вкажіть шляхи зображень у масиві рядків.
  • Потім створіть список Розмір і збережіть у ньому розмір кожного зображення.
  • Обчисліть висоту та ширину отриманого зображення.
  • Створіть об’єкт класу StreamSource та ініціалізуйте його новим MemoryStream.
  • Створіть об’єкт класу JpegOptions і встановіть його параметри.
  • Створіть екземпляр класу JpegImage для нового зображення та ініціалізуйте його за допомогою JpegOptions і обчисленої висоти та ширини.
  • Переглядайте список зображень і в кожній ітерації завантажуйте зображення в об’єкт RasterImage.
  • Створіть прямокутник для кожного зображення та додайте його до нового зображення за допомогою методу JpegImage.SaveArgb32Pixels().
  • Збільшуйте висоту шва в кожній ітерації.
  • Нарешті, збережіть нове зображення за допомогою методу JpegImage.Save(string).

У наведеному нижче прикладі коду показано, як об’єднати зображення вертикально в C#.

// Створіть список зображень
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Отримайте розмір отриманого зображення
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);

// Об’єднайте зображення в одне
using (MemoryStream memoryStream = new MemoryStream())
{
    // Створити джерело виводу
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // Створіть параметри jpeg
    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("merged-image.jpg");
    }
}

Об’єднання зображень по горизонталі в C#

Нижче наведено кроки для об’єднання зображень по горизонталі за допомогою C#.

  • Спочатку вкажіть шляхи зображень у масиві рядків.
  • Потім створіть список Розмір і збережіть у ньому розмір кожного зображення.
  • Обчисліть висоту та ширину отриманого зображення.
  • Створіть нове джерело за допомогою FileCreateSource(String, Boolean) та ініціалізуйте його шляхом до файлу.
  • Створіть об’єкт класу JpegOptions і встановіть його параметри.
  • Створіть екземпляр класу JpegImage для нового зображення та ініціалізуйте його за допомогою JpegOptions і обчисленої висоти та ширини.
  • Переглядайте список зображень і в кожній ітерації завантажуйте зображення в об’єкт RasterImage.
  • Створіть прямокутник для кожного зображення та додайте його до нового зображення за допомогою методу JpegImage.SaveArgb32Pixels().
  • Збільшуйте ширину шва в кожній ітерації.
  • Після цього збережіть нове зображення за допомогою методу JpegImage.Save(string).

У наведеному нижче прикладі коду показано, як об’єднати кілька зображень по горизонталі.

// Створіть список зображень
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// Для створення тимчасового зображення
string tempFilePath = "temp.jpg";

// Отримайте розмір отриманого зображення
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);

// Об’єднайте зображення в одне
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// Створіть параметри jpeg
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);
}

C# Image Merging API - Отримайте безкоштовну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію і об’єднати зображення без обмежень оцінки.

Висновок

У цій статті ви дізналися, як об’єднати кілька зображень в одне за допомогою C#. Зразки коду продемонстрували, як комбінувати зображення по вертикалі та горизонталі. Крім того, ви можете дізнатися більше про API обробки зображень .NET за допомогою документації. Крім того, ви можете поділитися своїми запитами з нами через наш форум.

Дивись також

Інформація: Aspose надає БЕЗКОШТОВНУ веб-програму Collage. Використовуючи цей онлайн-сервіс, ви можете об’єднувати зображення JPG в JPG або PNG у PNG, створювати фотосітки тощо.