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
« 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#
18import re
20from . import Image, ImageFile
22#
23# --------------------------------------------------------------------
25field = re.compile(rb"([a-z]*) ([^ \r\n]*)")
28##
29# Image plugin for IM Tools images.
32class ImtImageFile(ImageFile.ImageFile):
34 format = "IMT"
35 format_description = "IM Tools"
37 def _open(self):
39 # Quick rejection: if there's not a LF among the first
40 # 100 bytes, this is (probably) not a text header.
42 if b"\n" not in self.fp.read(100):
43 raise SyntaxError("not an IM file")
44 self.fp.seek(0)
46 xsize = ysize = 0
48 while True:
50 s = self.fp.read(1)
51 if not s:
52 break
54 if s == b"\x0C":
56 # image data begins
57 self.tile = [
58 ("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1))
59 ]
61 break
63 else:
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
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"
87#
88# --------------------------------------------------------------------
90Image.register_open(ImtImageFile.format, ImtImageFile)
92#
93# no extension registered (".im" is simply too common)