Özellikle PDF rapor oluşturma noktasında, HTML’den dönüştürüyorsanız ve görseller amazon s3 gibi uzak sunucularda yer alıyorsa, rapor içerisine gömmek bazen çileye dönebilir, bu noktada şöyle bir kullanım ile rapor içerisine görselleri basitçe ekleyebilirsiniz.
@register.filter
def read_image_as_base64(image_url):
"""
Usage: <img src="{{ user.user_avatar.url|read_image_as_base64 }}">
"""
if not image_url:
return image_url
try:
response = requests.get(image_url, headers={"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"})
if response.status_code == 200:
image_data = response.content
image_format = os.path.splitext(image_url)[-1].replace('.', '').lower()
encoded_string = base64.b64encode(image_data).decode('utf-8')
if image_format in ['jpg', 'jpeg', 'png', 'gif']:
return 'data:image/%s;base64,%s' % (image_format, encoded_string)
except Exception as e:
logging.error('ERROR: %s' % e)
pass
return image_url