from fastapi import FastAPI ,Request ,Form, UploadFile, File from fastapi.responses import JSONResponse from fastapi.responses import HTMLResponse, FileResponse 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 import server #http://localhost:8000 app = FastAPI() # Root route @app.get('/') def main(): return "Hello World taha" @app.post('/predict') async def predict(supported_types_str: str = Form(),age: str = Form() , file: UploadFile = File(...)): # Form(...) to accept input as web form ,may change when android /upload supported_types=ast.literal_eval(supported_types_str) contents = await file.read() image = Image.open(io.BytesIO(contents)) # Process the image (example: convert to grayscale) processed_image = image.convert("L") # Save the processed image to a temporary file output_file_path = "tmp_processed_image.png" processed_image.save(output_file_path) # Return the processed image for download return FileResponse(output_file_path, media_type='image/png', filename="tmp_processed_image.png") @app.post('/predict2') async def predict2(supported_types_str: str = Form(...), age: str = Form(...), file: UploadFile = File(...)): contents = await file.read() image = Image.open(io.BytesIO(contents)) # Process the image (example: convert to grayscale) processed_image = image.convert("L") # Save the processed image to a BytesIO object img_byte_arr = io.BytesIO() processed_image.save(img_byte_arr, format='PNG') img_byte_arr.seek(0) # Move to the beginning of the BytesIO buffer # Create an HTML response with the processed image html_content = f"""

Processed Image:

Processed Image

Your name: {supported_types_str}

Your age: {age}

Download Processed Image

""" return HTMLResponse(content=html_content)