Image-Enhancer / app.py
HFUsman's picture
Update app.py
9c2b404 verified
import streamlit as st
from PIL import Image, ImageEnhance, ImageFilter
import numpy as np
import io
import cv2
from transformers import BlipProcessor, BlipForConditionalGeneration
# Load models for AI enhancements
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
# Function to enhance image quality using PIL
def enhance_image(image, enhance_type, factor):
enhancer = None
if enhance_type == 'Brightness':
enhancer = ImageEnhance.Brightness(image)
elif enhance_type == 'Contrast':
enhancer = ImageEnhance.Contrast(image)
elif enhance_type == 'Sharpness':
enhancer = ImageEnhance.Sharpness(image)
elif enhance_type == 'Color':
enhancer = ImageEnhance.Color(image)
if enhancer:
return enhancer.enhance(factor)
return image
# Function for applying filters (Grayscale, etc.)
def apply_filter(image, filter_type):
if filter_type == "Grayscale":
return image.convert("L")
elif filter_type == "Blur":
return image.filter(ImageFilter.GaussianBlur(radius=5))
return image
# Function to remove background (using a simple model or API)
def remove_background(image):
# Here you can integrate an API for background removal, e.g., remove.bg or Hugging Face models.
# For now, it's a placeholder.
return image # Placeholder for background removal
# Main function
def main():
st.title("Advanced Image Editor")
st.sidebar.title("Image Editor Tools")
uploaded_file = st.sidebar.file_uploader("Upload Image", type=["jpg", "png", "jpeg"])
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image", use_column_width=True)
st.sidebar.subheader("Enhance Image")
enhancement_type = st.sidebar.selectbox("Enhancement Type", ["Brightness", "Contrast", "Sharpness", "Color"])
enhancement_factor = st.sidebar.slider("Enhancement Factor", 0.5, 2.0, 1.0, 0.1)
enhanced_image = enhance_image(image, enhancement_type, enhancement_factor)
st.sidebar.subheader("Apply Filter")
filter_type = st.sidebar.selectbox("Select Filter", ["None", "Grayscale", "Blur"])
filtered_image = apply_filter(enhanced_image, filter_type)
st.image(filtered_image, caption="Processed Image", use_column_width=True)
# Background Removal
remove_bg = st.sidebar.checkbox("Remove Background")
if remove_bg:
filtered_image = remove_background(filtered_image)
st.image(filtered_image, caption="Background Removed Image", use_column_width=True)
# Download Button
buf = io.BytesIO()
filtered_image.save(buf, format="PNG")
byte_im = buf.getvalue()
st.sidebar.download_button("Download Edited Image", byte_im, "edited_image.png", "image/png")
if __name__ == "__main__":
main()