Cambiar el tamaño de la imagen manteniendo su relación de aspecto en Python
- Cambiar el tamaño de la imagen manteniendo su relación de aspecto en Python
- Recortar imagen manteniendo su relación de aspecto en Python
El propósito de este artículo de Python es explicar cómo podemos cambiar el tamaño de una imagen en Python manteniendo su relación de aspecto. El método para cambiar el tamaño de una imagen en Python también describirá su uso con un programa de ejemplo adecuado.
Cambiar el tamaño de la imagen manteniendo su relación de aspecto en Python
En Python, puede cambiar el tamaño de una imagen con la ayuda de algunos paquetes predefinidos. Al importar esos paquetes y usar funciones y métodos importantes, puede cambiar el tamaño de una imagen en Python sin perder su relación de aspecto.
Utilice la biblioteca de imágenes de Python (PIL)
La biblioteca de imágenes de Python, PIL
, es una biblioteca de Python para imágenes.
El propósito de un script es automatizar tareas orientadas al sistema. Scripting es cuando escribe código para tareas prácticas sin necesidad de compilarlo.
Además de sus poderosas capacidades de procesamiento de imágenes, PIL
es capaz de manejar una amplia variedad de formatos de imagen (incluidos BMP, DIB, EPS, GIF, ICO, IM, MSP, PCX, PNG, PPM, SGI, TGA, TIFF, WebP, XBM) y modos de imagen como RGB, RGBA, B&W y monocromo.
Además, PIL
es compatible con la mayoría de los sistemas operativos, incluidos Windows, Linux y macOS.
La biblioteca GUI estándar para Python es Tkinter
. Cuando Python se combina con Tkinter
, las aplicaciones GUI se pueden crear rápida y fácilmente.
Con Tkinter
, puede interactuar con el conjunto de herramientas Tk GUI
de forma orientada a objetos. También importamos el PIL de Tkinter
.
Supongamos que se ha elegido una imagen. El tamaño y la imagen original son los siguientes.
Código de ejemplo:
# 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()
Producción:
Ya sea que una imagen se muestre en una pantalla o se almacene en un archivo de imagen, se representa mediante píxeles discretos. Se produce un efecto de alias cuando los datos de la imagen no tienen la misma resolución que la representación de la pantalla.
El submuestreo reduce el alias suavizando los datos y luego submuestreando los datos suavizados. En este caso se utiliza ANTIALIAS
.
Resampling.LANCZOS
es un método de interpolación de datos muestreados para producir nuevos valores. El método se usa comúnmente en la interpolación multivariante, como cambiar el tamaño de las imágenes digitales.
El tamaño de la imagen original es 284 x 606, y también podremos distinguir la diferencia entre la imagen original y la imagen redimensionada una vez que se ejecute el código.
Código de ejemplo:
# 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()
La siguiente es la imagen original.
Producción:
Cuando ejecutamos el código, también puede ver la imagen redimensionada, que se guardó en el directorio con el nombre resizedImage.jpg
.
Recortar imagen manteniendo su relación de aspecto en Python
El siguiente es el método de cambio de tamaño y nuevo tamaño utilizado desde PIL
, recortando la imagen en lugar de cambiar su tamaño.
Código de ejemplo:
# 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()
La siguiente es la imagen original.
Producción:
Dado que vemos la imagen recortada como una salida del código, podemos suponer que PIL
no es solo para cambiar el tamaño de una imagen manteniendo su relación de aspecto, sino también para recortar.
Con Python, usamos Image.open
para cambiar el tamaño y leer una imagen usando PIL
y mantener su relación de aspecto. Después de calcular el nuevo ancho y alto, cambiamos el tamaño de la imagen usando el método de cambio de tamaño y guardamos la nueva imagen usando el mismo método de acuerdo con el nuevo ancho.
Esperamos que este artículo le resulte útil para comprender cómo cambiar el tamaño de una imagen en Python.
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