Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/qrcode/image/pil.py: 60%
42 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Needed on case-insensitive filesystems
3# Try to import PIL in either of the two ways it can be installed.
4try:
5 from PIL import Image, ImageDraw
6except ImportError: # pragma: no cover
7 import Image
8 import ImageDraw
10import qrcode.image.base
13class PilImage(qrcode.image.base.BaseImage):
14 """
15 PIL image builder, default format is PNG.
16 """
17 kind = "PNG"
19 def new_image(self, **kwargs):
20 back_color = kwargs.get("back_color", "white")
21 fill_color = kwargs.get("fill_color", "black")
23 try:
24 fill_color = fill_color.lower()
25 except AttributeError:
26 pass
28 try:
29 back_color = back_color.lower()
30 except AttributeError:
31 pass
33 # L mode (1 mode) color = (r*299 + g*587 + b*114)//1000
34 if fill_color == "black" and back_color == "white": 34 ↛ 39line 34 didn't jump to line 39, because the condition on line 34 was never false
35 mode = "1"
36 fill_color = 0
37 if back_color == "white": 37 ↛ 45line 37 didn't jump to line 45, because the condition on line 37 was never false
38 back_color = 255
39 elif back_color == "transparent":
40 mode = "RGBA"
41 back_color = None
42 else:
43 mode = "RGB"
45 img = Image.new(mode, (self.pixel_size, self.pixel_size), back_color)
46 self.fill_color = fill_color
47 self._idr = ImageDraw.Draw(img)
48 return img
50 def drawrect(self, row, col):
51 box = self.pixel_box(row, col)
52 self._idr.rectangle(box, fill=self.fill_color)
54 def save(self, stream, format=None, **kwargs):
55 kind = kwargs.pop("kind", self.kind)
56 if format is None:
57 format = kind
58 self._img.save(stream, format=format, **kwargs)
60 def __getattr__(self, name):
61 return getattr(self._img, name)