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

1# Needed on case-insensitive filesystems 

2 

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 

9 

10import qrcode.image.base 

11 

12 

13class PilImage(qrcode.image.base.BaseImage): 

14 """ 

15 PIL image builder, default format is PNG. 

16 """ 

17 kind = "PNG" 

18 

19 def new_image(self, **kwargs): 

20 back_color = kwargs.get("back_color", "white") 

21 fill_color = kwargs.get("fill_color", "black") 

22 

23 try: 

24 fill_color = fill_color.lower() 

25 except AttributeError: 

26 pass 

27 

28 try: 

29 back_color = back_color.lower() 

30 except AttributeError: 

31 pass 

32 

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" 

44 

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 

49 

50 def drawrect(self, row, col): 

51 box = self.pixel_box(row, col) 

52 self._idr.rectangle(box, fill=self.fill_color) 

53 

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) 

59 

60 def __getattr__(self, name): 

61 return getattr(self._img, name)