from fastapi import FastAPI, Response from PIL import Image import io app = FastAPI() @app.get( "/", # Set what the media type will be in the autogenerated OpenAPI specification. # fastapi.tiangolo.com/advanced/additional-responses/#additional-media-types-for-the-main-response responses = { 200: { "content": {"image/png": {}} } }, # Prevent FastAPI from adding "application/json" as an additional # response media type in the autogenerated OpenAPI specification. # https://github.com/tiangolo/fastapi/issues/3258 response_class=Response, ) def get_image(): image = Image.new('RGB', (1000, 1000), (100,200,10)) imgByteArr = io.BytesIO() # image.save expects a file as a argument, passing a bytes io ins image.save(imgByteArr, format="PNG") # Turn the BytesIO object back into a bytes object imgByteArr = imgByteArr.getvalue() # media_type here sets the media type of the actual response sent to the client. return Response(content=imgByteArr, media_type="image/png")