PIL es la biblioteca de imágenes de Python que proporciona al intérprete de Python capacidades de edición de imágenes. Fue desarrollado por Fredrik Lundh y varios otros colaboradores. Pillow es la bifurcación amigable de PIL y una biblioteca fácil de usar desarrollada por Alex Clark y otros colaboradores. Estaremos trabajando con Pillow.
Instalación:
- Linux: En la terminal de Linux escriba lo siguiente:
pip install Pillow
Instalación de pip a través de la terminal:
sudo apt-get update sudo apt-get install python-pip
- Windows: descargue el paquete de Pillow adecuado según su versión de python. Asegúrese de descargar de acuerdo con la versión de python que tenga.
Aquí trabajaremos con el módulo de imagen que proporciona una clase del mismo nombre y proporciona muchas funciones para trabajar en nuestras imágenes. Para importar el módulo de imagen, nuestro código debe comenzar con la siguiente línea:
from PIL import Image
Operaciones con Imágenes:
- Abra una imagen en particular desde una ruta:
#img = Image.open(path)
# On successful execution of this statement,
# an object of Image type is returned and stored in img variable)
try
:
img
=
Image.
open
(path)
except
IOError:
pass
# Use the above statement within try block, as it can
# raise an IOError if file cannot be found,
# or image cannot be opened.
- Recuperar el tamaño de la imagen : las instancias de la clase Imagen que se crean tienen muchos atributos, uno de sus atributos útiles es el tamaño.
from
PIL
import
Image
filename
=
"image.png"
with Image.
open
(filename) as image:
width, height
=
image.size
#Image.size gives a 2-tuple and the width, height can be obtained
Algunos otros atributos son: Image.width, Image.height, Image.format, Image.info, etc.
- Guardar cambios en la imagen: para guardar cualquier cambio que haya realizado en el archivo de imagen, debemos proporcionar la ruta y el formato de la imagen.
img.save(path,
format
)
# format is optional, if no format is specified,
#it is determined from the filename extension
- Rotación de una imagen: la rotación de la imagen necesita un ángulo como parámetro para rotar la imagen.
from
PIL
import
Image
def
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
#Angle given
img
=
img.rotate(
180
)
#Saved in the same relative location
img.save(
"rotated_picture.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
Nota: Hay un indicador de expansión opcional disponible como uno de los argumentos del método de rotación, que si se establece como verdadero, expande la imagen de salida para que sea lo suficientemente grande como para contener la imagen rotada por completo.
Como se ve en el fragmento de código anterior, he usado una ruta relativa donde mi imagen se encuentra en el mismo directorio que mi archivo de código python, también se puede usar una ruta absoluta. - Recortar una imagen: Image.crop(box) toma una coordenada de píxel de 4 tuplas (izquierda, superior, derecha, inferior) y devuelve una región rectangular de la imagen utilizada.
from
PIL
import
Image
def
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
width, height
=
img.size
area
=
(
0
,
0
, width
/
2
, height
/
2
)
img
=
img.crop(area)
#Saved in the same relative location
img.save(
"cropped_picture.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- Cambiar el tamaño de una imagen: Image.resize(size)- Aquí el tamaño se proporciona como un ancho y alto de 2 tuplas.
from
PIL
import
Image
def
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
width, height
=
img.size
img
=
img.resize((width
/
2
, height
/
2
))
#Saved in the same relative location
img.save(
"resized_picture.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- Pegar una imagen en otra imagen: el segundo argumento puede ser una tupla de 2 (especificando la esquina superior izquierda) o una tupla de 4 (izquierda, superior, derecha, inferior); en este caso, el tamaño de la imagen pegada debe coincidir con el tamaño de esta región del cuadro, o Ninguno, que es equivalente a (0, 0).
from
PIL
import
Image
def
main():
try
:
#Relative Path
#Image on which we want to paste
img
=
Image.
open
(
"picture.jpg"
)
#Relative Path
#Image which we want to paste
img2
=
Image.
open
(
"picture2.jpg"
)
img.paste(img2, (
50
,
50
))
#Saved in the same relative location
img.save(
"pasted_picture.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
##An additional argument for an optional image mask image is also available.
- Obtener un histograma de una imagen: Esto devolverá un histograma de la imagen como una lista de recuentos de píxeles, uno para cada píxel de la imagen. (Un histograma de una imagen es una representación gráfica de la distribución tonal en una imagen digital. Contiene todos los valores de brillo contenidos en una imagen. Traza el número de píxeles para cada valor de brillo. Ayuda a realizar los ajustes de exposición. .)
de la imagen de importación PILdef
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
#Getting histogram of image
print
img.histogram()
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- Transponer una imagen: esta característica nos da la imagen especular de una imagen.
from
PIL
import
Image
def
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
#transposing image
transposed_img
=
img.transpose(Image.FLIP_LEFT_RIGHT)
#Save transposed image
transposed_img.save(
"transposed.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- Dividir una imagen en bandas individuales: al dividir una imagen en modo RGB, se crean tres imágenes nuevas, cada una de las cuales contiene una copia de las bandas individuales originales.
from
PIL
import
Image
def
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
#splitting the image
print
img.split()
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- tobitmap: convertir una imagen a un mapa de bits X11 (un formato de imagen binaria de texto sin formato). Devuelve una string que contiene un mapa de bits X11, solo se puede usar para imágenes en modo «1», es decir, imágenes en blanco y negro de 1 bit de píxel.
de imagen de importación PILdef
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
print
img.mode
#converting image to bitmap
print
img.tobitmap()
print
type
(img.tobitmap())
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
- Creación de una miniatura: este método crea una miniatura de la imagen que se abre. No devuelve un nuevo objeto de imagen, realiza una modificación en el lugar del propio objeto de imagen actualmente abierto. Si no desea cambiar el objeto de imagen original, cree una copia y luego aplique este método. Este método también evalúa lo adecuado para mantener la relación de aspecto de la imagen según el tamaño pasado.
de imagen de importación PILdef
main():
try
:
#Relative Path
img
=
Image.
open
(
"picture.jpg"
)
#In-place modification
img.thumbnail((
200
,
200
))
img.save(
"thumb.jpg"
)
except
IOError:
pass
if
__name__
=
=
"__main__"
:
main()
Este artículo es una contribución de Mohit Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA