File size: 1,814 Bytes
d5ac27c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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