File size: 2,287 Bytes
98d84be
5d3f355
 
 
 
 
98d84be
5d3f355
68a20ec
 
 
 
98d84be
5d3f355
68a20ec
5d3f355
 
 
 
 
 
d127d6c
 
5d3f355
 
 
 
d127d6c
5d3f355
 
68a20ec
 
 
 
 
 
 
 
 
 
5d3f355
 
 
 
 
 
 
 
 
68a20ec
 
 
 
5d3f355
68a20ec
98d84be
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
import gradio as gr
from util import download
import os 
from dotenv import load_dotenv
from photo_search import PhotoSearch
from PIL import Image

load_dotenv()
tree_path = download.gdrive(os.getenv('TREE_GDRIVE_ID'), dir='temp')
data_path = download.gdrive(os.getenv('DATA_GDRIVE_ID'), dir='temp')
# tree_path= 'temp/trees-pocari.ann'
# data_path = 'temp/drive_ids_pocari.json'

ai = PhotoSearch(tree_path, data_path)
htmlPref = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Image Gallery</title><style>body{font-family:Arial,sans-serif;margin:0;padding:0}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.gallery img{width:100%;height:auto;display:block}</style></head><body>'

def search_photo(image):    
    try:
        found_ids = ai.search(image)
        if len(found_ids) == 0:
            return '''
                <h2>Foto Serupa Tidak Ditemukan, Tips: </h2> <br/>
                <p>
                - Gunakan foto terupdate,
                - Jika kamu punya foto saat lari, lebih baik gunakan foto itu,
                - Jangan menggunakan foto blur,
                - Jangan upload foto yang menggunakan aksesoris yang tidak kamu gunakan saat lari (semisal kacamata)
                </p>
                '''
                
        # result = f"{len(found_ids)} foto kamu berhasil ditemukan!"
        link_format = [f'<a href="{link}" target="_blank"> <img src="{link}" height="150"></img></a>' for i, link in enumerate(found_ids)]

        return htmlPref + f''' 
        <h2> {len(found_ids)} Foto Ditemukan! </h2>
        <p> Klik foto untuk memperbesar atau download </p>
        <div class="gallery"> 
        {"".join(link_format)}
        </div></body></html>
        '''
    except Exception as e: 
        result = f"Gagal: {e}"
    return result 


gr_inputs = [
  gr.Image(type='pil')
]

gallery = gr.Gallery(
            label="Generated images", show_label=False, elem_id="gallery"
        ).style(columns=[2], rows=[2], object_fit="contain", height="auto")

gr.Markdown('Upload Foto Wajah Kamu Ya (Pastikan hanya terdapat SATU wajah pada foto yang kamu upload)')
iface = gr.Interface(fn=search_photo, inputs=gr_inputs, outputs="html")
iface.launch()