Buscar archivos de imágenes¶
Si hemos instalado Pillow, siguiendo las instrucciones del capítulo anterior, podemos comprobar la versión con:
>>> import PIL
>>> PIL.__version__
'11.1.0'
Pillow es un proyecto derivado de otro anterior, llamado PIL. Muchos términos se han mantenido sin ser modificados.
Vamos a usar Pillow para hacer una búsqueda de archivos de imágenes en nuestro equipo, y mostrar su resolución.
Buscar archivos en disco¶
Comencemos por examinar un directorio:
| Directorio.py | |
|---|---|
1 2 3 4 | |
Lo que muestra una lista de ficheros en esa carpeta. Podemos mostrarlos con su ruta completa mediante:
print(carpeta+archivo)
... aunque tendremos que añadir manualmente la barra final para que esto funcione:
carpeta = '/Users/usuario/Documents/'
Vemos que el módulo estándar os cuenta con una función listdir(x) que
devuelve una lista de ficheros en la carpeta x.
Buscar archivos de forma recursiva¶
Si uno de los archivos encontrados es una carpeta, vamos a interrumpir temporalmente el proceso de la carpeta actual, y examinar esa subcarpeta:
| Directorio2.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
La función os.path.isdir(x) examina la entrada x en un directorio y devuelve
True si se trata de una carpeta. En ese caso, hacemos una nueva llamada a
buscar() para examinar la carpeta encontrada.
Con este ejemplo, vemos que una función puede llamarse a si mismo de forma recursiva. Es una técnica un poco peligrosa, porque la función puede estar autoinvocándose de forma indefinida hasta colapsar el sistema, metiéndose en un bucle indefinidamente. Cuando hagamos uso de estas llamadas recursivas, debemos estar seguros de que en algún momento se interrumpirá la recursión.
Seleccionar archivos de imágenes¶
Al procesar un archivo, vamos a intentar abrirlo con Pillow. Si no es un
archivo de imagen (png, jpeg, etc) se producirá un error, y con un bloque
try...axcept lo ignoramos.
En el caso de que consigamos abrir el fichero, mostramos su nombre y usamos el
método close() para borrarlo de la memoria RAM.
Para hacer uso del Pillow, tenemos que importar el módulo Image:
from PIL import Image
El programa queda así:
| ListaImagenes.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Añadir información sobre cada imagen¶
Vamos a utilizar las capacidades de Pillow para averiguar la resolución de las imágenes:
| ListaImagenes2.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
La función Image.open() crea un objeto en memoria que tiene una propiedad
size. Consiste en una tupla de dos elementos, ancho y alto de la imagen,
medido en número de pixels (puntos de color).
Con esto obtenemos en la consola una lista de archivos de imagen, con su resolución:
Documents/imagenes/Imagen01.png (600x270)
Documents/imagenes/Imagen03.png (600x288)
Documents/imagenes/Imagen02.png (600x355)
Documents/imagenes/Imagen10.png (600x316)
Documents/imagenes/Imagen04.png (600x321)
Documents/imagenes/Imagen09.png (1002x328)
Documents/imagenes/Imagen08.png (600x216)
...