gdTharusha's picture
Update app.py
18b1364 verified
raw
history blame
3.12 kB
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()