Hi to draw three different text with different options for ex:
text must go in new lines.
def pil_image(request):
text = request.GET.get('text', None)
font = str(request.GET.get('font', 'arial'))
fontsize = int(request.GET.get('fontsize', '20'))
textcolor = str(request.GET.get('textcolor', '000'))
import Image, ImageDraw, ImageFont, textwrap
img = Image.open('media/text/transparent.png')
img = img.convert("RGBA")
datas = img.getdata()
w, h = img.size
newData = []
for item in datas:
if item[0] == 255 and item[1] == 255 and item[2] == 255:
newData.append((255, 255, 255, 0))
else:
newData.append(item)
img.putdata(newData)
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("media/text/fonts/" + font + ".ttf", fontsize, encoding="unic")
margin = offset = 40
for line in textwrap.wrap(text, width=48):
w, h = draw.textsize(line)
draw.text((margin, offset), line, font=font, fill='#'+textcolor)
offset += font.getsize(line)[1]
del draw
img.save("media/text/custom.png", "PNG")
return HttpResponse("<img src='/media/text/custom.png'>");
We simply use print() inside, but prepending the text with brightness and color codes, and appending Style. RESET_ALL in the end to reset to default color and brightness each time we use the function.
Pillow allows you to change the color of your text by using the fill parameter. You can set this color using an RGB tuple, an integer or a supported color name.
The "fill" parameter should be a tuple with 4 number, as you use a RGBA colormode.
For opaque red:
draw.text((margin, offset), line, font=font, fill=(255,0,0,255) )
Use hex value for colour, as follows:
draw.text((margin, offset), line, font=font, fill="#000")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With