25 lines
881 B
Python
25 lines
881 B
Python
import fastapi
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
from io import BytesIO
|
|
|
|
from fastapi.responses import PlainTextResponse
|
|
app = fastapi.FastAPI()
|
|
|
|
img = Image.open("./smoking-caterpillar.jpg")
|
|
font = ImageFont.truetype("./unicode.impact.ttf", 72)
|
|
|
|
class JPEGResponse(fastapi.Response):
|
|
media_type="image/jpeg"
|
|
|
|
@app.get("/", response_class=PlainTextResponse)
|
|
async def root():
|
|
return "go to /img for the funny thingy"
|
|
|
|
@app.get("/img", response_class=JPEGResponse)
|
|
async def getImage(request: fastapi.Request):
|
|
img2 = img.copy()
|
|
draw = ImageDraw.Draw(img2)
|
|
draw.text((img2.width/2,img2.height/2), request.headers["x-forwarded-for"], (255,255,255), font=font, stroke_width=5, stroke_fill=(0,0,0), anchor="mm")
|
|
img_bin = BytesIO()
|
|
img2.save(img_bin, format="jpeg")
|
|
return fastapi.Response(content=img_bin.getvalue(), media_type="image/jpeg")
|