import os import requests import streamlit as st import sys from vectordb import add_image_to_index, add_pdf_to_index sys.path.append(os.path.dirname(os.path.abspath(__file__))) def image_from_url(clip_model, preprocess): st.title("Image from URL") url = st.text_input("Enter Image URL") correct_url = False if url: try: st.image(url) correct_url = True except: st.error("Invalid URL") correct_url = False if correct_url: if st.button("Add Image"): response = requests.get(url) if response.status_code == 200: add_image_to_index(response.content, clip_model, preprocess) st.success("Image Added to Database") else: st.error("Invalid URL") def upload_image(clip_model, preprocess): st.subheader("Add Image to Database") images = st.file_uploader("Upload Image", type=["jpg", "jpeg", "png"], accept_multiple_files=True) if images: cols = st.columns(5, vertical_alignment="center") for count, image in enumerate(images[:4]): with cols[count]: st.image(image) with cols[4]: if len(images) > 5: st.info(f"and more {len(images) - 5} images...") st.info(f"Total {len(images)} files selected.") if st.button("Add Images"): progress_bar = st.progress(0) for image in images: add_image_to_index(image, clip_model, preprocess) progress_bar.progress((images.index(image) + 1) / len(images), f"{images.index(image) + 1}/{len(images)}") st.success("Images Added to Database")