Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/PIL/ImtImagePlugin.py: 18%

35 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# 

2# The Python Imaging Library. 

3# $Id$ 

4# 

5# IM Tools support for PIL 

6# 

7# history: 

8# 1996-05-27 fl Created (read 8-bit images only) 

9# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) 

10# 

11# Copyright (c) Secret Labs AB 1997-2001. 

12# Copyright (c) Fredrik Lundh 1996-2001. 

13# 

14# See the README file for information on usage and redistribution. 

15# 

16 

17 

18import re 

19 

20from . import Image, ImageFile 

21 

22# 

23# -------------------------------------------------------------------- 

24 

25field = re.compile(rb"([a-z]*) ([^ \r\n]*)") 

26 

27 

28## 

29# Image plugin for IM Tools images. 

30 

31 

32class ImtImageFile(ImageFile.ImageFile): 

33 

34 format = "IMT" 

35 format_description = "IM Tools" 

36 

37 def _open(self): 

38 

39 # Quick rejection: if there's not a LF among the first 

40 # 100 bytes, this is (probably) not a text header. 

41 

42 if b"\n" not in self.fp.read(100): 

43 raise SyntaxError("not an IM file") 

44 self.fp.seek(0) 

45 

46 xsize = ysize = 0 

47 

48 while True: 

49 

50 s = self.fp.read(1) 

51 if not s: 

52 break 

53 

54 if s == b"\x0C": 

55 

56 # image data begins 

57 self.tile = [ 

58 ("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1)) 

59 ] 

60 

61 break 

62 

63 else: 

64 

65 # read key/value pair 

66 # FIXME: dangerous, may read whole file 

67 s = s + self.fp.readline() 

68 if len(s) == 1 or len(s) > 100: 

69 break 

70 if s[0] == ord(b"*"): 

71 continue # comment 

72 

73 m = field.match(s) 

74 if not m: 

75 break 

76 k, v = m.group(1, 2) 

77 if k == "width": 

78 xsize = int(v) 

79 self._size = xsize, ysize 

80 elif k == "height": 

81 ysize = int(v) 

82 self._size = xsize, ysize 

83 elif k == "pixel" and v == "n8": 

84 self.mode = "L" 

85 

86 

87# 

88# -------------------------------------------------------------------- 

89 

90Image.register_open(ImtImageFile.format, ImtImageFile) 

91 

92# 

93# no extension registered (".im" is simply too common)