Bazen birden fazla JPG görselini birleştirerek bir görsel oluşturma ihtiyacı duyarız. Bu makalede bunun C#’ta nasıl yapılacağı açıklanmaktadır.

C# Görüntüleme API’si – Ücretsiz İndirin

Aspose.Imaging for .NET, .NET uygulamaları içinde görüntüler oluşturmak ve değiştirmek için bir dizi esnek rutin sağlar. JPG dosyalarını birkaç satır kodda birleştirmenize olanak tanır. NuGet veya download API’nin DLL’sini kullanarak .NET uygulamanıza kurulmasını sağlayabilirsiniz.

Install-Package Aspose.Imaging

C#’ta JPG Görüntülerini Yatay Olarak Birleştirme

C#’ta JPEG görüntülerini yatay olarak birleştirme adımları aşağıda verilmiştir.

  • Birleştirmek istediğiniz bir dizi JPEG görüntüsü oluşturun.
  • Dizideki tüm görüntülerin genişliğini ve dizideki bir görüntünün maksimum yüksekliğini bularak yüksekliği toplayarak elde edilen görüntünün genişliğini hesaplayın.
  • JpegImage sınıfını kullanarak yeni bir görüntü oluşturun ve genişliğini ve yüksekliğini son adımda hesaplanana ayarlayın.
  • Görüntü dizisini yineleyin (birleştirmek istiyorsunuz) ve her görüntü üzerinde aşağıdaki görevleri gerçekleştirin:
    • LoadArgb32Pixels yöntemini kullanarak bir görüntünün piksellerini yükleyin ve bunları SaveArgb32Pixels yöntemini kullanarak elde edilen görüntüye kaydedin. Bu yöntem ayrıca, elde edilen görüntüdeki görüntünün konumunu tanımlayan bir argüman olarak bir Rectangle nesnesini alır.
  • Ortaya çıkan görüntüyü JPEG görüntüsü olarak kaydedin.

Aşağıdaki kod örneği, C#’ta JPEG görüntülerinin yatay olarak nasıl birleştirileceğini gösterir.

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;

// Birleştirmek istediğiniz görsel dizisi.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

// Çıktı/sonuç dosyasının adı.
string outputPath = "MergeImages_Horizontally.jpg";

// Ortaya çıkan görüntü boyutunun elde edilmesi.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Ortaya çıkan görüntünün genişliği ve yüksekliği
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Görüntüleri tek bir görüntüde birleştirme.
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);
}

Giriş Resimleri

Çıkış Görüntüsü

C#’ta JPG Görüntülerini Dikey Olarak Birleştirme

JPEG görüntülerini dikey olarak birleştirme adımları yukarıdakiyle aynıdır. Küçük bir fark, ortaya çıkan görüntünün yüksekliğini dizideki tüm görüntülerin yüksekliğini toplayarak, genişliği ise dizideki bir görüntünün maksimum genişliğini bularak hesaplamamızdır. Aşağıdaki kod örneği, C#’ta JPEG görüntülerinin dikey olarak nasıl birleştirileceğini gösterir.

// Birleştirmek istediğiniz bir dizi resim
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

string outputPath = "MergeImages_Vertically.jpg";

// Ortaya çıkan görüntü boyutunun elde edilmesi.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Ortaya çıkan görüntünün Genişliği ve Yüksekliği
int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);

// Görüntüleri tek bir görüntüde birleştirme.
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);
    }
}

C#’ta JPG Görüntülerini PDF’ye Birleştirme

JPEG görüntülerini PDF olarak birleştirmeniz gerekebilir. Bunu, Image.Save yönteminde küçük bir değişiklik yaparak yapabilirsiniz (.jpg yerine .pdf uzantısını kullanın).

// Birleştirmek istediğiniz bir dizi resim.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

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

// Ortaya çıkan görüntü boyutunun elde edilmesi.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Ortaya çıkan görüntünün genişliği ve yüksekliği.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Görüntüleri tek bir görüntüde birleştirme.
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());
}

C# dilinde JPG Görüntülerini PNG ile birleştirme

Benzer şekilde, JPEG görüntülerini PNG olarak birleştirmek isteyebilirsiniz. Yukarıda gösterildiği gibi Image.Save yönteminde .jpg yerine .png uzantısını kullanmanız yeterlidir.

// Birleştirmek istediğiniz bir dizi resim.
string[] imagePaths = { "Image1.jpeg", "Image2.jpg" };

string outputPath = "MergeHorizontalAsPNG";

// Ortaya çıkan görüntü boyutunun elde edilmesi.
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
    using (RasterImage image = (RasterImage)Image.Load(imagePath))
    {
        imageSizes.Add(image.Size);
    }
}

// Ortaya çıkan görüntünün genişliği ve yüksekliği.
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);

// Görüntüleri tek bir görüntüde birleştirme ve PNG olarak kaydetme
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());
    }
}

Çözüm

Bu makalede C#’ta JPEG görüntülerin nasıl birleştirileceğini öğrendiniz. Bunları yatay veya dikey olarak birleştirebilirsiniz. Ayrıca birleştirilmiş görüntüyü PDF veya PNG olarak nasıl kaydedeceğinizi de öğrendiniz. Daha fazla bilgi için lütfen Aspose.Imaging for .NET’in belgelerini inceleyin. Herhangi bir sorunuz varsa lütfen Destek Forumumuz adresinden bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız