File size: 1,865 Bytes
569104e
c53a0da
 
 
569104e
c53a0da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from transformers import pipeline
from PIL import Image
import torch

# --- Config ---
st.set_page_config(page_title="Image β†’ Prompt", page_icon="πŸ–ΌοΈ", layout="centered")

# Laad model (gecached)
@st.cache_resource
def load_model():
    return pipeline(
        "image-to-text",
        model="llava-hf/llava-v1.6-34b-hf",
        torch_dtype=torch.float16,
        device_map="auto"
    )

pipe = load_model()

# Stijlen
STIJLEN = {
    "Realistisch": ", fotorealistisch, 8k, scherp, natuurlijk licht",
    "Anime": ", anime stijl, gedetailleerde ogen, Studio Ghibli, 4k",
    "Olieverf": ", olieverf op doek, impressionistisch, Van Gogh stijl",
    "Cyberpunk": ", cyberpunk, neon lichten, regenachtige straten, Blade Runner",
    "Geen stijl": ""
}

# --- UI ---
st.title("πŸ–ΌοΈ Image β†’ Prompt Generator")
st.markdown("*Upload een foto, kies een stijl, krijg een perfecte AI-prompt.*")

col1, col2 = st.columns([1, 1])
with col1:
    uploaded_file = st.file_uploader("Kies een afbeelding", type=["png", "jpg", "jpeg"])
with col2:
    stijl = st.selectbox("Kies een stijl", options=list(STIJLEN.keys()))

if uploaded_file:
    image = Image.open(uploaded_file).convert("RGB")
    st.image(image, caption="Jouw afbeelding", use_column_width=True)

    with st.spinner("Prompt genereren..."):
        result = pipe(image)
        raw_prompt = result[0]["generated_text"]

        # Optimaliseer
        final_prompt = (
            raw_prompt
            .replace("a photo of", "")
            .replace("an image of", "")
            .strip()
            .capitalize()
        )
        final_prompt += STIJLEN[stijl]

    st.success("**Prompt:**")
    st.code(final_prompt, language=None)

    st.download_button(
        "πŸ“₯ Download prompt",
        final_prompt,
        file_name="prompt.txt",
        mime="text/plain"
    )