ادغام تصاویر در پایتون

ویرایش تصویر به شدت برای افزایش کیفیت تصاویر استفاده می شود. با ظهور دوربین های موبایل و برنامه های ویرایش تصویر، هر کاربر تلفن همراه از نحوه ویرایش یک تصویر آگاه است. در میان سایر ویژگی‌های ویرایش تصویر، ایجاد کلاژ یکی از موارد محبوب است که در آن چندین تصویر در یک تصویر واحد ترکیب می‌شوند. بنابراین در این مقاله نحوه ادغام چندین تصویر در پایتون را نشان خواهیم داد. اگر با ویرایش تصویر در برنامه پایتون خود سر و کار دارید، این می تواند برای شما مفید باشد.

کتابخانه پایتون برای ادغام تصاویر

برای ادغام چندین تصویر در یک تصویر واحد، از Aspose.Imaging for Python استفاده می کنیم. این یک کتابخانه پردازش تصویر با ویژگی های غنی است که چندین عملیات ویرایش تصویر را بدون زحمت انجام می دهد. می توانید کتابخانه را دانلود یا با استفاده از دستور زیر نصب کنید.

> pip install aspose-imaging-python-net 

ادغام چندین تصویر در پایتون

دو راه برای ادغام تصاویر وجود دارد: عمودی و افقی. شما می توانید روش مناسب را انتخاب کنید. بیایید نگاهی به نحوه ترکیب تصاویر به هر دو روش در بخش های بعدی بیاندازیم.

ادغام تصاویر به صورت افقی در پایتون

در زیر مراحل ادغام تصاویر به صورت افقی با استفاده از Aspose.Imaging برای Python آورده شده است.

  • با مشخص کردن مسیرهای تصاویر در یک آرایه شروع کنید.
  • سپس ارتفاع و عرض تصویر حاصل را محاسبه کنید.
  • یک شی از کلاس JpegOptions ایجاد کنید و گزینه های مورد نیاز را تنظیم کنید.
  • یک شی از کلاس JpegImage ایجاد کنید و آن را با شی JpegOptions و ارتفاع و عرض تصویر حاصل مقداردهی اولیه کنید.
  • در لیست تصاویر حلقه بزنید و هر تصویر را با استفاده از کلاس RasterImage بارگذاری کنید.
  • برای هر تصویر یک مستطیل ایجاد کنید و با استفاده از روش JpegImage.saveargb32pixels() آن را به تصویر حاصل اضافه کنید.
  • عرض دوخت را در هر تکرار افزایش دهید.
  • در نهایت، تصویر حاصل را با استفاده از روش JpegImage.save(string) ذخیره کنید.

در زیر کد ادغام تصاویر به صورت افقی در پایتون آمده است.

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)

در زیر تصویر خروجی است که پس از ادغام تصاویر به صورت افقی بدست آوردیم.

ادغام تصاویر به صورت افقی در پایتون

ترکیب تصاویر به صورت عمودی در پایتون

اکنون بیایید نحوه ادغام چندین تصویر را به صورت عمودی ببینیم. مراحل ادغام تصاویر به صورت عمودی مانند قسمت قبل خواهد بود. تنها تفاوت این است که ما نقش های ویژگی های ارتفاع و عرض را عوض می کنیم.

نمونه کد زیر نحوه ادغام تصاویر را در یک طرح عمودی در پایتون نشان می دهد.

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 است.

کتابخانه رایگان ادغام تصاویر پایتون را دریافت کنید

شما می توانید یک مجوز موقت رایگان دریافت کنید و تصاویر را بدون محدودیت ارزیابی ادغام کنید.

ادغام تصاویر آنلاین

همچنین می‌توانید از ابزار ادغام تصاویر رایگان ما برای ادغام آنلاین تصاویر خود استفاده کنید. این ابزار مبتنی بر Aspose.Imaging برای پایتون است و نیازی به ایجاد حساب کاربری برای آن ندارید.

نتیجه

این مقاله یکی از بهترین و ساده ترین راه حل ها را برای ادغام چندین تصویر در یک تصویر واحد در پایتون به شما ارائه کرده است. ادغام تصویر افقی و عمودی با کمک نمونه کد نشان داده شده است. علاوه بر این، یک ابزار آنلاین برای ادغام تصاویر رایگان به شما معرفی کرده ایم.

می‌توانید با مراجعه به مستندات درباره کتابخانه پردازش تصویر پایتون اطلاعات بیشتری کسب کنید. همچنین، می توانید سوالات خود را از طریق [تالار گفتمان5 ما با ما در میان بگذارید.

همچنین ببینید