gaur3009's picture
Update app.py
012c6d8 verified
raw
history blame contribute delete
No virus
2.86 kB
import gradio as gr
from PIL import Image, ImageOps, ImageDraw, ImageFont
import numpy as np
def apply_color(image, color):
color = Image.new('RGB', image.size, color)
colored_image = Image.blend(image.convert('RGB'), color, alpha=0.5)
return colored_image
def add_design(image, design, position):
if design:
design = Image.open(design).convert("RGBA")
image.paste(design, position, design)
return image
def resize_image(image, size):
if size:
return image.resize((size, size))
return image
def rotate_image(image, angle):
if angle:
return image.rotate(angle, expand=True)
return image
def crop_image(image, crop_coords):
if crop_coords:
return image.crop(crop_coords)
return image
def add_text(image, text, position, font_size, font_color):
if text:
draw = ImageDraw.Draw(image)
font = ImageFont.load_default()
draw.text(position, text, fill=font_color, font=font)
return image
def process_image(image, color, design, design_position, text, text_position, font_size, font_color, resize, rotate, crop_sketch):
crop_coords = get_crop_coords(crop_sketch)
if color:
image = apply_color(image, color)
if design:
image = add_design(image, design, design_position)
if text:
image = add_text(image, text, text_position, font_size, font_color)
if resize:
image = resize_image(image, resize)
if rotate:
image = rotate_image(image, rotate)
if crop_coords:
image = crop_image(image, crop_coords)
return image
def get_crop_coords(crop_sketch):
if crop_sketch:
x_coords = [point[0] for point in crop_sketch]
y_coords = [point[1] for point in crop_sketch]
return (min(x_coords), min(y_coords), max(x_coords), max(y_coords))
return None
design_position = (100, 100) # Default position for design
text_position = (50, 50) # Default position for text
interface = gr.Interface(
fn=lambda image, color, design, design_position, text, text_position, font_size, font_color, resize, rotate, crop_sketch: process_image(
image, color, design, design_position, text, text_position, font_size, font_color, resize, rotate, crop_sketch
),
inputs=[
gr.Image(type="pil"),
gr.ColorPicker(label="Color"),
gr.File(label="Design"),
gr.Sketchpad(label="Design Position"),
gr.Textbox(label="Text"),
gr.Sketchpad(label="Text Position"),
gr.Slider(10, 100, step=1, value=20, label="Font Size"),
gr.ColorPicker(label="Font Color"),
gr.Slider(50, 1000, step=1, value=100, label="Resize"),
gr.Slider(0, 360, step=1, value=0, label="Rotate"),
gr.Sketchpad(label="Crop Area")
],
outputs=gr.Image(type="pil"),
live=True
)
interface.launch()