في هذه المقالة ، ستتعلم كيفية دمج أو دمج صور متعددة في صورة واحدة برمجيًا باستخدام 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 باستخدام التوثيق. يمكنك أيضًا مشاركة استفساراتك معنا عبر المنتدى.
أنظر أيضا
- تحويل الصور إلى تدرج الرمادي في C#
- أضف علامة مائية إلى الصور باستخدام C#
- ضغط صور PNG و JPEG و TIFF باستخدام C#
معلومات: يوفر Aspose تطبيق ويب Collage مجاني. باستخدام هذه الخدمة عبر الإنترنت ، يمكنك دمج JPG إلى JPG أو PNG إلى صور PNG ، وإنشاء شبكات صور ، وما إلى ذلك.