Este es uno de los capítulos del tutorial Reto Python. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
En este octavo reto damos un salto completo y empezamos a personalizar nuestras acciones. Mejor que personalizar, vamos a crear nuestras acciones, con lo que las posibilidades de configuración serán máximas, y el límite de lo que podemos hacer solo caerá bajo el peso de nuestra responsabilidad. Así, para comenzar, en este octavo reto vamos a plantearnos redimensionar imágenes con Python. Sin embargo, hay que hacerlo bajo unas premisas, que estableceremos para poder casar los retos anteriores con los nuevos retos.
Ahora, ya puedes ver e imaginar, las posibilidades que nos ofrece el Reto Python a la hora de resolver el síndrome de Diógenes digital. Pero no solo resolverlo organizando nuestros archivos, imágenes, audios y vídeos, sino yendo un paso mas allá.
Reto Python 8. Redimensionar imágenes con Python
La solución al reto 7
Puedes encontrar la solución a este reto, la que yo te propongo, en el repositorio de GitHub. Pero lo mas maravilloso y fantástico de este reto, es que no solo vas a poder encontrar mis soluciones, sino que además encontrarás las soluciones de unos cuantos valientes mas que han decidido participar en este reto aportando su código para que tu también puedas aprender de diferentes opciones y soluciones para resolver cada uno de estos retos que te planteo. Ten en cuenta, que la mía es una de las muchas soluciones que se pueden plantear, y hay fantásticas soluciones que son tan válidas o mas que las mías.
El octavo de los retos. Redimensionar imágenes con Python
Cambiamos de tercio completamente. Ahora vamos a crear pequeñas clases que hagan determinadas acciones sobre un archivo. Así, vamos a empezar con una sencilla clase que redimensionará Imágenes
La clase tiene que tener al menos dos métodos, el primero check
, será el que se encargue de que se cumplen todas las condiciones, mientras que el segundo de los métodos, execute
, realizará la acción.
En los próximos retos haremos, varias acciones con diferentes tipos de archivo, para ir viendo todas las posibilidades que nos ofrece Python y los módulos.
De cada tipo de archivo haremos de dos a tres acciones, para que veas las posibilidades, y luego daremos el salto a combinarla con el código anterior.
class ResizeImage:
...
...
def main():
filein = Path('/home/lorenzo/kk/bb.png')
fileout = Path('/home/lorenzo/kk/salida.png')
args = {"width": 200, "height": 200}
resize_image = ResizeImage(filein, fileout, args)
if resize_image.check():
resize_image.execute()
Por ahora lo dejamos aquí. Vamos a crear un par de clases para distintos tipos de archivos y veremos como podemos integrarlo con el código que hemos estado haciendo hasta el momento.
El vídeo
En el siguiente vídeo encontrarás tanto la solución al reto anterior, como el planteamiento del siguiente. Recordarte que esto no es mas que mi propuesta de solución. Seguro que dentro del repositorio de GitHub, puedes encontrar otras soluciones fantásticas.