
Hoy tenemos un tutorial para automatizar con Python, puedes leer este post o ver y escuchar esta información en formato de video en nuestro canal de youtube en la que encontraras además de esta, dos ideas más para automatizar con python, te dejamos el link por si prefieres este formato. 😃 👍
Hola mundo y bienvenidos a este post,
Cuando estás aprendiendo a programar lo mejor que puedes hacer es buscar formas de practicar. Con ideas de proyectos o incluso intentando automatizar algunas tareas diarias que puedes tener. Es por esta razón que en este post te traigo la primera de tres ideas que puedes automatizar en python. Aunque estas ideas por supuesto que también las puedes automatizar en cualquier lenguaje.
Puede parecer algo complejo si aún no tenemos las bases del lenguaje, para esto te sugerimos aprender con el curso de de python que tenemos en la Academia de Hola Mundo para aprender los fundamentos y como construir aplicaciones web, has click qui para ver el curso: Python: HTML, CSS, Flask y MySQL
Descripción de nuestro proyecto «Compresor de imágenes»
Cuando eres un memero profesional, como algunos de ustedes, tienes un canal de youtube, o por la razón que sea descargas muchas imágenes de internet, estas pueden variar mucho el peso, por esa misma razón decidí crear un compresor de imágenes.
Cuando me toca editar mis videos suelo descargar las imágenes en mi carpeta de descargas, estas las incluyo en mis videos y luego las guardo para referencias futuras.
Por esa razón decidí crear este script que comparto ahora con ustedes.
Preparación
Primero crearemos una nueva carpeta donde guardaremos nuestro proyecto y dentro de esta carpeta crearemos un nuevo archivo, lo llamaremos compressor.py.
Esto lo podemos hacer con la secuencia de comandos para tener los archivos necesarios para trabajar con este script
mkdir python_projects
cd python_projects/
touch compressor.py
Con esto tendriamos la carpeta y el archivo creado, tu puedes elegir la ruta donde crear estos archivos.
Y adiocionalmente yo tendre una carpeta donde guardare mis imagenes la cual he generado con el comando mkdir la cual llamare images, esta se encontrara dentro de mi carpeta python_projects en la cual he colocado dos imagenes de comida, una de un asado y la otra de un plato de pozole.
La carpeta images se ve y pesa así ahora, en total son 7.7 mb:

Comenzando el script
Ahora abriremos nuestro editor de código como lo es VsCode, pero tu puede utilizar el de tu preferencia para trabajar nuestro proyecto.
Dentro del archivo compressor.py tenemos que importar al modulo os y el modulo PIL y de este último usaremos a Image, pero antes tendremos que instalarlo y lo haremos con el comando:
python3 -m pip install Pillow
Esto si estas usando comandos Unix.
Nuestras importaciones deberian quedar de la siguiente manera:
from PIL import Image
import os
Definiremos una variable que el script sepa la ruta de los archivos de la que se obtendrán las imagenes que vamos a optimizar
Entonces seguimos, es hora de asignar el valor a la variable, esto lo haríamos de la siguiente manera:
downloadsFolder = "/images/"
Ahora inicializamos nuestra aplicación con y todo nuestro script va dentro de este bloque de código:
if __name__ == "__main__":
Utilizaremos el módulo os para encontrar todas nuestras imágenes:
for filename in os.listdir(downloadsFolder):
name, extension = os.path.splitext(downloadsFolder + filename)
Donde os.listdir(downloadsFolder), nos va a dar como resultado una lista con los nombres de los archivos, en nuestro caso será nuestra lista de imágen es ['asado.jpeg', 'pozole.jpg'].
Despues con el siguiente método os.path.splitext(downloadsFolder + filename) vamos a definir las variables name y extensión que utilizaremos posteriormente, este método va a dividir la ruta del archivo y la extensión de este. Si lo imprimimos obtendremos lo siguiente:
name sera: ./images/asado y la extensión sera:.jpeg
Esto para cada elemento ya que estamos pasando todo por un ciclo.
Teniendo esto listo, ahora validamos que los archivos tengan la extensión .jpg, .jpeg y .png, si estos archivos tienen esta extensión vamos a abrir el archivo con Image.open, este no lo abrira propiamente en nuestra computadora pero nos permitira manipularla con python, y guardaremos el resultado de esto en una variable.
Para posteriormente guardaremos con el método save y pasándole los parámetros necesarios, donde el primero será la ruta y el nombre donde guardaremos la imagen, el segundo si se va a optimizar y el tercero la calidad con la que se guardara, aunque para su valor encuentres algunos lugares que lo definan en 80 u 85, con 60 no se sacrificó tanto la calidad por lo que usaremos este valor.
Este código se ve de la siguiente manera:
if extension in [".jpg", ".jpeg", ".png"]:
picture = Image.open(downloadsFolder + filename)
picture.save(downloadsFolder + "compressed_"+filename, optimize=True, quality=60)dsFolder + filename)
De esta manera es que obtendremos la imagen optimizada guardada en nuestra carpeta.
¡Resultados!
Ahora es momento de poner a prueba nuestro script, lo haremos con el comando:
python3 compressor.py
¡Y parece magia!, se han creado dos archivos en nuestra carpeta de images, pero con el nombre modificado como lo definimos en la función:

Si te das cuenta, ahora el archivo compromido de asado ha pasado de 4.5M a solo 1.1M, mientras que el archivo de pozole ha pasado de 3.2M a 1.7M. ¿Qué resultados has obtenido tu al probar este código?
Y para ver la calidad, te dejo un pantallazo de cómo se ven ambas imágenes a la par, del lado izquierdo tienes la imagen original y del derecho la comprimida:

Y el segundo ejemplo es el siguiente:

Código y repositorio
Y ahora para no seguirnos dando hambre, te dejo el código completo del script asi como el repositorio en GitHub donde puedes ver otros dos scripts con más ideas para automatizar con python, si no sabes que es o te falta profundizar en la tecnologia Git para entender que es un repositorio y como tener los tuyos, te recomendamos el curso de Git: Sin Fronteras de la Academia de Hola Mundo.
from PIL import Image
import os
downloadsFolder = "./images/"
if __name__ == "__main__":
for filename in os.listdir(downloadsFolder):
name, extension = os.path.splitext(downloadsFolder + filename)
if extension in [".jpg", ".jpeg", ".png"]:
picture = Image.open(downloadsFolder + filename)
picture.save(downloadsFolder + "compressed_"+filename, optimize=True, quality=60)
Esta es solo la primera idea, ¿qué más se te ocurre que podemos hacer con python?, dejanos tu opinión en lo comentarios.
¿Cómo aprender python?
Puedes crear muchas más herramientas para automatizar tu dia a dia, pero lo primero es aprender las bases del lenguaje de programación, y para esto de nuevo te invitamos a tomar nuestro curso Python: HTML, CSS, Flask y MySQL, pero si prefieres otras tecnologías te dejamos el link de la Academia de Hola Mundo para ver todos los cursos que tenemos disponibles en diferentes tecnologías para formarte en un excelente desarrollador o desarrolladora.
Y esto ha sido todo de este post, si te ha gustado no olvides golpear al botón de me gusta de este post!!, déjanos un comentario, para más contenido suscribite a este blog y síguenos en todas las redes como Youtube, Twitter e Instagram y por último, te invitamos a escuchar nuestra música «Hola Beats», diseñada para ayudarte a concentrarte y acompañarte en tu aprendizaje o trabajo, estamos en Spotify y en Apple Music.
¡Hasta la próxima!, y chao mundo
Comments (4)
Automatizando con Python, Idea 2: Automove files – Hola Mundosays:
enero 31, 2023 at 6:43 pm[…] Igualmente, te dejamos aquí el primero de estos tutoriales, el cual es un compresor de imágenes. […]
Automatizando con Python, Idea 3: Job Scrapper – Hola Mundosays:
febrero 1, 2023 at 12:15 pm[…] Compressor […]
7 aplicaciones que debes construir en Python – Hola Mundosays:
febrero 22, 2023 at 3:57 pm[…] Automatizando con Python, Idea 1: Compresor de imágenes […]
Ruta para ser desarrollador backend con Hola Mundo – Hola Mundosays:
mayo 18, 2023 at 3:17 pm[…] Automatizando con Python, Idea 1: Compresor de imágenes […]