I ended up using the PIL library. It was finally quite easy and could be summarized by the following code :
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
im = Image.open('path/to/map.png')
font = ImageFont.truetype('/usr/share/fonts/dejavu/DejaVuSans.ttf', 7)
draw = ImageDraw.Draw(im)
draw.text((x, y), sentence, font=font, fill='black')
response = HttpResponse(mimetype='image/png')
im.save(response, 'PNG')
return response
Logic behind x and y is irrelevant here, but bear in mind that they start quite illogically on the upper left corner of the image and go from there to right and bottom with positive numbers.