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!

Deja tu comentario