CodeGym /Curso de Java /Python SELF ES /Recorte y rotación de imágenes para preparación de conten...

Recorte y rotación de imágenes para preparación de contenido

Python SELF ES
Nivel 45 , Lección 2
Disponible

1. Recorte de imágenes

Concepto de recorte y su aplicación

Entonces, vamos a entender cómo recortar y rotar imágenes. Esta habilidad te será útil en una variedad de proyectos: desde preparar gráficos para sitios web hasta crear contenido para redes sociales.

Recortar una imagen es como cortar los bordes innecesarios de una foto para enfocarse en el objeto principal. Imagina que tienes una foto increíble de un atardecer, pero en los bordes accidentalmente aparecen unos curiosos mirones. ¡El recorte te ayudará a deshacerte de ellos (virtualmente, claro) sin juicios ni consecuencias!

Método crop()

El método crop() toma las coordenadas de un área rectangular que quieres recortar de la imagen. Las coordenadas se especifican con cuatro valores: (izquierda, superior, derecha, inferior).


# Recorte de una imagen
cropped_image = image.crop((100, 100, 400, 400))

# Guardando la imagen recortada
cropped_image.save("cropped_example.jpg")
        

En este ejemplo, la imagen se recortará a un área con la esquina superior izquierda en el punto (100, 100) y la esquina inferior derecha en el punto (400, 400). Este método crea una nueva imagen a partir de la parte especificada de la imagen original.

Recorte dinámico basado en las dimensiones de la imagen

Si quieres recortar una imagen al centro, puedes calcular las coordenadas del recorte basándote en sus dimensiones:


width, height = image.size
left = (width - 200) / 2
top = (height - 200) / 2
right = (width + 200) / 2
bottom = (height + 200) / 2

center_cropped_image = image.crop((left, top, right, bottom))
center_cropped_image.save("center_cropped_example.jpg")
        

Este código recorta la parte central de la imagen con un tamaño de 200x200 píxeles. El cálculo de las coordenadas garantiza que el área recortada esté ubicada en el centro de la imagen.

2. Rotación de una imagen

La rotación de una imagen permite cambiar su orientación, lo cual es especialmente útil si la foto fue tomada en la orientación incorrecta o si necesitas crear un efecto visual artístico.

Método rotate()

El método rotate() rota la imagen en el ángulo especificado en sentido antihorario. El ángulo se proporciona en grados, y el método crea una nueva imagen rotada.


# Rotación de una imagen 90 grados en sentido antihorario
rotated_image = image.rotate(90)
rotated_image.save("rotated_90_example.jpg")
        

En este ejemplo, la imagen se rotará 90 grados en sentido antihorario. También puedes especificar otro ángulo de rotación (por ejemplo, 45, 180 o 270 grados) para lograr el resultado deseado.

Gestionando bordes blancos al girar

Por defecto, rotate() agrega bordes blancos (o transparentes, si se usa el modo RGBA) en los bordes de la imagen para conservar todo su contenido. Si deseas que la imagen llene todo el marco sin bordes, utiliza el parámetro expand=True.


# Rotación con expansión de la imagen para llenar todo el marco
rotated_expanded_image = image.rotate(45, expand=True)
rotated_expanded_image.save("rotated_expanded_example.jpg")
        

En este caso, Pillow aumentará las dimensiones de la imagen para acomodar todo su contenido, lo que es útil para rotaciones en ángulos no estándar (por ejemplo, 45 grados).

3. Reflejo de la imagen

El reflejo de la imagen permite girarla horizontal o verticalmente. Esto es útil cuando necesitas cambiar la dirección de un objeto en la foto o crear un efecto simétrico.

Método transpose()

El método transpose() se utiliza para el reflejo y admite los siguientes parámetros:

  • Image.FLIP_LEFT_RIGHT: Reflejo horizontal.
  • Image.FLIP_TOP_BOTTOM: Reflejo vertical.

# Reflejo horizontal
flipped_horizontal = image.transpose(Image.FLIP_LEFT_RIGHT)
flipped_horizontal.save("flipped_horizontal_example.jpg")

# Reflejo vertical
flipped_vertical = image.transpose(Image.FLIP_TOP_BOTTOM)
flipped_vertical.save("flipped_vertical_example.jpg")
        

Estos comandos giran la imagen horizontal y verticalmente, lo cual puedes usar para diversos efectos o para corregir la orientación.

Ejemplos prácticos de recorte, rotación y reflejo

  1. Enfocarte en una zona específica de la imagen: El recorte permite destacar la parte necesaria de la imagen, lo cual es útil para crear retratos, eliminar detalles no deseados y preparar imágenes para redes sociales o sitios web.
  2. Corregir la orientación de la imagen: La rotación se utiliza para corregir la orientación de una foto, especialmente si el dispositivo la tomó en la posición incorrecta. Un ejemplo sería corregir una imagen tomada en orientación horizontal para publicarla en orientación vertical.
  3. Crear efectos simétricos: El reflejo a menudo se utiliza en diseño para crear imágenes simétricas, efectos visuales interesantes y mejorar la composición.

4. Errores típicos y cómo evitarlos

Al trabajar con Pillow, a veces surgen errores que probablemente enfrentarán los principiantes. Uno de estos errores es intentar recortar la imagen fuera de sus dimensiones reales. Siempre verifica el tamaño de la imagen y asegúrate de que las coordenadas de recorte estén dentro de esos límites.

Otro detalle es que al girar, la imagen puede parecer recortada si usas el método `rotate` sin configuraciones adicionales. Esto sucede debido al cambio en el tamaño de la imagen durante la rotación. Para evitarlo, utiliza el parámetro expand=True, que ajusta automáticamente las dimensiones:


# Girar imagen 45 grados con expansión para evitar cortar esquinas
rotated_image = image.rotate(45, expand=True)
rotated_image.save("rotated_expanded.jpg")
        
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION