Created
December 29, 2020 16:53
-
-
Save heysamtexas/9fca71cb6358be0a58b3b97aae75f788 to your computer and use it in GitHub Desktop.
Django template tag to encode an image to a base64 data-uri
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from urllib.parse import urlparse | |
from django import template | |
from django.template.defaultfilters import stringfilter | |
from base64 import b64encode | |
import requests | |
from django.core.cache import cache | |
register = template.Library() | |
@register.filter(is_safe=True) | |
@stringfilter | |
def dataURI(url): | |
parts = urlparse(url) | |
domain = parts.netloc | |
encoded = cache.get(f'image-{url}') | |
if not encoded: | |
r = requests.get(url) | |
encoded = b64encode(r.content).decode() | |
cache.set(f'favicon-{domain}', encoded, None) | |
return f"data:image/png;base64,{encoded}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment