Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich mit PIL die Größe von Bildern ändern und dabei das Seitenverhältnis beibehalten?

Wie kann ich mit PIL die Größe von Bildern ändern und dabei das Seitenverhältnis beibehalten?

Linda Hamilton
Freigeben: 2024-12-13 17:23:10
Original
310 Leute haben es durchsucht

How Can I Resize Images with PIL While Maintaining Aspect Ratio?

Ändern der Größe von Bildern mit PIL unter Beibehaltung des Seitenverhältnisses

Die Python Imaging Library (PIL) bietet einen umfassenden Satz an Bildbearbeitungsfunktionen. Ein nützlicher Vorgang ist die Größenänderung von Bildern, aber viele Entwickler stehen vor der Herausforderung, das ursprüngliche Seitenverhältnis beizubehalten. Dieser Artikel befasst sich mit diesem Problem und bietet Lösungen, um eine proportionale Bildgrößenänderung sicherzustellen.

Problem

Beim Versuch, Miniaturansichten zu erstellen, ist ein Benutzer auf die folgende Herausforderung gestoßen:

Ist das Problem vorhanden? Ein offensichtlicher Weg, dies zu tun, den ich vermisse? Ich versuche nur, Miniaturansichten zu erstellen.

Lösung

Um die Größe eines Bildes unter Beibehaltung des Seitenverhältnisses zu ändern, beachten Sie die folgenden Schritte:

  1. Bestimmen Maximale Abmessungen: Legen Sie eine maximale Breite und Höhe für Ihr Miniaturbild fest. Diese Werte definieren die gewünschte Ausgabegröße.
  2. Größenänderungsverhältnis berechnen: Berechnen Sie das Größenänderungsverhältnis, indem Sie die maximale Breite durch die Originalbreite und die maximale Höhe durch die Originalhöhe dividieren. Das kleinere dieser Verhältnisse gewährleistet eine proportionale Größenänderung.
  3. Neue Größe berechnen: Bestimmen Sie die neue Größe des Bildes, indem Sie die Originalgröße mit dem berechneten Größenänderungsverhältnis multiplizieren.
  4. PIL-Bibliotheksmethode: PIL bietet einen vereinfachten Ansatz durch die Image.thumbnail-Methode. Bei dieser Methode wird das Bild direkt geändert, daher wird empfohlen, bei Bedarf eine Kopie zu erstellen:
import os, sys
from PIL import Image

size = 128, 128  # Define the maximum size of the thumbnail

for infile in sys.argv[1:]:
    outfile = os.path.splitext(infile)[0] + ".thumbnail"  # Generate the output filename
    if infile != outfile:
        try:
            im = Image.open(infile)
            im_copy = im.copy()  # Create a copy to avoid modifying the original image
            im_copy.thumbnail(size, Image.Resampling.LANCZOS)  # Resize the image
            im_copy.save(outfile, "JPEG")  # Save the resized image
        except IOError:
            print(f"cannot create thumbnail for '{infile}'")  # Handle any exceptions
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mit PIL die Größe von Bildern ändern und dabei das Seitenverhältnis beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage