from fastapi import FastAPI ,Request ,Form, UploadFile, File from fastapi.responses import HTMLResponse, FileResponse,StreamingResponse,JSONResponse import os import io from PIL import ImageOps,Image ,ImageFilter #from transformers import pipeline import matplotlib.pyplot as plt import numpy as np import ast from server import * import cv2 #http://localhost:8000 app = FastAPI() # Root route @app.get('/') def main(): return "Hello World taha" ##### use space /tmp/ ... @app.post('/imageStep1') async def image_step1(image_file: UploadFile = File(...),type_of_filters: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)): contents = await image_file.read() image = Image.open(io.BytesIO(contents)) produced_image=SegmenterBackground().Back_step1(image,type_of_filters,int(blur_radius))[0]#----> # Save the processed image to a temporary file output_file_path_tmp = "/tmp/tmp_processed_image.png" produced_image.save(output_file_path_tmp) # Return the processed image for download return FileResponse(output_file_path_tmp, media_type='image/png', filename="/tmp/tmp_processed_image.png") @app.post('/imageStep2') async def image_step2(image_file: UploadFile = File(...),things_replace: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)): contents = await image_file.read() image = Image.open(io.BytesIO(contents)) things_replace=ast.literal_eval(things_replace) produced_image=SegmenterBackground().Back_step2(image,"cam",things_replace,int(blur_radius)) # Save the processed image to a temporary file output_file_path_tmp = "/tmp/tmp_processed_image.png" produced_image.save(output_file_path_tmp) # Return the processed image for download return FileResponse(output_file_path_tmp, media_type='image/png', filename="/tmp/tmp_processed_image.png") @app.post('/Video') async def Video(video_file: UploadFile = File(...),kind_back: str = Form(...), blur_radius: str = Form(...)):#--->,background_image: UploadFile = File(...)): #video_data = await video_file.read() #nparr = np.frombuffer(video_data, np.uint8) #video_path=cv2.imdecode(nparr, cv2.IMREAD_COLOR) #named this as just passed as it's path video_path = f'tmp/tmptmp.mp4'#{video_file.filename} with open(video_path, 'wb') as f: f.write(await video_file.read()) produced_video=SegmenterBackground().Back_video(video_path, 'tmp/29_sep_2.avi','cam',['animal','person'])#video,background_image,what_remove,blur_radius=23) return StreamingResponse(open('tmp/29_sep_2.avi', "rb"), media_type="video/mp4")