File size: 2,324 Bytes
01c9143
 
 
 
 
 
 
896ca03
01c9143
 
 
 
 
 
 
 
 
896ca03
01c9143
 
 
 
 
 
 
 
 
 
 
896ca03
01c9143
 
 
 
 
 
896ca03
 
01c9143
 
 
 
 
6b092bc
 
 
 
 
 
01c9143
 
 
 
 
 
 
896ca03
 
 
01c9143
 
 
 
 
fb84f4e
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 os
import gradio as gr
import requests
import base64
from io import BytesIO
from PIL import Image

count = 0
def image_to_base64(image):
    buffered = BytesIO()
    image.save(buffered, format="PNG")
    return base64.b64encode(buffered.getvalue()).decode('utf-8')

def base64_to_image(base64_str):
    return Image.open(BytesIO(base64.b64decode(base64_str + '=' * (-len(base64_str) % 4))))

def search_face(file):
    global count    
    url = os.environ.get("SERVER_URL")

    try:
        image = Image.open(file)
        image_base64 = image_to_base64(image)
        r = requests.post(url=url, json={"token": os.environ.get("ACCESS_TOKEN"), "type": "novip", "image": image_base64})
    except:
        raise gr.Error("Please select image file!")
    
    if r.text == "No matches":
        gr.Info("No images found.")
        return [], count
    
    try:
        res = r.json().get('img_array')
        out_array = []
        for item in res:
            out_array.append((base64_to_image(item["image"]), item["url"] + "*********"))
        count += 1            
        return out_array, count
    except:
        raise gr.Error("Try again.")


with gr.Blocks() as demo:
    gr.Markdown(
        """
    # Search Your Face Online For Free
    Check our website https://faceonlive.com for on-premises ID Verification & Face Biometrics Solutions.<br/>
    """
    )
    with gr.Row():
        with gr.Column(scale=1):
            image = gr.Image(type='filepath', height=480)
            search_face_button = gr.Button("Search Face")
        with gr.Column(scale=2):
            output = gr.Gallery(label="Found Images", columns=[4], object_fit="contain", height="auto")

        gr.Examples(['examples/1.jpg', 'examples/2.jpg'], 
                    inputs=image, cache_examples="lazy", fn=search_face, outputs=[output])

    search_face_button.click(search_face, inputs=[image], outputs=[output])

    gr.HTML('<a href="https://visitorbadge.io/status?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2FFaceOnLive%2FFace-Search-Online"><img src="https://api.visitorbadge.io/api/combined?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2FFaceOnLive%2FFace-Search-Online&labelColor=%23ff8a65&countColor=%2337d67a&style=flat&labelStyle=upper" /></a>')


demo.launch(server_name="0.0.0.0", server_port=7860, show_api=False)