Heim  >  Artikel  >  Backend-Entwicklung  >  So verketten Sie Bilder horizontal in Python: Eine Kurzanleitung

So verketten Sie Bilder horizontal in Python: Eine Kurzanleitung

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 09:41:02231Durchsuche

How to Concatenate Images Horizontally in Python: A Quick Guide

Bilder horizontal mit Python verketten

Dieser Artikel befasst sich mit der Herausforderung der horizontalen Kombination mehrerer JPEG-Bilder mit Python.

Problemstellung

Stellen Sie sich ein Szenario vor, in dem drei Bilder mit den Abmessungen jeweils 148 x 95 horizontal zu einem einzigen Bild zusammengefügt werden müssen. Bei einem früheren Versuch mit dem folgenden Code sind Probleme aufgetreten:

<code class="python">import sys
from PIL import Image

list_im = ['Test1.jpg','Test2.jpg','Test3.jpg']

new_im = Image.new('RGB', (444,95))

for elem in list_im:
    for i in xrange(0,444,95):
        im=Image.open(elem)
        new_im.paste(im, (i,0))
new_im.save('test.jpg')</code>

Vorgeschlagene Lösung

Um das Problem zu beheben, wird unten ein verbesserter Code bereitgestellt:

<code class="python">import sys
from PIL import Image

images = [Image.open(x) for x in ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']]
widths, heights = zip(*(i.size for i in images))

total_width = sum(widths)
max_height = max(heights)

new_im = Image.new('RGB', (total_width, max_height))

x_offset = 0
for im in images:
  new_im.paste(im, (x_offset,0))
  x_offset += im.size[0]

new_im.save('test.jpg')</code>

Die Lösung umfasst die folgenden wichtigen Änderungen:

  • Die Verwendung von zip(*(i.size for i in images)) zur Bestimmung der Gesamtbreite und -höhe des kombinierten Bildes
  • Ersatz der problematischen verschachtelten Schleife durch eine vereinfachte Schleife, die jedes Bild in der Liste durchläuft
  • Anpassung der Einfügeposition basierend auf der Breite jedes Bildes, um versehentliche Überlappungen zu vermeiden.

Die Bestimmungen zur Vermeidung einer harten Codierung von Bildabmessungen und zur Angabe von Abmessungen in einer einzelnen Zeile (beide in den Zusatzinformationen erwähnt) sind Teil des verbesserten Codes.

Erklärung

Der aktualisierte Code berechnet zunächst die Breiten und Höhen aller Eingabebilder und verwendet diese Werte, um die Gesamtbreite und maximale Höhe des Ausgabebildes zu bestimmen.

Als nächstes wird ein leeres Bild mit den berechneten Abmessungen erstellt.

Dann durchläuft es jedes Eingabebild, fügt jedes Bild mit dem entsprechenden x-Versatz (beginnend bei 0) in das leere Bild ein und erhöht den x-Versatz nach jedem Einfügen, um Platz für das nächste Bild zu schaffen.

Schließlich wird das kombinierte Bild unter einem angegebenen Dateinamen gespeichert.

Das obige ist der detaillierte Inhalt vonSo verketten Sie Bilder horizontal in Python: Eine Kurzanleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn