File size: 2,589 Bytes
4ba3e6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import requests
from PIL import Image
from io import BytesIO
import base64

API_KEY = "AIzaSyAbKZgDxZ-lL-vNXStTl0S4vZftDSYu890"



st.set_page_config(page_title="Image To Text", page_icon="icon.png", layout="centered", initial_sidebar_state="auto", menu_items=None)

# Streamlit başlık
st.title("Gemini API Resim Analizi")


# Kullanıcının resim yüklemesine izin verme
uploaded_file = st.file_uploader("Lütfen bir resim yükleyin", type=["jpg", "jpeg", "png"])

st.subheader("""
             Resim yükledikten sonra resim hakkında istediğiniz soruyu aşağıda çıkacak alana sorabilirsiniz. 
             Lütfen sadece resim hakkında soru sorun !!!
             """)



# Eğer resim yüklendiyse
if uploaded_file is not None:
   

    
    # Resmi görüntüle
    image = Image.open(uploaded_file)
    st.image(image, caption="Yüklenen Resim", use_column_width=True)
    prompt_text = st.text_area("Lütfen resimde sormak istediğiniz şeyi yazın")
    buton = st.button("Resmi Yorumla")
    image = image.convert('RGB')

    # Gemini API için resmi hazırla
    image_bytes = BytesIO()
    image.save(image_bytes, format='JPEG')
    image_base64 = base64.b64encode(image_bytes.getvalue()).decode('utf-8')

    # Gemini API isteği yap
    api_url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro-vision:generateContent?key=AIzaSyAbKZgDxZ-lL-vNXStTl0S4vZftDSYu890"
    headers = {'Content-Type': 'application/json'}

    

    prompt_text_ben = """

Bu resimde gördüğünüz sahneyi ayrıntılı bir şekilde tanımlamanızı istiyorum. Lütfen resimdeki ana nesne veya nesneleri belirtin, renklerini ve konumlarını açıklayın. Ayrıca, resimdeki atmosferi veya duygusal tonu yakalamak için kullanabileceğiniz ifadeleri eklemeniz beni memnun eder.

"""
    request_data = {
        "contents": [
            {
                "parts": [
                    {"text": prompt_text},
                    {
                        "inline_data": {
                            "mime_type": "image/jpeg",
                            "data": image_base64
                        }
                    }
                ]
            }
        ]
    }

    

    if buton:
        response = requests.post(api_url, json=request_data, headers=headers)
        print(response.json())

        # Gemini API'den gelen cevabı işle
        result_text = response.json()['candidates'][0]['content']['parts'][0]['text']

        # Kullanıcıya sonucu göster
        st.subheader("Resmin İçeriği:")
        st.write(result_text)