| """ |
| @author: idoia lerchundi |
| """ |
| from io import BytesIO |
| from PIL import Image,ImageFile |
| import streamlit as st |
| from rembg import remove |
| |
|
|
| def local_css(file_name): |
| with open(file_name) as f: |
| st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True) |
|
|
| st.set_page_config( |
| page_title="Streamlit iCodeIdoia", |
| page_icon="images/ilpicon1.png",layout="wide",initial_sidebar_state="expanded" |
| ) |
|
|
| st.image("images/banner.jpg") |
|
|
| |
| local_css("styles/style.css") |
|
|
| |
| def remove_bgdemo(input_path): |
| output_path = 'output/demooutput.png' |
|
|
| with open(input_path, 'rb') as i: |
| with open(output_path, 'wb') as o: |
| input = i.read() |
| output = remove(input) |
| |
| saving = o.write(output) |
|
|
| return output_path |
|
|
| def remove_bg(input_path): |
| output_path = 'output/output.png' |
|
|
| with open(input_path, 'rb') as i: |
| with open(output_path, 'wb') as o: |
| input = i.read() |
| output = remove(input) |
| |
| |
| saving = o.write(output) |
|
|
| return output_path |
|
|
| def main(): |
| |
| tab1, tab2 = st.tabs(["Demo","Application"]) |
|
|
| with tab1: |
| |
| url = 'samples/1.jpg' |
| |
| st.subheader("Remove background from image demo") |
| img_description = st.text('Image background will be removed.') |
|
|
| if st.button('Remove Background Demo'): |
| st.text("Selected image.") |
| sel_image = Image.open(url) |
| st.image(sel_image) |
|
|
| generated_img = remove_bgdemo(url) |
|
|
| st.text("Image background removed.") |
| st.image(generated_img) |
|
|
| with tab2: |
| st.subheader("Remove background from image, place image in samples folder.") |
|
|
| uploaded_file = st.file_uploader("Upload an image. e.g. Select 1_for_super_resolution.jpg from samples folder.", type=['png', 'jpg', 'jpeg', 'gif']) |
| st.caption("Note: this app uses samples folder input path, please change code accordingly.") |
|
|
| if uploaded_file is not None: |
| |
| lr_image = Image.open(uploaded_file) |
|
|
| st.text("Your Uploaded Image") |
| st.image(lr_image) |
| imagepath = "output/output.png" |
| inputpath="output/input.png" |
| lr_image.save(inputpath) |
| |
| if st.button('Remove background'): |
| st.text("Please wait a few seconds. Monitor top right of your screen.") |
| imagepath = imagepath + uploaded_file.name |
| generated_img = remove_bg(inputpath) |
| st.text("Image background removed.") |
| st.image(generated_img) |
| st.markdown("""<div style="margin: 0.75em 0;"><a href="https://www.buymeacoffee.com/Artgen" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a></div> |
| <div style="margin: 0.75em 0;">But what would really help me is a <strong>PRO subscription</strong> to Google Colab, Kaggle or Hugging Face. Many thanks.</div>""", unsafe_allow_html=True) |
|
|
| if __name__ == "__main__": |
| main() |