Initial import from Docker volume
This commit is contained in:
52
tools/qrcode.py
Executable file
52
tools/qrcode.py
Executable file
@@ -0,0 +1,52 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
import qrcode
|
||||
from qrcode.image.pil import PilImage
|
||||
from qrcode.image.svg import SvgImage
|
||||
from webcolors import name_to_rgb
|
||||
|
||||
__all__ = ['generate_svg', 'generate_png']
|
||||
|
||||
|
||||
def _generate(
|
||||
code, image_factory, error_correction, box_size, border, **options):
|
||||
output = BytesIO()
|
||||
qr = qrcode.QRCode(
|
||||
image_factory=image_factory,
|
||||
error_correction=error_correction,
|
||||
box_size=box_size, border=border)
|
||||
qr.add_data(code)
|
||||
qr.make_image(**options).save(output)
|
||||
return output
|
||||
|
||||
|
||||
def _error_correction(value):
|
||||
return getattr(qrcode, f'ERROR_CORRECT_{value.upper()}')
|
||||
|
||||
|
||||
def generate_svg(
|
||||
code, box_size=10, border=4, error_correction='M',
|
||||
background='white', foreground='black'):
|
||||
|
||||
class FactoryImage(SvgImage):
|
||||
pass
|
||||
setattr(FactoryImage, 'background', background)
|
||||
return _generate(
|
||||
code, box_size=box_size, border=border,
|
||||
error_correction=_error_correction(error_correction),
|
||||
image_factory=SvgImage)
|
||||
|
||||
|
||||
def generate_png(
|
||||
code, box_size=10, border=4, error_correction='M',
|
||||
background='white', foreground='black'):
|
||||
background = name_to_rgb(background)
|
||||
foreground = name_to_rgb(foreground)
|
||||
return _generate(
|
||||
code, box_size=box_size, border=border,
|
||||
error_correction=_error_correction(error_correction),
|
||||
back_color=background, fill_color=foreground,
|
||||
image_factory=PilImage)
|
||||
Reference in New Issue
Block a user