Crear thumbnails para presentar el contenido sin necesidad de utilizar la imagen original es frecuente para aligerar la respuesta de webs y aplicaciones en general. Utilizando las Python Imaging Library o PIL es muy sencillo.
El siguiente código es simple y permite crear thumbnails de cualquier archivo de imagen, incluso de un tiffs multipágina.
En este caso el tamaño destino será de 128×128 aunque podemos definir el que mejor se adapte a nuestro propósito.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Sep 13 09:30:05 2018 @author: altaruru """ from PIL import Image, ImageSequence import os size = (128, 128) def tifthumb(tifname): try: # separa nombre y extensión filename, extension = os.path.splitext(tifname) if extension==".tiff" or extension==".tif": # si es un archivo tiff continúa tmbname = filename + ".tmb.jpg" img = Image.open(tifname) for i, page in enumerate(ImageSequence.Iterator(img)): page.thumbnail(size) page.save(tmbname) break # tras crear thumbnail de primera página sale except IOError: print("cannot convert", tifname) def imgthumb(imgname): try: # separa nombre y extensión filename, extension = os.path.splitext(imgname) if extension==".tiff" or extension==".tif": tifthumb(imgname) else: # si es un archivo tiff continúa tmbname = filename + ".tmb.jpg" img = Image.open(imgname) img.thumbnail(size) img.save(tmbname, "JPEG") except IOError: print("cannot create thumbnail for", imgname) imgthumb("/home/nuse/Documentos/src/pysrc/imgs/floresikaria1.jpg") imgthumb("/home/nuse/Documentos/src/pysrc/imgs/doc33.tif")
El tratamiento de todas las imágenes es el mismo a excepción de los tiff multipágina. Para estos últimos, la función imgthumb llama a tifthumb que implementa el código de extracción de la primera página.
Nuestro directorio de imágenes antes de ejecutar:
Tras la ejecución vemos los thumnails con extension .tmb.jpg, sorprende el tamaño al que quedan reducidos los archivos:
Instalación de Python Imaging Library – PIL
Aunque lo hemos visto en otras entradas, para instalar PIL abrir el shell y ejecutar:
python3 -m pip install Pillow
Feliz dia!