Spaces:
Runtime error
Runtime error
| import neural_style | |
| import streamlit as st | |
| import os | |
| import random | |
| import numpy as np | |
| from PIL import Image, ImageEnhance | |
| from io import BytesIO | |
| #import streamlit_ext as ste #for download button not to rerun | |
| from huggingface_hub import upload_file | |
| HF_TOKEN = os.environ.get("HF_TOKEN") | |
| st.set_page_config(layout="wide") | |
| #Create two columns with different width | |
| col1, col2 = st.columns( [0.8, 0.2]) | |
| with col1: # To display the header text using css style | |
| st.markdown(""" <style> .font { | |
| font-size:35px ; font-family: 'Cooper Black'; color: #FF9633;} | |
| </style> """, unsafe_allow_html=True) | |
| st.markdown('<p class="font">Upload your photo here...</p>', unsafe_allow_html=True) | |
| st.subheader("This app takes in your image and styles it with a unique african art.") | |
| #Add a header and expander in side bar | |
| st.sidebar.markdown('<p class="font">Afrodreams.AI</p>', unsafe_allow_html=True) | |
| with st.sidebar.expander("About the App"): | |
| st.write(""" | |
| This app takes in your image and styles it with a unique african art.""") | |
| #Add file uploader to allow users to upload photos | |
| uploaded_file = st.file_uploader("", type=['jpg','png','jpeg']) | |
| # add slider to side bar | |
| style_weight = st.slider("Select Style Weight", min_value=10, max_value=100, value=12) | |
| #Add 'before' and 'after' columns | |
| if uploaded_file is not None: | |
| image = Image.open(uploaded_file) | |
| col1, col2 = st.columns( [0.5, 0.5]) | |
| with col1: | |
| st.markdown('<p style="text-align: center;">Before</p>',unsafe_allow_html=True) | |
| st.image(image,width=300) | |
| with col2: | |
| st.markdown('<p style="text-align: center;">After</p>',unsafe_allow_html=True) | |
| # add a button | |
| run = st.button('Generate Art') | |
| my_bar = st.progress(0) | |
| params = neural_style.TransferParams() | |
| params.gpu = 0#"c" | |
| params.backend = "mkl" | |
| params.image_size = 400 | |
| params.content_image = uploaded_file | |
| params.style_weight = style_weight | |
| keep_style = False | |
| if run==True: | |
| # run image selection if keep style is false | |
| if keep_style==False: | |
| path = 'stylesv2' | |
| styles = os.listdir(path) | |
| params.style_image = path + '/' + random.choice(styles) | |
| st.session_state.submitted = True | |
| with st.spinner('Wait for it...'): | |
| neural_style.transfer(params) | |
| #display image when done. | |
| with col2: | |
| if 'submitted' in st.session_state: | |
| result = Image.open('out.png') | |
| st.image(result, width=300) | |
| buf = BytesIO() | |
| result.save(buf, format="png") | |
| if len(os.listdir('generated_samples')) <= 10: | |
| img_file_name = f"generated_samples/{str(len(os.listdir('generated_samples')))}.png" | |
| _ = upload_file(path_or_fileobj = 'out.png', | |
| path_in_repo = img_file_name, | |
| repo_id='AfrodreamsAI/afrodreams', | |
| repo_type='space', | |
| token=HF_TOKEN | |
| ) | |
| byte_im = buf.getvalue() | |
| #run =ste.download_button(button_text="Download Image", data=byte_im, download_filename='afrodreams.jpg', mime="image/png") | |
| #keeping the current style by update the weight | |
| keep_style = st.sidebar.checkbox("Keep current style") | |