Python'da Görüntüleri Birleştirme

Görüntü düzenleme, görüntülerin kalitesini artırmak için son derece kullanılır. Mobil kameraların ve görüntü düzenleme uygulamalarının ortaya çıkmasıyla, her mobil kullanıcı bir görüntüyü nasıl düzenleyeceğinin farkındadır. Diğer görüntü düzenleme özelliklerinin yanı sıra, kolaj oluşturmak, birden çok görüntünün tek bir görüntüde birleştirildiği popüler bir yöntemdir. Bu yazıda, Python’da birden çok görüntünün nasıl birleştirileceğini göstereceğiz. Python uygulamanızda görüntü düzenleme ile uğraşıyorsanız, bu sizin için yararlı olabilir.

Görüntüleri Birleştirmek İçin Python Kitaplığı

Birden çok görüntüyü tek bir görüntüde birleştirmek için Aspose.Imaging for Python kullanacağız. Çeşitli görüntü düzenleme işlemlerini zahmetsizce gerçekleştirmek için zengin özelliklere sahip bir görüntü işleme kitaplığıdır. Aşağıdaki komutu kullanarak kitaplığı indirebilir veya kurabilirsiniz.

> pip install aspose-imaging-python-net 

Python’da Birden Çok Görüntüyü Birleştirme

Görüntüleri birleştirmenin iki yolu vardır: dikey ve yatay olarak. Uygun yöntemi seçebilirsiniz. Aşağıdaki bölümlerde görüntülerin her iki şekilde nasıl birleştirileceğine bir göz atalım.

Python’da Görüntüleri Yatay Olarak Birleştirme

Aspose.Imaging for Python kullanarak görüntüleri yatay olarak birleştirme adımları aşağıdadır.

  • Bir dizideki görüntülerin yollarını belirleyerek başlayın.
  • Ardından, elde edilen görüntünün yüksekliğini ve genişliğini hesaplayın.
  • JpegOptions sınıfından bir nesne oluşturun ve gerekli seçenekleri ayarlayın.
  • JpegImage sınıfından bir nesne oluşturun ve onu JpegOptions nesnesi ve elde edilen görüntünün yüksekliği ve genişliği ile başlatın.
  • Resim listesinde dolaşın ve RasterImage sınıfını kullanarak her bir resmi yükleyin.
  • Her görüntü için bir Dikdörtgen oluşturun ve JpegImage.saveargb32pixels() yöntemini kullanarak ortaya çıkan görüntüye ekleyin.
  • Her yinelemede dikişli genişliği artırın.
  • Son olarak, ortaya çıkan görüntüyü JpegImage.save(string) yöntemini kullanarak kaydedin.

Python’da görüntüleri yatay olarak birleştirme kodu aşağıdadır.

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

# Klasörleri tanımlayın
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")

# Ortaya çıkan görüntü boyutunu al
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Yeni boyutu hesapla
new_width = 0
new_height = 0
for size in image_sizes:
	new_width += size.width
	new_height = max(new_height, size.height)
	
# Görüntüleri yenisiyle birleştirin
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)

# Geçici dosyaları sil
if delete_output:
	os.remove(output_path)
	if os.path.exists(temp_file_path):
		os.remove(temp_file_path)

Görselleri yatay olarak birleştirdikten sonra elde ettiğimiz çıktı görseli aşağıdadır.

Python'da Görüntüleri Yatay Olarak Birleştirme

Python’da Görüntüleri Dikey Olarak Birleştirin

Şimdi birden çok görüntüyü dikey olarak nasıl birleştireceğimizi görelim. Görüntüleri dikey olarak birleştirme adımları önceki bölümdeki ile aynı olacaktır. Tek fark, yükseklik ve genişlik özelliklerinin rollerini değiştireceğimizdir.

Aşağıdaki kod örneği, Python’da dikey bir düzende görüntülerin nasıl birleştirileceğini gösterir.

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

# Klasörleri tanımlayın
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")

# Ortaya çıkan görüntü boyutunu al
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Yeni boyutu hesapla
new_width = 0
new_height = 0
for size in image_sizes:
	new_height += size.height
	new_width = max(new_width, size.width)
	
# Görüntüleri yenisiyle birleştirin
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)

# Geçici dosyaları sil
if delete_output:
	os.remove(output_path)

Aşağıdaki görsel iki benzer görselin dikey olarak birleştirilmesinin çıktısını göstermektedir.

Python'da Görüntüleri Dikey Olarak Birleştirme

PNG Görüntülerini Python’da Birleştirme

Önceki bölümlerde verilen adımlar ve kod örnekleri, JPG görüntülerini birleştirmek içindi, ancak PNG görüntülerini de birleştirmeniz gerekebilir. Endişelenmeye gerek yok. Aynı adımlar ve kod örneği PNG görüntüleri için de geçerlidir ve tek değişiklik sırasıyla JpegImage ve JpegOptions yerine PngImage ve PngOptions sınıflarının kullanılması olacaktır.

Ücretsiz Python Görüntü Birleştirme Kitaplığı Alın

Ücretsiz bir geçici lisans alabilirsiniz ve değerlendirme sınırlamaları olmadan görüntüleri birleştirebilirsiniz.

Görüntüleri Çevrimiçi Birleştirme

Görüntülerinizi çevrimiçi olarak birleştirmek için ücretsiz görüntü birleştirme aracımızı de kullanabilirsiniz. Bu araç Aspose.Imaging for Python tabanlıdır ve bunun için bir hesap oluşturmanız gerekmez.

Çözüm

Bu makale size Python’da birden çok görüntüyü tek bir görüntüde birleştirmek için en iyi ve en basit çözümlerden birini sağladı. Yatay ve dikey görüntü birleştirme kod örnekleri yardımıyla gösterilmiştir. Ek olarak, görüntüleri ücretsiz olarak birleştirmek için çevrimiçi bir araçla tanıştırdık.

Belgeleri ziyaret ederek Python görüntü işleme kitaplığı hakkında daha fazlasını keşfedebilirsiniz. Ayrıca sorularınızı forumumuz aracılığıyla bizimle paylaşabilirsiniz.

Ayrıca bakınız