An Interest In:
Web News this Week
- March 20, 2024
- March 19, 2024
- March 18, 2024
- March 17, 2024
- March 16, 2024
- March 15, 2024
- March 14, 2024
November 19, 2021 10:32 pm GMT
Original Link: https://dev.to/nelsoncode/optimization-of-images-with-fastapi-an2
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:
Tweet
View Full Article
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To