Spaces:
Running
Running
import streamlit as st | |
from PIL import Image, ImageDraw, ImageFont | |
import io | |
import requests | |
from transformers import pipeline | |
# Initialize the AI model for image generation or editing | |
# This uses HuggingFace's Stable Diffusion pipeline | |
stability_pipeline = pipeline("image-to-image", model="stabilityai/stable-diffusion-2-inpainting") | |
# Function to edit the image based on the command | |
def process_command(image, command): | |
""" | |
Processes the command and modifies the image using AI tools. | |
:param image: PIL Image object | |
:param command: Natural language command (e.g., "Add a cat in the bottom-right corner.") | |
:return: Edited PIL Image | |
""" | |
# Convert the image to bytes for the AI model | |
img_byte_arr = io.BytesIO() | |
image.save(img_byte_arr, format='PNG') | |
img_byte_arr = img_byte_arr.getvalue() | |
# Use the Stable Diffusion pipeline to modify the image | |
result = stability_pipeline(images=image, prompt=command) | |
edited_image = result[0]['image'] | |
return edited_image | |
# Streamlit App Interface | |
st.title("AI-Powered Image Editing") | |
st.write("Upload an image, enter a command, and let AI handle the editing!") | |
# Step 1: Upload Image | |
uploaded_file = st.file_uploader("Upload an image to edit", type=["jpg", "jpeg", "png"]) | |
if uploaded_file: | |
# Open the uploaded image | |
input_image = Image.open(uploaded_file).convert("RGB") | |
st.image(input_image, caption="Uploaded Image", use_column_width=True) | |
# Step 2: Enter a Command | |
command = st.text_input("Enter a command to edit the image (e.g., 'Add a tree in the background')") | |
if st.button("Process Command"): | |
if command: | |
# Step 3: Process the Command | |
try: | |
with st.spinner("Processing your command..."): | |
edited_image = process_command(input_image, command) | |
# Step 4: Display the Edited Image | |
st.image(edited_image, caption="Edited Image", use_column_width=True) | |
except Exception as e: | |
st.error(f"Error processing the image: {e}") | |
else: | |
st.warning("Please enter a command.") | |
# Instructions for the user | |
st.write(""" | |
### How to use this app: | |
1. Upload an image in JPG or PNG format. | |
2. Enter a natural language command like: | |
- "Add a cat to the bottom-right corner." | |
- "Remove the text from the top-left corner." | |
- "Make the background cloudy." | |
3. Click "Process Command" and view the results! | |
""") | |