user8802333
user8802333

Reputation: 489

Saving a QR Code in django python as base64 for to_artistic method

I would like to save my QR Code from the to_artistic method.

For my other qr codes I have been doing:

buffer = io.BytesIO()
qr_img.save(buffer, format="PNG")
qr_code = "data:image/png;base64,"+base64.b64encode(buffer.getvalue()).decode("utf-8")
                

How can I do this for qr.to_artistic? Documentation: https://segno.readthedocs.io/en/latest/web-development.html

Thanks!

Upvotes: 1

Views: 3793

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476574

You can pass a file-like object to the target, so:

import segno

qr = segno.make('The Beatles -- Abbey Road', error='h')

buffer = io.BytesIO()
qr.to_artistic(
    background='my_background.gif',
    target=buffer,
    scale=4,
    kind='gif'
)
qr_code = 'data: image/gif;base64, '+base64.b64encode(buffer.getvalue()).decode('utf-8')

You need to specify the kind=… parameter, otherwise the library will try to derive this from the filename, but since you use a BytesIO object, this has no filename.

Upvotes: 1

Related Questions