Spaces:
Sleeping
Sleeping
import streamlit as st | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
# Function to convert image to sketch | |
def image_to_sketch(image): | |
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
inverted_image = 255 - gray_image | |
blurred_image = cv2.GaussianBlur(inverted_image, (21, 21), 0) | |
inverted_blurred = 255 - blurred_image | |
sketch = cv2.divide(gray_image, inverted_blurred, scale=256.0) | |
return sketch | |
# Streamlit app layout | |
st.set_page_config(page_title="Image to Sketch Converter", page_icon="🎨", layout="centered") | |
# Custom CSS for heading color | |
st.markdown(""" | |
<style> | |
.title { | |
color: #FFA500; | |
font-size: 2.5em; | |
font-weight: bold; | |
text-align: center; | |
} | |
.footer { | |
position: fixed; | |
left: 0; | |
bottom: 0; | |
width: 100%; | |
background-color: #f1f1f1; | |
text-align: center; | |
padding: 10px; | |
} | |
</style> | |
""", unsafe_allow_html=True) | |
# Title and description | |
st.markdown('<p class="title">🎨 Image to Sketch Converter</p>', unsafe_allow_html=True) | |
st.markdown(""" | |
Convert your images into beautiful sketches with this simple app. | |
Upload an image, and get the sketch version instantly! | |
""") | |
# Example conversions | |
st.subheader("Example Conversions") | |
col1, col2 = st.columns(2) | |
example_image = cv2.imread('image.png') # Replace with the path to an example image | |
example_sketch = image_to_sketch(example_image) | |
with col1: | |
st.image(example_image, caption='Original Image', use_column_width=True) | |
with col2: | |
st.image(example_sketch, caption='Sketch Image', use_column_width=True) | |
# Sidebar for user input | |
st.sidebar.header("Upload Your Image") | |
uploaded_file = st.sidebar.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"]) | |
# Main content | |
if uploaded_file is not None: | |
image = np.array(Image.open(uploaded_file)) | |
st.image(image, caption='Uploaded Image', use_column_width=True) | |
st.write("") | |
st.write("Converting...") | |
sketch = image_to_sketch(image) | |
st.image(sketch, caption='Sketch', use_column_width=True) | |
# Provide a download link for the sketch image | |
im_pil = Image.fromarray(sketch) | |
im_pil.save("sketch.png") | |
with open("sketch.png", "rb") as file: | |
btn = st.download_button( | |
label="Download Sketch", | |
data=file, | |
file_name="sketch.png", | |
mime="image/png" | |
) | |
else: | |
st.sidebar.info("Please upload an image to convert.") | |
# Footer | |
st.markdown(""" | |
<div class="footer"> | |
Made with ❤️ by MallelaPreethi | |
</div> | |
""", unsafe_allow_html=True) | |