Bilder in Python zusammenführen

Die Bildbearbeitung wird immens eingesetzt, um die Qualität der Bilder zu verbessern. Mit dem Aufkommen mobiler Kameras und Bildbearbeitungs-Apps weiß jeder mobile Benutzer, wie er ein Bild bearbeitet. Neben anderen Bildbearbeitungsfunktionen ist das Erstellen von Collagen eine beliebte Methode, bei der mehrere Bilder zu einem einzigen Bild kombiniert werden. In diesem Artikel zeigen wir Ihnen, wie Sie mehrere Bilder in Python zusammenführen. Dies könnte für Sie nützlich sein, wenn Sie sich mit der Bildbearbeitung in Ihrer Python-Anwendung befassen.

Python Bibliothek zum Zusammenführen von Bildern

Um mehrere Bilder zu einem einzigen Bild zusammenzuführen, verwenden wir Aspose.Imaging for Python. Es handelt sich um eine funktionsreiche Bildverarbeitungsbibliothek, mit der Sie mehrere Bildbearbeitungsvorgänge mühelos durchführen können. Sie können die Bibliothek entweder herunterladen oder mit dem folgenden Befehl installieren.

> pip install aspose-imaging-python-net 

Mehrere Bilder in Python zusammenführen

Es gibt zwei Möglichkeiten, Bilder zusammenzuführen: vertikal und horizontal. Sie können die geeignete Methode wählen. Schauen wir uns in den folgenden Abschnitten an, wie man Bilder auf beide Arten kombiniert.

Bilder horizontal in Python zusammenführen

Nachfolgend finden Sie die Schritte zum horizontalen Zusammenführen der Bilder mit Aspose.Imaging for Python.

  • Geben Sie zunächst die Pfade der Bilder in einem Array an.
  • Berechnen Sie dann die Höhe und Breite des resultierenden Bildes.
  • Erstellen Sie ein Objekt der JpegOptions Klasse und legen Sie die erforderlichen Optionen fest.
  • Erstellen Sie ein Objekt der JpegImage Klasse und initialisieren Sie es mit dem JpegOptions Objekt sowie der Höhe und Breite des resultierenden Bildes.
  • Durchlaufen Sie die Liste der Bilder und laden Sie jedes Bild mithilfe der RasterImage Klasse.
  • Erstellen Sie für jedes Bild ein Rechteck und fügen Sie es mit der Methode JpegImage.saveargb32pixels() zum resultierenden Bild hinzu.
  • Erhöhen Sie die Stichbreite in jeder Iteration.
  • Speichern Sie abschließend das resultierende Bild mit der Methode JpegImage.save(string).

Unten finden Sie den Code zum horizontalen Zusammenführen von Bildern in 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

# Definieren Sie die Ordner
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")

# Erhalten Sie die resultierende Bildgröße
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Neue Größe berechnen
new_width = 0
new_height = 0
for size in image_sizes:
	new_width += size.width
	new_height = max(new_height, size.height)
	
# Kombinieren Sie Bilder zu einem neuen
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)

# Temporäre Dateien löschen
if delete_output:
	os.remove(output_path)
	if os.path.exists(temp_file_path):
		os.remove(temp_file_path)

Unten sehen Sie das Ausgabebild, das wir nach dem horizontalen Zusammenführen der Bilder erhalten haben.

Bilder horizontal in Python zusammenführen

Kombinieren Sie Bilder vertikal in Python

Sehen wir uns nun an, wie man mehrere Bilder vertikal zusammenfügt. Die Schritte zum vertikalen Zusammenführen von Bildern wären die gleichen wie im vorherigen Abschnitt. Der einzige Unterschied besteht darin, dass wir die Rollen der Höhen und Breiteneigenschaften vertauschen würden.

Das folgende Codebeispiel zeigt, wie man Bilder in einem vertikalen Layout in Python zusammenführt.

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

# Ordner definieren
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")

# Erhalten Sie die resultierende Bildgröße
image_sizes = []
for image_path in image_paths:
	with Image.load(image_path) as image:
		image_sizes.append(image.size)

# Neue Größe berechnen
new_width = 0
new_height = 0
for size in image_sizes:
	new_height += size.height
	new_width = max(new_width, size.width)
	
# Kombinieren Sie Bilder zu einem neuen
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)

# Temporäre Dateien löschen
if delete_output:
	os.remove(output_path)

Das folgende Bild zeigt die Ausgabe der vertikalen Zusammenführung zweier ähnlicher Bilder.

Bilder vertikal in Python zusammenführen

PNG bilder in Python zusammenführen

Die in den vorherigen Abschnitten bereitgestellten Schritte und Codebeispiele dienten dem Zusammenführen von JPG bildern. Möglicherweise müssen Sie jedoch auch PNG bilder zusammenführen. Kein Grund zur Sorge. Die gleichen Schritte und Codebeispiele gelten für PNG bilder und die einzige Änderung wäre die Verwendung der Klassen PngImage und PngOptions anstelle von JpegImage bzw. JpegOptions.

Holen Sie sich die kostenlose Python Bibliothek zum Zusammenführen von Bildern

Sie können eine kostenlose temporäre Lizenz erwerben und die Bilder ohne Einschränkungen bei der Auswertung zusammenführen.

Bilder online zusammenführen

Sie können auch unser kostenloses Tool zum Zusammenführen von Bildern verwenden, um Ihre Bilder online zusammenzuführen. Dieses Tool basiert auf Aspose.Imaging for Python und Sie müssen dafür kein Konto erstellen.

Abschluss

Dieser Artikel lieferte Ihnen eine der besten und einfachsten Lösungen zum Zusammenführen mehrerer Bilder zu einem einzigen Bild in Python. Die horizontale und vertikale Bildzusammenführung wird anhand von Codebeispielen demonstriert. Darüber hinaus haben wir Ihnen ein Online-Tool zum kostenlosen Zusammenführen von Bildern vorgestellt.

Weitere Informationen zur Python bildverarbeitungsbibliothek finden Sie in der Dokumentation. Sie können uns Ihre Fragen auch über unser Forum mitteilen.

Siehe auch