Update index.html
Browse files- index.html +61 -26
index.html
CHANGED
|
@@ -3,12 +3,10 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="utf-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 6 |
-
<title>Gradio-Lite: Serverless Gradio
|
| 7 |
-
<meta name="description" content="Gradio-Lite: Serverless Gradio Running Entirely in Your Browser">
|
| 8 |
-
|
| 9 |
<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.js"></script>
|
| 10 |
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.css" />
|
| 11 |
-
|
| 12 |
<style>
|
| 13 |
html, body {
|
| 14 |
margin: 0;
|
|
@@ -21,37 +19,74 @@
|
|
| 21 |
<gradio-lite>
|
| 22 |
<gradio-file name="app.py" entrypoint>
|
| 23 |
import gradio as gr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
def
|
| 28 |
-
|
| 29 |
-
|
|
|
|
| 30 |
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
-
|
| 39 |
-
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
-
<gradio-file name="filters.py">
|
| 42 |
-
from skimage.color import rgb2gray
|
| 43 |
|
| 44 |
-
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
</gradio-file>
|
| 47 |
-
|
| 48 |
-
<gradio-file name="lion.jpg" url="https://raw.githubusercontent.com/gradio-app/gradio/main/gradio/test_data/lion.jpg" />
|
| 49 |
-
<gradio-file name="logo.png" url="https://raw.githubusercontent.com/gradio-app/gradio/main/guides/assets/logo.png" />
|
| 50 |
-
|
| 51 |
<gradio-requirements>
|
| 52 |
# Same syntax as requirements.txt
|
| 53 |
-
|
|
|
|
|
|
|
| 54 |
</gradio-requirements>
|
| 55 |
</gradio-lite>
|
| 56 |
</body>
|
| 57 |
-
</html>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="utf-8">
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 6 |
+
<title>Gradio-Lite: Serverless Gradio with AI Features</title>
|
| 7 |
+
<meta name="description" content="Gradio-Lite: Serverless Gradio Running Entirely in Your Browser with AI Features">
|
|
|
|
| 8 |
<script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.js"></script>
|
| 9 |
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@gradio/lite/dist/lite.css" />
|
|
|
|
| 10 |
<style>
|
| 11 |
html, body {
|
| 12 |
margin: 0;
|
|
|
|
| 19 |
<gradio-lite>
|
| 20 |
<gradio-file name="app.py" entrypoint>
|
| 21 |
import gradio as gr
|
| 22 |
+
import numpy as np
|
| 23 |
+
from PIL import Image
|
| 24 |
+
from rembg import remove
|
| 25 |
+
import base64
|
| 26 |
+
from io import BytesIO
|
| 27 |
|
| 28 |
+
# Placeholder for a very basic "image generation" - creates a colored square
|
| 29 |
+
def generate_image(color="red"):
|
| 30 |
+
if color == "red":
|
| 31 |
+
img_array = np.array([[[255, 0, 0] for _ in range(256)] for _ in range(256)], dtype=np.uint8)
|
| 32 |
+
elif color == "green":
|
| 33 |
+
img_array = np.array([[[0, 255, 0] for _ in range(256)] for _ in range(256)], dtype=np.uint8)
|
| 34 |
+
elif color == "blue":
|
| 35 |
+
img_array = np.array([[[0, 0, 255] for _ in range(256)] for _ in range(256)], dtype=np.uint8)
|
| 36 |
+
else:
|
| 37 |
+
img_array = np.array([[[255, 255, 255] for _ in range(256)] for _ in range(256)], dtype=np.uint8)
|
| 38 |
+
return Image.fromarray(img_array)
|
| 39 |
|
| 40 |
+
def remove_background(input_image):
|
| 41 |
+
if input_image is None:
|
| 42 |
+
return None
|
| 43 |
+
return remove(input_image)
|
| 44 |
|
| 45 |
+
# Placeholder for 3D conversion - just adds a border
|
| 46 |
+
def convert_to_3d(input_image):
|
| 47 |
+
if input_image is None:
|
| 48 |
+
return None
|
| 49 |
+
img = np.array(input_image)
|
| 50 |
+
height, width, _ = img.shape
|
| 51 |
+
border_size = 10
|
| 52 |
+
new_img = np.zeros((height + 2 * border_size, width + 2 * border_size, 3), dtype=np.uint8)
|
| 53 |
+
new_img[border_size:height + border_size, border_size:width + border_size] = img
|
| 54 |
+
new_img[:border_size, :, :] = [150,150,150]
|
| 55 |
+
new_img[height + border_size:, :, :] = [150,150,150]
|
| 56 |
+
new_img[:, :border_size, :] = [150,150,150]
|
| 57 |
+
new_img[:, width + border_size:, :] = [150,150,150]
|
| 58 |
+
return Image.fromarray(new_img)
|
| 59 |
|
| 60 |
+
def pil_to_base64(pil_image):
|
| 61 |
+
buffered = BytesIO()
|
| 62 |
+
pil_image.save(buffered, format="PNG")
|
| 63 |
+
img_str = base64.b64encode(buffered.getvalue()).decode()
|
| 64 |
+
return f"data:image/png;base64,{img_str}"
|
| 65 |
|
|
|
|
|
|
|
| 66 |
|
| 67 |
+
with gr.Blocks() as demo:
|
| 68 |
+
with gr.Row():
|
| 69 |
+
with gr.Column():
|
| 70 |
+
color_dropdown = gr.Dropdown(choices=["red", "green", "blue", "white"], label="Image Color")
|
| 71 |
+
generate_button = gr.Button("Generate Image")
|
| 72 |
+
generated_image = gr.Image(label="Generated Image")
|
| 73 |
+
remove_bg_button = gr.Button("Remove Background")
|
| 74 |
+
removed_bg_image = gr.Image(label="Background Removed Image")
|
| 75 |
+
convert_3d_button = gr.Button("Convert to 3D")
|
| 76 |
+
converted_3d_image = gr.Image(label="3D Converted Image")
|
| 77 |
+
|
| 78 |
+
generate_button.click(generate_image, inputs=[color_dropdown], outputs=[generated_image])
|
| 79 |
+
remove_bg_button.click(remove_background, inputs=[generated_image], outputs=[removed_bg_image])
|
| 80 |
+
convert_3d_button.click(convert_to_3d, inputs=[removed_bg_image], outputs=[converted_3d_image])
|
| 81 |
+
|
| 82 |
+
demo.launch()
|
| 83 |
</gradio-file>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
<gradio-requirements>
|
| 85 |
# Same syntax as requirements.txt
|
| 86 |
+
pillow
|
| 87 |
+
rembg
|
| 88 |
+
numpy
|
| 89 |
</gradio-requirements>
|
| 90 |
</gradio-lite>
|
| 91 |
</body>
|
| 92 |
+
</html>
|