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 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!