|
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 |
|
|
|
import matplotlib.pyplot as plt |
|
import numpy as np |
|
import ast |
|
import server |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
@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(...)): |
|
|
|
|
|
supported_types=ast.literal_eval(supported_types_str) |
|
|
|
contents = await file.read() |
|
image = Image.open(io.BytesIO(contents)) |
|
|
|
|
|
processed_image = image.convert("L") |
|
|
|
|
|
output_file_path = "tmp_processed_image.png" |
|
processed_image.save(output_file_path) |
|
|
|
|
|
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)) |
|
|
|
|
|
processed_image = image.convert("L") |
|
|
|
|
|
img_byte_arr = io.BytesIO() |
|
processed_image.save(img_byte_arr, format='PNG') |
|
img_byte_arr.seek(0) |
|
|
|
|
|
html_content = f""" |
|
<html> |
|
<body> |
|
<h3>Processed Image:</h3> |
|
<img src="data:image/png;base64,{img_byte_arr.getvalue().decode('latin1')}" alt="Processed Image" style="max-width: 500px;"/> |
|
<br><br> |
|
<p>Your name: {supported_types_str}</p> |
|
<p>Your age: {age}</p> |
|
<p><a href="/download">Download Processed Image</a></p> |
|
</body> |
|
</html> |
|
""" |
|
return HTMLResponse(content=html_content) |
|
|