En este HowTo explicaré paso a paso, como manipular imágenes en Python. Para ello utilizaré la Biblioteca Python Imaging Library (PIL).
¿Qué es PIL?
La librería Python Imaging Library (PIL), lleva sin actualizarse desde el año 2009 y no soporta Python3. A pesar de este inconveniente, existe un fork llamado Pillow
que si soporta Python3 y actualmente se mantiene actualizada.
Esta librería es empaquetada usando el nombre de Pillow y su nombre en Python es PIL – Pillow (Fork of the Python Imaging Library). Toda la documentación relacionada con Pillow la puedes consultar siguiendo este enlace.
Instalación
Cuando accedemos al intérprete de Python3 e intentamos importar el módulo PIL, obtenemos un el error ImportError: No module named ‘PIL’, si PIL – Pillow no está instalado:
1 2 3 4 5 6 7 8 |
$ python3 Python 3.4.2 (default, Sep 14 2019, 00:52:38) [GCC 4.9.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import PIL Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'PIL' |
Como PIL es una librería muy importante para Linux, la tenemos disponible para su instalación, por lo que procedemos a instalarla.
1 |
$ sudo apt install python3-pil |
Para otro tipo de sistemas o entornos podemos usar el instalador de paquetes de Python pip3
.
1 |
$ pip3 install pillow |
Una vez instalada, volvemos a comprobar si podemos importar el módulo PIL correctamente.
1 2 3 4 5 |
$ python3 Python 3.4.2 (default, Sep 14 2019, 00:52:38) [GCC 4.9.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import PIL |
Documentación de PIL
PIL está construida siguiendo patrones y convenciones de nombres, lo que significa que sus clases, métodos y funciones tienen nombres que nos ayudan a comprender que esperamos de cada uno de ellos. Cuando el nombre no es lo suficientemente descriptivo, dispone de documentación para cada una de sus funciones.
La librería PIL está documentada usando docstrings
, por lo que si tecleamos help(PIL) obtenemos información adicional del módulo y sus componentes. Recuerda que casi toda la documentación relacionada con Pillow también puedes consultarla online, siguiendo este enlace.
1 |
>>> help(PIL) |
Manipulando imágenes
Cuando usamos PIL para manipular imágenes, se crean objetos de cada imagen y contienen toda la información sobre ella. Lo que hacemos es operar sobre estos objetos con métodos o funciones y estos nos devuelven un nuevo objeto de la imagen modificada.
Para modificar el tamaño de una imagen y guardarla en otra, debemos hacer lo siguiente:
1 2 3 4 |
from PIL import Image im = Image("imagen.jpg") nueva_imagen = im.resize((640,480)) nueva_imagen.save("nueva_imagen.jpg") |
El método resize()
es el que retorna la imagen con el tamaño ya modificado. El método save()
nos permite salvarlo en otro fichero diferente.
PIL también nos permite combinar operaciones diferentes en una sola línea. En este ejemplo rotamos usando el método rotate()
, modificamos su tamaño y guardamos el resultado en una nueva imagen.
1 2 3 |
from PIL import Image im = Image("example.jpg") im.rotate(180).resize((640,480)).save("nueva_imagen.jpg") |