Ändern Sie die Bildgröße unter Beibehaltung des Seitenverhältnisses in Python
- Ändern Sie die Bildgröße unter Beibehaltung des Seitenverhältnisses in Python
- Bild zuschneiden, indem das Seitenverhältnis in Python beibehalten wird
Der Zweck dieses Python-Artikels besteht darin, zu erklären, wie wir die Größe eines Bildes in Python ändern können, während wir das Seitenverhältnis beibehalten. Die Methode zum Ändern der Größe eines Bildes in Python wird auch seine Verwendung mit einem geeigneten Beispielprogramm beschreiben.
Ändern Sie die Bildgröße unter Beibehaltung des Seitenverhältnisses in Python
In Python können Sie die Größe eines Bildes mit Hilfe einiger vordefinierter Pakete ändern. Indem Sie diese Pakete importieren und wichtige Funktionen und Methoden verwenden, können Sie die Größe eines Bildes in Python ändern, ohne das Seitenverhältnis zu verlieren.
Python Imaging Library (PIL) verwenden
Die Imaging-Bibliothek von Python, PIL
, ist eine Python-Bibliothek für Imaging.
Der Zweck eines Skripts besteht darin, systemorientierte Aufgaben zu automatisieren. Beim Skripting schreiben Sie Code für praktische Aufgaben, ohne ihn kompilieren zu müssen.
Zusätzlich zu seinen leistungsstarken Bildverarbeitungsfunktionen ist PIL
in der Lage, eine Vielzahl von Bildformaten zu verarbeiten (einschließlich BMP, DIB, EPS, GIF, ICO, IM, MSP, PCX, PNG, PPM, SGI, TGA, TIFF, WebP, XBM) und Bildmodi wie RGB, RGBA, B&W und Monochrom.
Zudem ist PIL
mit den meisten Betriebssystemen kompatibel, einschliesslich Windows, Linux und macOS.
Die Standard-GUI-Bibliothek für Python ist Tkinter
. Wenn Python mit Tkinter
kombiniert wird, können GUI-Anwendungen schnell und einfach erstellt werden.
Mit Tkinter
können Sie objektorientiert mit dem Tk GUI
-Toolkit interagieren. Wir importieren auch die PIL von Tkinter
.
Angenommen, ein Bild wurde ausgewählt. Die Größe und das Originalbild sind wie folgt.
Beispielcode:
# First, we have to import the modules here
from tkinter import *
from PIL import Image, ImageTk
# Now we are creating the object
root = Tk()
# Here, just reading the Image
image = Image.open("koala.png")
# Here now, using resize() method, resizing the image
resize_originalimage = image.resize((140, 80))
img_1 = ImageTk.PhotoImage(orgnlimg)
# creating, add resize image, and labeling it
label1 = Label(image=img_1)
label1.image = img_1
label1.pack()
# finally, executing the Tkinter
root.mainloop()
Ausgang:
Unabhängig davon, ob ein Bild auf einem Bildschirm angezeigt oder in einer Bilddatei gespeichert wird, wird es durch diskrete Pixel dargestellt. Ein Aliasing-Effekt tritt auf, wenn die Bilddaten nicht die gleiche Auflösung wie die Bildschirmdarstellung haben.
Subsampling reduziert Aliasing durch Glätten der Daten und anschließendes Subsampling der geglätteten Daten. In diesem Fall wird ANTIALIAS
verwendet.
Resampling.LANCZOS
ist eine Methode zum Interpolieren abgetasteter Daten, um neue Werte zu erzeugen. Das Verfahren wird üblicherweise bei der multivariaten Interpolation verwendet, wie z. B. beim Ändern der Größe digitaler Bilder.
Die ursprüngliche Bildgröße beträgt 284 x 606, und wir können auch den Unterschied zwischen dem Originalbild und dem in der Größe geänderten Bild erkennen, sobald der Code ausgeführt wird.
Beispielcode:
# Python Code to resize an image while maintaining the original aspect ratio, using the PIL Methods
import PIL
from PIL import Image
# setting the size of resized image
Imagewidth = 80
Imageheight = 100
img_2 = Image.open("bear.jpg")
wpercent = Imagewidth / float(img_2.size[0])
hsize = int((float(img_2.size[1]) * float(wpercent)))
# img = img.resize((mywidth,hsize), PIL.Image.ANTIALIAS)
img_2 = img_2.resize((Imagewidth, Imageheight), PIL.Image.Resampling.LANCZOS)
img_2.save("resizedImage.jpg")
img_2.show()
Das folgende ist das ursprüngliche Bild.
Ausgang:
Wenn wir den Code ausführen, sehen Sie auch das verkleinerte Bild, das im Verzeichnis mit dem Namen resizedImage.jpg
gespeichert wurde.
Bild zuschneiden, indem das Seitenverhältnis in Python beibehalten wird
Das Folgende ist die von PIL
verwendete Methode zur Größenänderung und neuen Größe, bei der das Bild beschnitten wird, anstatt die Größe zu ändern.
Beispielcode:
# Importing Image class from PIL module by maintaining its aspect ratio
from PIL import Image
# Opens an image in RGB mode
# For the external path, we use this :
# img_3 = Image.open(r"Image Path of the Original Image")
# For internal path
img_3 = Image.open("cat.png")
# The size of the image in pixels (size of the original image)
# (This is not mandatory)
width, height = img_3.size
# Setting the cropped image points
left = 4
top = height / 5
right = 154
bottom = 3 * height / 5
# Cropped image of the above dimension
# (It will not change the original image)
img_3 = img_3.crop((left, top, right, bottom))
newsize = (300, 300)
img_3 = img_3.resize(newsize)
# img_3=img_3.save(newsize)
# Shows the image in the image viewer
img_3.show()
Das folgende ist das ursprüngliche Bild.
Ausgang:
Da wir das beschnittene Bild als Ausgabe des Codes sehen, können wir davon ausgehen, dass PIL
nicht nur zum Ändern der Größe eines Bildes unter Beibehaltung des Seitenverhältnisses dient, sondern auch zum Beschneiden.
Mit Python haben wir Image.open
verwendet, um die Größe eines Bildes mit PIL
zu ändern und zu lesen und sein Seitenverhältnis beizubehalten. Nach der Berechnung der neuen Breite und Höhe haben wir die Größe des Bildes mit der Größenänderungsmethode geändert und das neue Bild mit der gleichen Methode entsprechend der neuen Breite gespeichert.
Wir hoffen, dass Sie diesen Artikel hilfreich finden, um zu verstehen, wie Sie die Größe eines Bildes in Python ändern.
My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.
LinkedIn