File size: 2,186 Bytes
017c62a
 
062e789
 
017c62a
 
 
 
 
 
 
 
062e789
 
21562f6
 
 
 
58e4d25
 
 
062e789
 
 
46fbc6c
58e4d25
 
 
062e789
 
21562f6
 
 
46fbc6c
21562f6
017c62a
 
 
 
 
 
 
21562f6
 
062e789
21562f6
017c62a
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import streamlit as st
import os
from PIL import Image
import io
from utils.gemini_utils import get_meme_template_description
from utils.meme_utils import generate_meme_text

def main():
    st.title("Meme Generator")

    # Meme template gallery
    st.header("Meme Template Gallery")
    meme_templates = [f for f in os.listdir("meme_templates") if f.endswith(('.png', '.jpg', '.jpeg'))]
    
    # Use session state to store the selected template
    if 'selected_template' not in st.session_state:
        st.session_state.selected_template = None

    # Create a 4-column layout
    cols = st.columns(4)
    
    for idx, template in enumerate(meme_templates):
        col = cols[idx % 4]
        image_path = os.path.join("meme_templates", template)
        with Image.open(image_path) as img:
            col.image(img, use_column_width=True)
        if col.button(f"Select {template}", key=f"btn_{template}"):
            st.session_state.selected_template = template

    # Display selected template and generate meme
    if st.session_state.selected_template:
        st.subheader(f"Selected Template: {st.session_state.selected_template}")
        image_path = os.path.join("meme_templates", st.session_state.selected_template)
        with Image.open(image_path) as img:
            st.image(img, caption=st.session_state.selected_template, use_column_width=True)

        # Get user input for topic
        topic = st.text_input("Enter a topic for your meme:")

        if st.button("Generate Meme"):
            with st.spinner("Generating meme..."):
                # Get meme template description
                with open(image_path, "rb") as img_file:
                    img_bytes = img_file.read()
                
                meme_description = get_meme_template_description(img_bytes)

                # Generate meme text
                meme_text = generate_meme_text(meme_description, topic)

                # Display results
                st.subheader("Generated Meme Text:")
                st.write(meme_text)

                st.subheader("Meme Template Description:")
                st.write(meme_description)

if __name__ == "__main__":
    main()