Resimleri C# ile Birleştirme

Bu makalede, C# kullanarak programlı olarak birden çok görüntüyü tek bir görüntüde birleştirmeyi veya birleştirmeyi öğreneceksiniz. Adım adım kılavuz ve kod örnekleri, görüntülerin yatay veya dikey olarak nasıl birleştirileceğini gösterecektir.

Görüntüleri Birleştirmek için C# API’si - Ücretsiz İndirme

Birden çok görüntüyü tek bir görüntüde birleştirmek için Aspose.Imaging for .NET kullanacağız. Çok çeşitli görüntü formatlarını değiştirmenize izin veren, güçlü ve zengin özelliklere sahip bir görüntü işleme API’sidir. API’yi indirebilir veya NuGet kullanarak yükleyebilirsiniz.

PM> Install-Package Aspose.Imaging

Birden Fazla Görüntüyü C# ile Birleştirme

Görüntüleri tek bir görüntüde birleştirmenin iki yolu vardır: dikey ve yatay olarak. İlk yöntemde görüntüler dikey olarak birbirine eklenirken, ikinci yöntemde görüntüler yatay olarak birbiri ardına birleştirilir. Aşağıdaki bölümlerde, her iki yöntemi de kod örnekleriyle öğreneceksiniz.

C# Görüntüleri Dikey Olarak Birleştirme

C# kullanarak görüntüleri dikey olarak birleştirme adımları aşağıda verilmiştir.

  • İlk olarak, bir dize dizisindeki görüntülerin yollarını belirtin.
  • Ardından, bir Boyut Listesi oluşturun ve her görüntünün boyutunu bu listede saklayın.
  • Ortaya çıkan görüntünün yüksekliğini ve genişliğini hesaplayın.
  • StreamSource sınıfından bir nesne oluşturun ve onu yeni bir MemoryStream ile başlatın.
  • JpegOptions sınıfından bir nesne oluşturun ve seçeneklerini ayarlayın.
  • Yeni görüntü için JpegImage sınıfını oluşturun ve onu JpegOptions ve hesaplanan yükseklik ve genişlik ile başlatın.
  • Görüntü listesini yineleyin ve her yinelemede görüntüyü bir RasterImage nesnesine yükleyin.
  • Her görüntü için bir Dikdörtgen oluşturun ve JpegImage.SaveArgb32Pixels() yöntemini kullanarak yeni görüntüye ekleyin.
  • Her yinelemede dikiş yüksekliğini artırın.
  • Son olarak, JpegImage.Save(string) yöntemini kullanarak yeni görüntüyü kaydedin.

Aşağıdaki kod örneği, görüntülerin C# dilinde dikey olarak nasıl birleştirileceğini gösterir.

// Görüntülerin bir listesini oluşturun
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// Ortaya çıkan görüntünün boyutunu alın
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);

// Görüntüleri yenisiyle birleştirin
using (MemoryStream memoryStream = new MemoryStream())
{
    // Çıkış kaynağı oluştur
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // jpeg seçenekleri oluşturma
    JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
    
    // Çıktı görüntüsü oluştur
    using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
    {
        int stitchedHeight = 0;
        // Resimleri birleştirme
        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;
            }
        }
        
        // Birleştirilmiş görüntüyü kaydedin
        newImage.Save("merged-image.jpg");
    }
}

Resimleri Yatay Olarak C# ile Birleştirme

C# kullanarak görüntüleri yatay olarak birleştirme adımları aşağıda verilmiştir.

  • İlk olarak, bir dize dizisindeki görüntülerin yollarını belirtin.
  • Ardından, bir Boyut Listesi oluşturun ve her görüntünün boyutunu bu listede saklayın.
  • Ortaya çıkan görüntünün yüksekliğini ve genişliğini hesaplayın.
  • FileCreateSource(String, Boolean) kullanarak yeni bir kaynak oluşturun ve bunu dosyanın yolu ile başlatın.
  • JpegOptions sınıfından bir nesne oluşturun ve seçeneklerini ayarlayın.
  • Yeni görüntü için JpegImage sınıfını oluşturun ve onu JpegOptions ve hesaplanan yükseklik ve genişlik ile başlatın.
  • Görüntü listesini yineleyin ve her yinelemede görüntüyü bir RasterImage nesnesine yükleyin.
  • Her görüntü için bir Dikdörtgen oluşturun ve bunu JpegImage.SaveArgb32Pixels() yöntemini kullanarak yeni görüntüye ekleyin.
  • Her yinelemede dikişli genişliği artırın.
  • Bittiğinde, yeni görüntüyü JpegImage.Save(string) yöntemini kullanarak kaydedin.

Aşağıdaki kod örneği, birden çok görüntünün yatay olarak nasıl birleştirileceğini gösterir.

// Görüntü listesi oluştur
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// Geçici bir görüntü oluşturmak için
string tempFilePath = "temp.jpg";

// Ortaya çıkan görüntünün boyutunu alın
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);

// Görüntüleri yenisiyle birleştirin
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// jpeg seçenekleri oluşturma
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
    int stitchedWidth = 0;
    
    // Resimleri birleştirme
    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;
        }
    }
    
    // Birleştirilmiş görüntüyü kaydedin
    newImage.Save(outputPath);
}

C# Görüntü Birleştirme API’sı - Ücretsiz Lisans Alın

Ücretsiz bir geçici lisans alabilirsiniz ve değerlendirme sınırlamaları olmadan görüntüleri birleştirebilirsiniz.

Çözüm

Bu makalede, C# kullanarak birden çok görüntüyü tek bir görüntüde birleştirmeyi öğrendiniz. Kod örnekleri, görüntülerin dikey ve yatay olarak nasıl birleştirileceğini göstermiştir. Ayrıca, belgeleri kullanarak .NET görüntü işleme API’si hakkında daha fazlasını keşfedebilirsiniz. Ayrıca, sorularınızı [forumumuz] aracılığıyla bizimle paylaşabilirsiniz]26.

Ayrıca bakınız

Bilgi: Aspose bir ÜCRETSİZ Kolaj web uygulaması sağlar. Bu çevrimiçi hizmeti kullanarak, JPG’den JPG’ye veya PNG’den PNG’ye görüntüleri birleştirebilir, fotoğraf ızgaraları vb. oluşturabilirsiniz.