internal-v0 / logic /image_transforms.py
carlosh93's picture
adding queue system, rotate transformations, and scroll to the top when click on submit button
d5ac27c
import cv2
import numpy as np
import gradio as gr
def rotate_image_90_left(image):
"""
Rotate image 90 degrees counter-clockwise (left)
Args:
image: Input image as numpy array
Returns:
Rotated image or None if input is None
"""
if image is None:
return None
try:
return cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE)
except Exception as e:
print(f"Error rotating image left: {e}")
return image
def rotate_image_90_right(image):
"""
Rotate image 90 degrees clockwise (right)
Args:
image: Input image as numpy array
Returns:
Rotated image or None if input is None
"""
if image is None:
return None
try:
return cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)
except Exception as e:
print(f"Error rotating image right: {e}")
return image
def rotate_image_180(image):
"""
Rotate image 180 degrees
Args:
image: Input image as numpy array
Returns:
Rotated image or None if input is None
"""
if image is None:
return None
try:
return cv2.rotate(image, cv2.ROTATE_180)
except Exception as e:
print(f"Error rotating image 180 degrees: {e}")
return image
def reset_image_to_original(current_image, original_image):
"""
Reset image to its original state
Args:
current_image: Current modified image (fallback if no original)
original_image: Original image to restore (Gradio State object)
Returns:
Original image if available, otherwise current image (may be None)
"""
if original_image is None:
return current_image
return original_image.value