This template filter converts email text to image with the email text. It uses PIL and it makes the image as high and wide as the text.
This template filter is intended to be used as anti-spider protection.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from PIL import Image, ImageDraw, ImageFont
import md5
import os
import sys
def mailhide(value):
email_md5 = md5.new(value).hexdigest()
email_path = os.path.join(MEDIA_ROOT, EMAIL_THUMBNAILS).replace('\\', '/')
em_file_path = os.path.join(email_path, email_md5 + '.png').replace('\\', '/')
if not os.path.exists(email_path):
os.mkdir(email_path)
if not os.path.exists(em_file_path):
img = Image.new('RGBA',(1,1))
font = ImageFont.truetype(FONT_PATH, FONT_SIZE)
draw = ImageDraw.ImageDraw(img)
w,h = draw.textsize(value, font = font)
img = img.resize((w,h))
draw = ImageDraw.ImageDraw(img)
draw.text((0,0),value, font = font, fill = FONT_COLOR)
img.save(em_file_path)
result = '<img src = "%s%s/%s.png"/>'%(MEDIA_URL, EMAIL_THUMBNAILS,email_md5)
return mark_safe(result)
|
More like this
- find even number by Rajeev529 1 month, 1 week ago
- Form field with fixed value by roam 1 month, 4 weeks ago
- New Snippet! by Antoliny0919 2 months, 1 week ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 4 months, 3 weeks ago
- get_object_or_none by azwdevops 8 months, 2 weeks ago
Comments
Also, if you change
into
it anti-aliases non-black fonts correctly. You can also remove
and replace it with
#
Please login first before commenting.