Mosaik çerçeveleri manuel olarak oluşturmak, özellikle onlarca veya yüzlerce resimle uğraşırken, sıkıcı ve hataya dayalı bir süreçtir. Bu görev daha da zorlaşır, eğer birden fazla proje veya kampanya boyunca tutarlı kalmanız gerekiyorsa. Aspose.Imaging gibi otomatik araçların gelmesiyle .NET için, geliştiriciler artık mükemmel, tekrarlanabilir görüntü mozaikleri çaba sarf etmeden oluşturabilirler.

Bu blog yazısında, Aspose.Imaging için .NET kullanarak bir ağ düzenine birden fazla görüntü birleştirme sürecini nasıl otomatik hale getireceğimizi keşfedeceğiz. çevrenizi ayarlamaktan ve kaynak görüntüleri düzenlemekten ve onları ağ biçiminde yeniden düzenlemeye kadar her şeyi kaplayacağız. bu kılavuzun sonuna kadar, programlı olarak muhteşem resim mosaikleri oluşturmak için Aspos.Imaging’i nasıl kullanacağınızı kapsamlı bir anlayışa sahip olacaksınız.

Ön koşullar

Kodun içine dalmadan önce, aşağıdaki ön koşulları ayarladığınızdan emin olun:

  • Visual Studio 2019 veya sonraki
  • .NET 6.0 veya sonraki (veya .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET için NuGet

Kod Örneği: Otomatik Görüntü Mosaik Çerçeveleri C#

using System;
using System.Collections.Generic;
using System.Drawing;
using Aspose.Imaging;
using Aspose.Imaging.FileFormats;

public class ImageMosaicGenerator
{
    public static void Main(string[] args)
    {
        // Initialize metered license
        Metered metered = new Metered();
        metered.SetMeteredKey("your-public-key", "your-private-key");

        string inputFolder = @"path\to\input\images";
        int rows = 5;
        int columns = 4;

        List<string> imagePaths = GetImageFilePaths(inputFolder);
        
        // Calculate output canvas dimensions
        int totalWidth = columns * 200; // Assuming each image is resized to 200x200 pixels
        int totalHeight = rows * 200;
        
        using (Bitmap compositeImage = new Bitmap(totalWidth, totalHeight))
        {
            Graphics graphics = Graphics.FromImage(compositeImage);
            
            for (int i = 0; i < imagePaths.Count; i++)
            {
                string imagePath = imagePaths[i];
                
                // Load and resize images
                Image image = Image.Load(imagePath);
                int newWidth = 200;
                int newHeight = 200;

                if (image.VerticalResolution != 96 || image.HorizontalResolution != 96)
                {
                    image.ResizeFullFrame(newWidth, newHeight, ResizeType.Bicubic);
                }
                
                // Calculate position in grid
                int xPosition = (i % columns) * newWidth;
                int yPosition = (i / columns) * newHeight;

                graphics.DrawImage(image, xPosition, yPosition);
            }

            // Save the composite image
            string outputFilePath = @"path\to\output\mosaic.jpg";
            compositeImage.Save(outputFilePath);

            Console.WriteLine($"Mosaic layout saved to {outputFilePath}");
        }
    }

    private static List<string> GetImageFilePaths(string folderPath)
    {
        // Implement logic to get all image file paths from the specified folder
        return new List<string>();
    }
}

Kodu anlamak

Bu uygulamanın anahtar kısımlarını inceleyelim:

Adım 1: Başlangıç Yükleme

Öncelikle, ölçülen lisansı başlatıyoruz ve giriş dosyalarını yüklüyoruz:

// Initialize metered license
Metered metered = new Metered();
metered.SetMeteredKey("your-public-key", "your-private-key");

string inputFolder = @"path\to\input\images";
int rows = 5;
int columns = 4;

List<string> imagePaths = GetImageFilePaths(inputFolder);

Bu bölüm gerekli lisansları oluşturur ve belirli bir klasörden bir listeye tüm resimleri yükler.

Adım 2: Çıkış kanvas boyutları hesaplamak

Aşağıda, çıkış kanvasının boyutlarını satır ve sütun sayısına göre hesaplıyoruz:

int totalWidth = columns * 200; // Assuming each image is resized to 200x200 pixels
int totalHeight = rows * 200;

Burada, kompozit görüntü genişliğini ve yüksekliğini ağ boyutlarına dayanarak belirliyoruz.

3. Adım: Görüntüleri yüklemek ve yeniden oluşturmak

Şimdi, listeden her görüntü yüklüyoruz ve ağın içinde uyum sağlamak için yeniden düzenliyoruz:

using (Bitmap compositeImage = new Bitmap(totalWidth, totalHeight))
{
    Graphics graphics = Graphics.FromImage(compositeImage);
    
    for (int i = 0; i < imagePaths.Count; i++)
    {
        string imagePath = imagePaths[i];
        
        // Load and resize images
        Image image = Image.Load(imagePath);
        int newWidth = 200;
        int newHeight = 200;

        if (image.VerticalResolution != 96 || image.HorizontalResolution != 96)
        {
            image.ResizeFullFrame(newWidth, newHeight, ResizeType.Bicubic);
        }
    }
}

Bu kesme, her görüntüyi yükler ve ağın içine koymadan önce birleşik boyutlara dönüştürür.

Adım 4: Görüntüleri ağda düzenleyin

Ardından, ağın içindeki her görüntü konumunu hesaplıyoruz ve kullanarak çiziyoruz Graphics.DrawImage:

// Calculate position in grid
int xPosition = (i % columns) * newWidth;
int yPosition = (i / columns) * newHeight;

graphics.DrawImage(image, xPosition, yPosition);

Bu bölüm, her resmin kendi endeksine dayalı kompozit görüntü içine doğru bir şekilde yerleştirilmesini sağlar.

Adım 5: Kompozit görüntü tasarrufu

Son olarak, kompozit görüntüyü belirli bir çıkış yolu ile kaydederiz:

// Save the composite image
string outputFilePath = @"path\to\output\mosaic.jpg";
compositeImage.Save(outputFilePath);

Console.WriteLine($"Mosaic layout saved to {outputFilePath}");

Bu silindir bir dosyaya son mosaik görüntüsünü kaydeder.

Sonuç

Bu blog yazısında, Aspose.Imaging için .NET kullanarak görüntü mosaik oluşturma sürecini nasıl otomatik hale getireceğimizi keşfettik. bu kılavuzda belirtilen adımları izleyerek, tutarlı ve görsel olarak çekici ağ düzenlerini programlı olarak kolayca oluşturabilirsiniz. Bu yaklaşım sadece zaman tasarrufu yapmaz, aynı zamanda projelerinizin yüksek bir kalite ve tutarsızlık seviyesini korumalarını sağlar.

Çeşitli konfigürasyonlar ve geliştirmelerle deneyimlemek için özgür hissetmek, çözümün özel ihtiyaçlarınıza uyum sağlamak için!

More in this category