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.
Seguimos en la línea de los retos anteriores con la creación de acciones personalizadas. En este décimo reto, en lugar de únicamente convertir a escala de grises vamos a ir un paso mas allá y vamos a aplicar distintos filtros, filtros tipo los que puedes encontrar en Instagram a tus imágenes. La idea de hacerlo de forma básica, sin permitir introducir variantes a los filtros, aunque se deja la posibilidad de hacerlo.
De nuevo, esto es simplemente para que veas las posibilidades que Python ofrece a la hora de trabajar con todas tus archivos de forma masiva y sobre todo, de forma completamente desatendida. Así, simplemente tendrás que dejar las imágenes en un directorio, esta herramienta se encargará de actuar sobre ellas.
Reto Python 10. Aplica filtros tipo Instagram a tus imágenes con Python
La solución al reto 9
Como de costumbre la solución al reto anterior, al reto 9, ya está disponible en el repositorio de GitHub. Como te digo siempre, ten en cuenta, que esta es una propuesta, la mía. Junto a ella, puedes encontrar las propuestas de solución de otros que como tu están participando en el reto Python y aportando su código. Sus soluciones son tan válidas o mas que las mías, con lo que no dejes de revisarlas. Una de las grandes maravillas de aprender a programar, es que no solo se aprende a programar, programando, sino que también puedes aprender leyendo el código de los demás. Así, te animo a que tu también participes y añadas tu código a este repositorio.
El décimo de los retos. Aplicar filtros tipo Instagram a tus imágenes con Python
En este reto 10 lo vamos a complicar un poco, pero no mucho, no creas. En lugar de únicamente convertir a grises, el objetivo, es poder aplicar cualquiera de los filtros tipo Instagram que se muestran mas adelante.
Así, los parámetros de entrada serán el archivo de entrada, el archivo de salida y el filtro que se aplicará.
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.
Los posibles filtros son los siguientes:
- _1977
- aden
- brannan
- brooklyn
- clarendon
- earlybird
- gingham
- hudson
- inkwell
- kelvin
- lark
- lofi
- maven
- mayfair
- moon
- nashville
- perpetua
- reyes
- rise
- slumber
- stinson
- toaster
- valencia
- walden
- willow
- xpro2
Así la clase resultante InstagramImage
, al aplicarla será algo similar a lo que te muestro a continuación.
def main():
filter_name = "lofi"
filein = Path('/home/lorenzo/kk/bb.jpg')
fileout = Path(f/home/lorenzo/kk/bb_{filter_name}.jpg)
action = InstagramImage(filein, fileout, {filter: filter_name})
if action.check():
action.execute()
El vídeo
En el siguiente vídeo encontrarás tanto la solución al reto anterior, al reto número 9, como el planteamiento a este reto número 10. De nuevo, insistir, en que mi solución al reto anterior, no es mas que una propuesta, y que se puede resolver de otras formas.