File size: 3,118 Bytes
3fa54b5
18b1364
 
 
 
3fa54b5
18b1364
 
 
 
 
 
 
 
 
 
 
 
 
3fa54b5
18b1364
 
 
 
 
 
 
 
 
 
3074852
18b1364
 
 
 
 
3074852
18b1364
 
 
 
bbf7bd0
18b1364
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3074852
18b1364
 
 
 
 
 
 
 
 
 
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
import gradio as gr
import torch
from torchvision import transforms
from PIL import Image, ImageEnhance
import rembg

# Upscaling function using a basic upscaling approach
def upscale_image(image, upscale_factor=2, sharpness=1.0, contrast=1.0, brightness=1.0):
    # Resize the image
    width, height = image.size
    new_size = (int(width * upscale_factor), int(height * upscale_factor))
    upscaled_image = image.resize(new_size, Image.BICUBIC)
    
    # Apply sharpness, contrast, and brightness adjustments
    upscaled_image = ImageEnhance.Sharpness(upscaled_image).enhance(sharpness)
    upscaled_image = ImageEnhance.Contrast(upscaled_image).enhance(contrast)
    upscaled_image = ImageEnhance.Brightness(upscaled_image).enhance(brightness)
    
    return upscaled_image

# Remastering function with background removal and enhancements
def remaster_image(image, remove_background=False, color_balance=1.0, detail_enhancement=1.0):
    if remove_background:
        image = rembg.remove(image)
    
    # Apply color balance and detail enhancement
    image = ImageEnhance.Color(image).enhance(color_balance)
    image = ImageEnhance.Sharpness(image).enhance(detail_enhancement)
    
    return image

# Main function combining upscaling and remastering
def process_image(image, apply_upscale=False, upscale_factor=2, sharpness=1.0, contrast=1.0, brightness=1.0,
                  apply_remaster=False, remove_background=False, color_balance=1.0, detail_enhancement=1.0):
    if apply_upscale:
        image = upscale_image(image, upscale_factor, sharpness, contrast, brightness)
    
    if apply_remaster:
        image = remaster_image(image, remove_background, color_balance, detail_enhancement)
    
    return image

# Gradio UI
with gr.Blocks() as demo:
    with gr.Row():
        image_input = gr.Image(label="Upload Image", type="pil")
        image_output = gr.Image(label="Output Image")
    
    with gr.Row():
        with gr.Group():
            gr.Markdown("### Upscaling Options")
            upscale_checkbox = gr.Checkbox(label="Apply Upscaling")
            upscale_factor = gr.Slider(1, 4, value=2, label="Upscale Factor")
            sharpness = gr.Slider(0.5, 2.0, value=1.0, label="Sharpness")
            contrast = gr.Slider(0.5, 2.0, value=1.0, label="Contrast")
            brightness = gr.Slider(0.5, 2.0, value=1.0, label="Brightness")
        
        with gr.Group():
            gr.Markdown("### Remastering Options")
            remaster_checkbox = gr.Checkbox(label="Apply Remastering")
            remove_background = gr.Checkbox(label="Remove Background")
            color_balance = gr.Slider(0.5, 2.0, value=1.0, label="Color Balance")
            detail_enhancement = gr.Slider(0.5, 2.0, value=1.0, label="Detail Enhancement")
    
    process_button = gr.Button("Process Image")
    
    process_button.click(
        process_image,
        inputs=[image_input, upscale_checkbox, upscale_factor, sharpness, contrast, brightness,
                remaster_checkbox, remove_background, color_balance, detail_enhancement],
        outputs=image_output
    )

demo.launch()