إن إنشاء ترتيبات الموسيقى يدوياً هو عملية حزينة ومخالفة للخطأ، وخاصة عند التعامل مع عشرات أو مئات من الصور.هذه المهمة تصبح أكثر تحديًا إذا كنت بحاجة إلى الحفاظ على الاتساق عبر العديد من المشاريع أو الحملات.مع ظهور أدوات الأتمتة مثل Aspose.Imaging لـ .NET، يمكن للمطورين الآن أن يخلقوا صور موسيقية مثالية قابلة للتكرار بسهولة.

في هذا المنشور على المدونة ، سنستكشف كيفية تلقائي عملية دمج العديد من الصور في ترتيب الشبكة باستخدام Aspose.Imaging ل .NET. سنغطي كل شيء من إعداد بيئتك وتنظيم الصور المصدرية إلى إعادة تدويرها وترتيبها في شكل شبكة.

المتطلبات

قبل الغوص في الرمز، تأكد من أن لديك الشروط المسبقة التالية:

  • Visual Studio 2019 أو لاحقًا
  • .NET 6.0 أو أعلى (أو .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET من NuGet

نموذج الرمز: أوتوماتيك الصورة 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>();
    }
}

فهم الرمز

دعونا نلقي نظرة على الأجزاء الرئيسية لهذا التنفيذ:

الخطوة 1: الإعداد الأولي

أولاً، نبدأ ترخيص القياس ونحمل ملفات الإدخال:

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

يحدد هذا القسم الترخيص اللازم ويحمل جميع الصور من مجلد محدد إلى قائمة.

الخطوة 2: حساب أبعاد الخروج

فيما يلي، نقوم بحساب أبعاد قناة الإنتاج استنادا إلى عدد الصفوف والعمود:

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

هذا القطع يحمل كل صورة ويعيدها إلى حجم موحد قبل وضعها في الشبكة.

الخطوة 4: ترتيب الصور في الشبكة

ثم نقوم بحساب موقع كل صورة داخل الشبكة و رسمها باستخدام Graphics.DrawImage:

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

graphics.DrawImage(image, xPosition, yPosition);

هذا الجزء يضمن أن يتم وضع كل صورة بشكل صحيح داخل الصورة المركبة على أساس مؤشرها.

الخطوة 5: حفظ الصورة المركبة

أخيرًا ، نقوم بتخزين الصورة المركبة إلى مسار إخراج محدد:

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

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

هذا القطع ينقذ الصورة الموسيقية النهائية إلى ملف.

استنتاجات

في هذا المنشور على المدونة، استكشفنا كيفية تلقائي عملية إنشاء مصابيح الصورة باستخدام Aspose.Imaging ل .NET. من خلال اتباع الخطوات المذكورة في هذه الدليل، يمكنك بسهولة خلق ترتيب الشبكة متسقة وجذابة بصريًا ببرمجة.

تشعر بالحرية لتجربة مع مختلف الإعدادات والتحسينات لتكييف الحل لاحتياجاتك المحددة!

More in this category