دمج الصور في بايثون

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

مكتبة بايثون لدمج الصور

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

> pip install aspose-imaging-python-net 

دمج عدة صور في بايثون

هناك طريقتان لدمج الصور: رأسيًا وأفقيًا. يمكنك اختيار الطريقة المناسبة. دعنا نلقي نظرة على كيفية دمج الصور في كلا الاتجاهين في الأقسام التالية.

دمج الصور أفقيًا في بايثون

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

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

يوجد أدناه رمز دمج الصور أفقيًا في Python.

import aspose.pycore as aspycore
from aspose.imaging import Image, Rectangle, RasterImage
from aspose.imaging.imageoptions import JpegOptions
from aspose.imaging.sources import FileCreateSource
from aspose.imaging.fileformats.jpeg import JpegImage
import os

# حدد المجلدات
if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
image_paths = [os.path.join(data_dir, "template.jpg"), 
			   os.path.join(data_dir, "template.jpeg")]
output_path = os.path.join(data_dir, "result.jpg")
temp_file_path = os.path.join(data_dir, "temp.jpg")

# الحصول على حجم الصورة الناتج
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# احسب الحجم الجديد
new_width = 0
new_height = 0
for size in image_sizes:
	new_width += size.width
	new_height = max(new_height, size.height)
	
# دمج الصور في واحدة جديدة
temp_file_source = FileCreateSource(temp_file_path, delete_output)
with JpegOptions() as options:
	options.source = temp_file_source
	options.quality = 100
	with aspycore.as_of(Image.create(options, new_width, new_height), JpegImage) as new_image:
		stitched_width = 0
		for image_path in image_paths:
			with aspycore.as_of(Image.load(image_path), RasterImage) as image:
				bounds = Rectangle(stitched_width, 0, image.width, image.height)
				new_image.save_argb_32_pixels(bounds, image.load_argb_32_pixels(image.bounds))
				stitched_width += image.width
		new_image.save(output_path)

# احذف الملفات المؤقتة
if delete_output:
	os.remove(output_path)
	if os.path.exists(temp_file_path):
		os.remove(temp_file_path)

يوجد أدناه صورة الإخراج التي حصلنا عليها بعد دمج الصور أفقيًا.

دمج الصور أفقيًا في بايثون

دمج الصور عموديًا في Python

دعنا الآن نرى كيفية دمج صور متعددة عموديًا. ستكون خطوات دمج الصور عموديًا هي نفسها كما في القسم السابق. الاختلاف الوحيد هو أننا سنبادل أدوار خصائص الارتفاع والعرض.

يوضح نموذج التعليمات البرمجية التالي كيفية دمج الصور في تخطيط عمودي في Python.

import aspose.pycore as aspycore
from aspose.imaging import Image, Rectangle, RasterImage
from aspose.imaging.imageoptions import JpegOptions
from aspose.imaging.sources import StreamSource
from aspose.imaging.fileformats.jpeg import JpegImage
from aspose.imaging.extensions import StreamExtensions
import os
import functools

# تحديد المجلدات
if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
image_paths = [os.path.join(data_dir, "template.jpg"), os.path.join(data_dir, "template.jpeg")]
output_path = os.path.join(data_dir, "result.jpg")
temp_file_path = os.path.join(data_dir, "temp.jpg")

# الحصول على حجم الصورة الناتج
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# احسب الحجم الجديد
new_width = 0
new_height = 0
for size in image_sizes:
	new_height += size.height
	new_width = max(new_width, size.width)
	
# دمج الصور في واحدة جديدة
with StreamExtensions.create_memory_stream() as memory_stream:
	output_stream_source = StreamSource(memory_stream)
	with JpegOptions() as options:
		options.source = output_stream_source
		options.quality = 100
		with aspycore.as_of(Image.create(options, new_width, new_height), JpegImage) as new_image:
			stitched_height = 0
			for image_path in image_paths:
				with aspycore.as_of(Image.load(image_path), RasterImage) as image:
					bounds = Rectangle(0, stitched_height, image.width, image.height)
					new_image.save_argb_32_pixels(bounds, image.load_argb_32_pixels(image.bounds))
					stitched_height += image.height

			new_image.save(output_path)

# احذف الملفات المؤقتة
if delete_output:
	os.remove(output_path)

تُظهر الصورة التالية ناتج دمج صورتين متشابهتين عموديًا.

دمج الصور عموديًا في بايثون

دمج صور PNG في بايثون

كانت الخطوات ونماذج التعليمات البرمجية المتوفرة في الأقسام السابقة مخصصة لدمج صور JPG ، ومع ذلك ، قد تحتاج إلى دمج صور PNG أيضًا. لا داعى للقلق. نفس الخطوات ونموذج الكود صالحان لصور PNG وسيكون التغيير الوحيد هو استخدام فئتي PngImage و PngOptions بدلاً من JpegImage و JpegOptions ، على التوالي.

احصل على مكتبة دمج صور Python مجانية

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

دمج الصور عبر الإنترنت

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

خاتمة

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

يمكنك استكشاف المزيد حول مكتبة معالجة صور Python من خلال زيارة التوثيق. يمكنك أيضًا مشاركة استفساراتك معنا عبر المنتدى.

أنظر أيضا