Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
November 19, 2021 10:32 pm GMT

Optimization of images with FastAPI

In this example we will see how to upload images and use background tasks to generate resolutions for different
devices

Dependencies

pip3 install FastAPI uvicorn Pillow

Background Tasks

You can define background tasks to be run after returning a response.

from fastapi import FastAPI, UploadFile, File, BackgroundTasksfrom fastapi.responses import JSONResponsefrom os import getcwdfrom PIL import Imageapp = FastAPI()PATH_FILES = getcwd() + "/"# RESIZE IMAGES FOR DIFFERENT DEVICESdef resize_image(filename: str):    sizes = [{        "width": 1280,        "height": 720    }, {        "width": 640,        "height": 480    }]    for size in sizes:        size_defined = size['width'], size['height']        image = Image.open(PATH_FILES + filename, mode="r")        image.thumbnail(size_defined)        image.save(PATH_FILES + str(size['height']) + "_" + filename)    print("success")@app.post("/upload/file")async def upload_file(background_tasks: BackgroundTasks, file: UploadFile = File(...)):    # SAVE FILE ORIGINAL    with open(PATH_FILES + file.filename, "wb") as myfile:        content = await file.read()        myfile.write(content)        myfile.close()    # RESIZE IMAGES    background_tasks.add_task(resize_image, filename=file.filename)    return JSONResponse(content={"message": "success"})

Output

dogs.jpg # Original Image720_dogs.jpg # Resolution 1280 x 720480_dogs.jpg # Resolution 640 x 480

Example in Github Gist

https://gist.github.com/nelsoncode019/35910eff9c09ca015cfb4748be345133


Original Link: https://dev.to/nelsoncode/optimization-of-images-with-fastapi-an2

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To