| import streamlit as st |
| from pathlib import Path |
|
|
| def setup_page_config(): |
| st.set_page_config( |
| page_title="AI Style Transfer Studio", |
| page_icon="π¨", |
| layout="wide" |
| ) |
|
|
| def apply_custom_css(): |
| st.markdown(""" |
| <style> |
| .stApp { |
| background-color: #1f2937; |
| } |
| .stMarkdown { |
| color: #f3f4f6; |
| } |
| .stButton > button { |
| background-color: #6366F1; |
| color: white; |
| } |
| .stButton > button:hover { |
| background-color: #4F46E5; |
| } |
| .dark-theme { |
| background-color: #111827; |
| border-radius: 10px; |
| padding: 20px; |
| margin: 10px 0; |
| border: 1px solid #374151; |
| } |
| </style> |
| """, unsafe_allow_html=True) |
|
|
| def render_header(): |
| st.markdown(""" |
| <div class="dark-theme" style="text-align: center;"> |
| <h1>π¨ AI Style Transfer Studio</h1> |
| <h3>Transform your ideas into artistic masterpieces</h3> |
| </div> |
| """, unsafe_allow_html=True) |
|
|
| def render_controls(style_names): |
| with st.sidebar: |
| st.markdown("## π― Controls") |
| |
| prompt = st.text_area( |
| "What would you like to create?", |
| placeholder="e.g., a soccer player celebrating a goal", |
| height=100 |
| ) |
| |
| selected_style = st.radio( |
| "Choose Your Style", |
| style_names, |
| index=0 |
| ) |
| |
| st.warning("β οΈ Please note: Image generation may take several hours in the free environment due to limited computational resources.") |
| |
| return prompt, selected_style |
|
|
| def render_image_columns(base_image=None, enhanced_image=None): |
| col1, col2 = st.columns(2) |
| |
| with col1: |
| st.markdown("### Original Style") |
| if base_image: |
| st.image(base_image, use_container_width=True) |
| |
| with col2: |
| st.markdown("### Color Enhanced") |
| if enhanced_image: |
| st.image(enhanced_image, use_container_width=True) |
|
|
| def render_info_sections(): |
| col1, col2 = st.columns(2) |
|
|
| with col1: |
| st.markdown(""" |
| <div class="dark-theme"> |
| <h2>π¨ Style Guide</h2> |
| <table> |
| <tr> |
| <th>Style</th> |
| <th>Best For</th> |
| </tr> |
| <tr> |
| <td><strong>Dhoni Style</strong></td> |
| <td>Cricket scenes, sports action, victory celebrations</td> |
| </tr> |
| <tr> |
| <td><strong>Mickey Mouse Style</strong></td> |
| <td>Cartoon characters, playful scenes, whimsical art</td> |
| </tr> |
| <tr> |
| <td><strong>Balloon Style</strong></td> |
| <td>Festive scenes, colorful celebrations, light and airy compositions</td> |
| </tr> |
| <tr> |
| <td><strong>Lion King Style</strong></td> |
| <td>Animal portraits, majestic scenes, dramatic landscapes</td> |
| </tr> |
| <tr> |
| <td><strong>Rose Flower Style</strong></td> |
| <td>Floral art, romantic scenes, delicate compositions</td> |
| </tr> |
| </table> |
| <em>Choose the style that best matches your creative vision</em> |
| </div> |
| """, unsafe_allow_html=True) |
|
|
| with col2: |
| st.markdown(""" |
| <div class="dark-theme"> |
| <h2>π Color Enhancement Technology</h2> |
| <p>Our advanced color processing uses distance loss to maximize the distinction between color channels, |
| resulting in more vibrant and visually striking images. This technique helps to:</p> |
| <ul> |
| <li>Enhance color separation</li> |
| <li>Improve visual contrast</li> |
| <li>Create more dynamic compositions</li> |
| <li>Preserve artistic style while boosting vibrancy</li> |
| </ul> |
| </div> |
| """, unsafe_allow_html=True) |
| def render_example_gallery(): |
| st.markdown(""" |
| <div class="dark-theme"> |
| <h2>πΌοΈ Example Gallery</h2> |
| <p>Here are some examples of AI-generated artwork:</p> |
| </div> |
| """, unsafe_allow_html=True) |
| |
| |
| image_dir = Path(__file__).parent.parent / "generated_images" |
| image_files = list(image_dir.glob("*.jpg")) |
| |
| |
| cols = st.columns(3) |
| |
| |
| for idx, image_file in enumerate(image_files): |
| with cols[idx % 3]: |
| st.image(str(image_file), caption=image_file.stem.replace("_", " ").title(), use_container_width=True) |