from base64 import b64encode
from django.template.base import Library
import cStringIO
import qrcode
register = Library()
@register.simple_tag
def qrcode_datauri(data, pixel_size=5, border_pixels=1, error_correction="H"):
qrcode_object = qrcode.QRCode(
error_correction=getattr(
qrcode.constants,
"ERROR_CORRECT_%s" % error_correction,
"H"
),
box_size=max(1, min(100, pixel_size)),
border=max(1, min(100, border_pixels)),
)
qrcode_object.add_data(data)
qrcode_object.make(fit=True)
qrcode_image = qrcode_object.make_image()
byte_stream = cStringIO.StringIO()
qrcode_image.save(byte_stream)
datauri = "data:image/png;base64,%s" % b64encode(byte_stream.getvalue())
byte_stream.close()
return datauri
Comments