מיזוג תמונות ב-C#

במאמר זה תלמדו כיצד למזג או לשלב מספר תמונות לתמונה אחת באופן תכנותי באמצעות C#. המדריך שלב אחר שלב ודוגמאות הקוד ידגים כיצד למזג תמונות אופקית או אנכית.

C# API למיזוג תמונות - הורדה חינם

על מנת למזג מספר תמונות לתמונה אחת, נשתמש ב-Aspose.Imaging for .NET. זהו ממשק API רב עוצמה ועשיר בתכונות לעיבוד תמונה המאפשר לך לתפעל מגוון רחב של פורמטים של תמונה. אתה יכול להוריד את ה-API או להתקין אותו באמצעות NuGet.

PM> Install-Package Aspose.Imaging

מידע: ממשקי API אחרים מבית Aspose, במיוחד Aspose.Slides for .NET, עשויים גם לאפשר לך למזג תמונות ([JPG](https://products .aspose.com/slides/net/merger/jpg-to-jpg/) או PNG), קובצי PDF , [HTML docs](https://products.aspose.com/slides/net/merger/html-to -html/), וקבצים בפורמטים אחרים.

מיזוג תמונות מרובות ב-C#

ישנן שתי דרכים למזג תמונות לאחת אחת: אנכית ואופקית. בשיטה הראשונה, התמונות מצורפות זו לזו בצורה אנכית, ואילו בשיטה השנייה, תמונות משולבות בזו אחר זו אופקית. בסעיפים הבאים, תלמד את שתי השיטות עם דוגמאות קוד.

C# מיזוג תמונות אנכית

להלן השלבים למיזוג תמונות אנכית באמצעות C#.

  • ראשית, ציין את הנתיבים של התמונות במערך מחרוזות.
  • לאחר מכן, צור רשימה של גודל ואחסן בה את הגודל של כל תמונה.
  • חשב את הגובה והרוחב של התמונה המתקבלת.
  • צור אובייקט של מחלקה StreamSource ואתחול אותו עם MemoryStream חדש.
  • צור אובייקט במחלקה 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#. דוגמאות הקוד הדגימו כיצד לשלב את התמונות אנכית ואופקית. בנוסף, תוכל לחקור עוד על ממשק ה-API לעיבוד תמונה של .NET באמצעות תיעוד. כמו כן, אתה יכול לשתף אותנו בשאילתות שלך דרך הפורום שלנו.

ראה גם

מידע: Aspose מספקת אפליקציית אינטרנט קולאז’ בחינם. באמצעות שירות מקוון זה, תוכל למזג תמונות JPG ל-JPG או PNG ל-PNG, ליצור רשתות תמונות וכן הלאה.