मोज़ेक लेआउट बनाना मैन्युअल रूप से एक बेवकूफ और त्रुटि-प्रेरित प्रक्रिया है, खासकर जब दर्जनों या सैकड़ों छवियों से निपटते हैं. यह कार्य यदि आपको कई परियोजनाओं या अभियानों के माध्यम से स्थिरता बनाए रखने की आवश्यकता है तो और भी अधिक चुनौतीपूर्ण हो जाता है. Aspose.Imaging जैसे स्वचालन उपकरणों की आगमन के साथ .NET के लिए, डेवलपर्स अब पूरी तरह से, पुनरावृत्ति योग्य छवि mosaics बना सकते ह.

इस ब्लॉग पोस्ट में, हम Aspose.Imaging के लिए .NET का उपयोग करके एक नेटवर्क लेआउट में कई छवियों को जोड़ने की प्रक्रिया को स्वचालित करने के तरीके का पता लगाएंगे. हम आपके पर्यावरण को स्थापित करने और स्रोत चित्रों को व्यवस्थित करने से लेकर उन्हें एक ग्रिड प्रारूप में पुनर्गठन और व्यवस्था करने तक सब कुछ कवर करेंगे. इस दिशानिर्देश के अंत तक, आपको एस्पोजेस के उपयोग के बारे में एक व्यापक समझ होग.

Prerequisites

कोड में डूबने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित आवश्यकताएं ह:

  • विज़ुअल स्टूडियो 2019 या बाद म
  • .NET 6.0 या बाद में (या .Net Framework 4.6.2+)
  • Aspose.Imaging for .NET से NuGet

कोड उदाहरण: स्वचालित छवि मोज़ेक लेआउट 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;

यहाँ, हम नेटवर्क आयामों के आधार पर संरचनात्मक छवि की चौड़ाई और ऊंचाई निर्धारित करते ह.

चरण 3: छवियों को लोड और पुनर्स्थापित कर

अब, हम सूची से प्रत्येक छवि को लोड करते हैं और इसे नेटवर्क के भीतर फिट करने के लिए रीसाइक्लिंग:

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

यह कटौती एक फ़ाइल में अंतिम मोज़ेक छवि को बचाती ह.

Conclusion

इस ब्लॉग पोस्ट में, हमने यह पता लगाया कि Aspose.Imaging के लिए .NET का उपयोग करके छवि मोज़ेक बनाने की प्रक्रिया को कैसे स्वचालित किया जाए. इस मार्गदर्शिका में वर्णित कदमों का पालन करके, आप आसानी से सतत और दृश्य रूप से आकर्षक नेटवर्क क्रमशः बना सकते हैं. यह दृष्टिकोण न केवल समय बचाता है बल्कि यह भी सुनिश्चित करता है कि आपके परियोजनाओं को उच्च गुणवत्ता और स्थिरता के स्तर को बनाए रखना ह.

अपनी विशिष्ट जरूरतों के अनुरूप समाधान को अनुकूलित करने के लिए विभिन्न सेटिंग्स और उन्नयन के साथ प्रयोग करने की स्वतंत्रता महसूस कर!

More in this category