دمج الصور في C#

في هذه المقالة ، ستتعلم كيفية دمج أو دمج صور متعددة في صورة واحدة برمجيًا باستخدام C#. سيوضح الدليل التفصيلي وعينات التعليمات البرمجية كيفية دمج الصور أفقيًا أو رأسيًا.

C# API لدمج الصور - تنزيل مجاني

من أجل دمج صور متعددة في صورة واحدة ، سنستخدم Aspose.Imaging for .NET. إنها واجهة برمجة تطبيقات معالجة صور قوية وغنية بالميزات تتيح لك معالجة مجموعة كبيرة من تنسيقات الصور. يمكنك إما تنزيل API أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.Imaging

دمج صور متعددة في C#

هناك طريقتان لدمج الصور في صورة واحدة: رأسيًا وأفقيًا. في الطريقة الأولى ، يتم إلحاق الصور ببعضها البعض عموديًا ، بينما في الطريقة الثانية ، يتم دمج الصور واحدة تلو الأخرى أفقيًا. في الأقسام التالية ، ستتعلم كلتا الطريقتين باستخدام نماذج التعليمات البرمجية.

C# دمج الصور عموديا

فيما يلي خطوات دمج الصور عموديًا باستخدام C#.

  • أولاً ، حدد مسارات الصور في مصفوفة سلسلة.
  • بعد ذلك ، أنشئ قائمة الحجم وخزن حجم كل صورة فيها.
  • احسب ارتفاع وعرض الصورة الناتجة.
  • قم بإنشاء كائن من فئة StreamSource وتهيئته باستخدام [MemoryStream] جديد 9.
  • أنشئ كائنًا من فئة JpegOptions واضبط خياراته.
  • إنشاء فئة JpegImage للصورة الجديدة وتهيئتها باستخدام JpegOptions والارتفاع والعرض المحسوبين.
  • كرر خلال قائمة الصور وفي كل تكرار ، قم بتحميل الصورة في كائن RasterImage.
  • أنشئ Rectangle لكل صورة وأضفها إلى الصورة الجديدة باستخدام طريقة JpegImage.SaveArgb32Pixels().
  • قم بزيادة الارتفاع المخيط في كل تكرار.
  • أخيرًا ، احفظ الصورة الجديدة باستخدام طريقة JpegImage.Save(string).

يوضح نموذج التعليمات البرمجية التالي كيفية دمج الصور عموديًا في C#.

// قم بإنشاء قائمة بالصور
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };

// الحصول على حجم الصورة الناتجة
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);

// دمج الصور في واحدة جديدة
using (MemoryStream memoryStream = new MemoryStream())
{
    // إنشاء مصدر الإخراج
    StreamSource outputStreamSource = new StreamSource(memoryStream);
    
    // إنشاء خيارات jpeg
    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("merged-image.jpg");
    }
}

دمج الصور أفقيًا في C#

فيما يلي خطوات دمج الصور أفقيًا باستخدام C#.

  • أولاً ، حدد مسارات الصور في مصفوفة سلسلة.
  • ثم قم بإنشاء قائمة الحجم وقم بتخزين حجم كل صورة فيها.
  • احسب ارتفاع وعرض الصورة الناتجة.
  • قم بإنشاء مصدر جديد باستخدام FileCreateSource (String، Boolean) وتهيئته باستخدام مسار الملف.
  • أنشئ كائنًا من فئة JpegOptions واضبط خياراته.
  • إنشاء فئة JpegImage للصورة الجديدة وتهيئتها باستخدام JpegOptions والارتفاع والعرض المحسوبين.
  • كرر خلال قائمة الصور وفي كل تكرار ، قم بتحميل الصورة في كائن RasterImage.
  • أنشئ Rectangle لكل صورة وأضفها إلى صورة جديدة باستخدام طريقة JpegImage.SaveArgb32Pixels().
  • قم بزيادة عرض المخيط في كل تكرار.
  • بمجرد الانتهاء من ذلك ، احفظ الصورة الجديدة باستخدام طريقة JpegImage.Save(string).

يوضح نموذج التعليمات البرمجية التالي كيفية دمج صور متعددة أفقيًا.

// قم بإنشاء قائمة بالصور
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };

// لإنشاء صورة مؤقتة
string tempFilePath = "temp.jpg";

// الحصول على حجم الصورة الناتجة
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);

// دمج الصور في واحدة جديدة
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);

// إنشاء خيارات jpeg
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);
}

C# Image Merging API - احصل على ترخيص مجاني

يمكنك الحصول على ترخيص مؤقت مجاني ودمج الصور بدون قيود تقييم.

استنتاج

في هذه المقالة ، تعلمت كيفية دمج صور متعددة في صورة واحدة باستخدام C#. أظهرت عينات الكود كيفية دمج الصور رأسيًا وأفقيًا. بالإضافة إلى ذلك ، يمكنك استكشاف المزيد حول .NET Image Processing API باستخدام التوثيق. يمكنك أيضًا مشاركة استفساراتك معنا عبر المنتدى.

أنظر أيضا

معلومات: يوفر Aspose تطبيق ويب Collage مجاني. باستخدام هذه الخدمة عبر الإنترنت ، يمكنك دمج JPG إلى JPG أو PNG إلى صور PNG ، وإنشاء شبكات صور ، وما إلى ذلك.