Pazar, Aralık 22, 2024

Django’da Uzak Sunucuda Barınan Görselin Rapora Eklenmesi

yüksek çözünürlüklü yeşil renkli orjinal django logosu

Ö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