File size: 2,798 Bytes
78263be
7907d0c
 
78263be
7907d0c
 
868e527
49671af
78263be
7907d0c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78263be
 
7907d0c
 
868e527
7907d0c
 
78263be
868e527
49671af
 
 
868e527
 
78263be
7907d0c
 
 
 
78263be
 
7907d0c
 
 
78263be
7907d0c
 
95c75ae
78263be
868e527
 
 
 
 
fd2fa1f
 
 
 
 
 
 
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
import streamlit as st
import openai
import json
from PIL import Image
from google.oauth2 import service_account
from baseline_utils import detect_text_in_image, summarize_diary_text, analyze_writer_image, generate_comic_book
import glob
import os

# Load secrets
openai_api_key = st.secrets["general"]["openai_api_key"]
google_service_account_info = json.loads(st.secrets["general"]["google_service_account"])
gemini_api_key = st.secrets["general"]["gemini_api_key"]

# Initialize OpenAI
openai.api_key = openai_api_key

# Function to get Google credentials
def get_google_credentials():
    return service_account.Credentials.from_service_account_info(google_service_account_info)

st.title('Handwritten Diary to Comic Book')
uploaded_diary = st.file_uploader("Upload your handwritten diary image", type=["png", "jpg", "jpeg"])
uploaded_writer_image = st.file_uploader("Upload a photo of the writer", type=["png", "jpg", "jpeg"])

if uploaded_diary and uploaded_writer_image:
    st.write("Analyzing your diary and writer...")

    # Read the uploaded images using file-like objects
    diary_image = Image.open(uploaded_diary)
    writer_image = Image.open(uploaded_writer_image)

    # Save the file-like objects as image files (optional if needed)
    diary_image_path = "temp_upload_images/temp_diary_image.png"
    writer_image_path = "temp_upload_images/temp_writer_image.png"
    os.makedirs("temp_upload_images", exist_ok=True)
    diary_image.save(diary_image_path)
    writer_image.save(writer_image_path)

    # Detect text from the diary image
    google_credentials = get_google_credentials()
    detected_text = detect_text_in_image(diary_image_path, google_credentials)
    summarized_text = summarize_diary_text(detected_text, openai_api_key)
    st.write(f"Summarized Diary Text: {summarized_text}")

    # Analyze the writer's image using Gemini API
    writer_summary = analyze_writer_image(writer_image_path, gemini_api_key)
    st.write(f"Writer Description: {writer_summary}")

    # Generate the comic book based on the summaries
    st.write("Generating comic book images...")
    generate_comic_book(summarized_text, writer_summary, num_pages=4)

    st.write("Comic book generated successfully!")

    # Assuming generated images are saved as 'comic_book/page_1.png', 'comic_book/page_2.png', etc.
    image_files = sorted(glob.glob("comic_book/page_*.png"))  # Find all the generated comic book pages

    # Display images in 2 columns
    cols = st.columns(2)  # Create two columns for the images

    for i, image_file in enumerate(image_files):
        with cols[i % 2]:  # Alternate between the two columns
            # Display each comic book page in the respective column
            st.image(image_file, caption=image_file.split('/')[-1], use_column_width=True)