Mencipta tataletak mosaik secara manual adalah proses yang membosankan dan bermasalah, terutama ketika berurusan dengan puluhan atau ratusan gambar. tugas ini menjadi lebih mencabar jika Anda perlu untuk mengekalkan konsistensi di berbagai proyek atau kampanye. Dengan kemunculan alat otomatisasi seperti Aspose.Imaging untuk .NET, pengembang sekarang dapat membuat sempurna, memulihkan image mozaik tanpa usaha.

Dalam posting blog ini, kami akan mengeksplorasi bagaimana untuk mengautomatikkan proses menggabungkan beberapa gambar ke dalam tataletak jaringan menggunakan Aspose.Imaging untuk .NET. Kami akan mencakup segala sesuatu dari menetapkan lingkungan Anda dan mengatur gambar sumber untuk resing dan menyusunnya dalam format jaringan.

Persyaratan

Sebelum menyelam ke dalam kode, pastikan Anda memiliki persyaratan berikut yang ditetapkan:

  • Visual Studio 2019 atau lebih lanjut
  • .NET 6.0 atau lebih baru (atau .Net Framework 4.6.2+)
  • Aspose.Imaging untuk .NET dari NuGet

Contoh kode: Automating Image Mosaic Layouts 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>();
    }
}

Memahami kode

Mari kita memecahkan bagian-bagian penting dari implementasi ini:

Langkah 1: Setup awal

Pertama, kami memulai lisensi yang diukur dan mengisi file input:

// 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);

Bahagian ini menyusun lisensi yang diperlukan dan memuat semua gambar dari folder tertentu ke daftar.

Langkah 2: Menghitung output canvas dimensi

Selanjutnya, kami menghitung dimensi saluran output berdasarkan jumlah baris dan kolom:

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

Di sini, kita menentukan lebar dan ketinggian gambar komposit berdasarkan dimensi grid.

Langkah 3: Mengunggah dan Resizing Gambar

Sekarang, kami memuat setiap gambar dari daftar dan mengubahnya untuk sesuai di dalam jaringan:

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);
        }
    }
}

Snippet ini memuat setiap gambar dan mengembalikannya ke ukuran seragam sebelum meletakkannya di jaringan.

Langkah 4: Mengatur gambar dalam grid

Kemudian kita menghitung posisi setiap gambar di dalam rangkaian dan menggambarnya menggunakan Graphics.DrawImage:

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

graphics.DrawImage(image, xPosition, yPosition);

Bahagian ini memastikan bahwa setiap gambar diletakkan dengan benar di dalam gambar komposit berdasarkan indeksnya.

Langkah 5: Menyelamatkan gambar komposit

Akhirnya, kami menyimpan gambar komposit ke jalur output yang ditentukan:

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

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

Snippet ini menyimpan gambar mosaik terakhir ke dalam file.

Kesimpulan

Dalam posting blog ini, kami mengeksplorasi cara mengautomatikkan proses penciptaan mosaik gambar menggunakan Aspose.Imaging untuk .NET. Dengan mengikuti langkah-langkah yang dijelaskan dalam panduan tersebut, Anda dapat dengan mudah membuat tataletak jaringan yang konsisten dan visual menarik secara programmatik. pendekatan ini tidak hanya menghemat waktu tetapi juga memastikan bahwa proyek Anda mempertahankan tingkat kualitas dan keseragaman yang tinggi.

Rasakan bebas untuk bereksperimen dengan konfigurasi dan peningkatan yang berbeda untuk menyesuaikan solusi dengan kebutuhan khusus Anda!

More in this category