File size: 2,953 Bytes
89b53ac
0fee845
89b53ac
 
0fee845
89b53ac
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import os
import streamlit as st
from PIL import Image
import os



from models.imageCaptioning import generateCaption
from models.storyGeneration import generateStory

st.set_page_config(page_title="Image2Story Generator", layout="centered")
st.title("Image2Story Generator")
st.write("Upload your Image and let us generate a Story for you")

upload_dir = "/tmp/uploads"
os.makedirs(upload_dir, exist_ok=True)

#Upload your file
uploaded_file = st.sidebar.file_uploader("Upload Your Image", type= ["jpg" , "jpeg" , "png" , "webp"])



if uploaded_file:
    image = Image.open(uploaded_file).convert("RGB")
    image_path = os.path.join(upload_dir, uploaded_file.name)
    image.save(image_path)
    
    # st.image(image, caption="uploaded image" , use_container_width=True)

    
    
    # with st.spinner("Generating Captions..."):
    #     caption = generateCaption(image_path)
    #     st.success(f"The image is of : {caption}")



    with st.spinner("Generating Captions..."):
        caption = generateCaption(image_path)
        st.success("Caption generated successfully!")
    
        st.markdown(f"""
            <div style="background-color:#f0f2f6;padding:15px 20px;border-radius:10px;margin-top:20px;border-left:5px solid #4CAF50;">
                <h4 style="margin-bottom:10px;">๐Ÿ–ผ๏ธ <strong>Scenario is :</strong></h4>
                <p style="font-size:16px;color:#333;">{caption}</p>
            </div>
        """, unsafe_allow_html=True)


    story_style = st.sidebar.selectbox("Choose Story Style" , ["William Shakespeare" , "Leo Tolstoy", "Charles Dickens" , "Haruki Murakami" , "J.K. Rowling" , "Stephen King"])  
    
    prompt = f"""
    You are a professional story writer with a deep understanding of surreal and introspective storytelling, inspired by {story_style}.
    Write a short story based on the theme: {caption.strip()}.
    The story should be in between 500 and 800 words, and must include:
    - A clear beginning and ending.
    - Subtle emotional depth and a dreamlike atmosphere.
    - Elements typical of {story_style}'s writing style.
    Do not include a title. Return only the story.
    """

    
    # with st.spinner("Generating Story..."): 
    #     story = generateStory(captions)
    #     st.markdown("Generated Story")
    #     st.write(story)


    with st.spinner("Generating Story..."): 
        story = generateStory(caption)
    
        st.markdown("""
            <div style="background-color:#f9f9f9;padding:15px 20px;border-radius:10px;margin-top:20px;border-left:5px solid #2196F3;">
                <h4 style="margin-bottom:10px;">๐Ÿ“– <strong>Generated Story</strong></h4>
        """, unsafe_allow_html=True)
    
        formatted_story = story.replace('\n', '<br>')

        st.markdown(f"""
            <div style="font-size:16px;line-height:1.6;color:#444;">
                {formatted_story}
            </div>
            </div>
        """, unsafe_allow_html=True)