17. Proporción adecuada
Crea una función que redimensione una imagen manteniendo su proporción (aspect ratio). Recibirá las dimensiones originales (ancho y alto) y una nueva dimensión deseada (ya sea un ancho o un alto nuevo, pero no ambos).
La función debe aceptar ancho_original, alto_original, y opcionalmente ancho_nuevo o alto_nuevo. Devolverá una tupla con las nuevas dimensiones (ancho_redimensionado, alto_redimensionado). Si se proporcionan ambos ancho_nuevo y alto_nuevo, debe priorizar uno o lanzar un error.
def redimensionar_proporcion(ancho_original: int, alto_original: int,
ancho_nuevo: int = None, alto_nuevo: int = None) -> tuple[int, int]:
# Tu código aquí
pass
redimensionar_proporcion(1920, 1080, ancho_nuevo=800)
# (800, 450)
redimensionar_proporcion(1920, 1080, alto_nuevo=600)
# (1067, 600) (redondeado, puede haber pequeñas diferencias por decimales)
redimensionar_proporcion(100, 200, ancho_nuevo=50)
# (50, 100)
redimensionar_proporcion(100, 200, alto_nuevo=400)
# (200, 400)
Ratoncito
Implementa la redimensión para cuando se proporciona solo un ancho_nuevo o un alto_nuevo. Asume que los valores de entrada serán enteros positivos.
Dragón
Añade validación para los parámetros de entrada:
-
Si no se proporciona
ancho_nuevonialto_nuevo, o si se proporcionan ambos, debe lanzar un error o devolver un valor específico (explica tu elección). -
Los valores de dimensiones originales deben ser positivos.
-
Asegúrate de que los resultados sean enteros, decidiendo cómo redondear (al más cercano, hacia abajo, hacia arriba).
This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.
Support me on Ko-fi