Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pillow-10.4.0-py3.8-linux-x86_64.egg/PIL/McIdasImagePlugin.py: 31%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

32 statements  

1# 

2# The Python Imaging Library. 

3# $Id$ 

4# 

5# Basic McIdas support for PIL 

6# 

7# History: 

8# 1997-05-05 fl Created (8-bit images only) 

9# 2009-03-08 fl Added 16/32-bit support. 

10# 

11# Thanks to Richard Jones and Craig Swank for specs and samples. 

12# 

13# Copyright (c) Secret Labs AB 1997. 

14# Copyright (c) Fredrik Lundh 1997. 

15# 

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

17# 

18from __future__ import annotations 

19 

20import struct 

21 

22from . import Image, ImageFile 

23 

24 

25def _accept(prefix: bytes) -> bool: 

26 return prefix[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04" 

27 

28 

29## 

30# Image plugin for McIdas area images. 

31 

32 

33class McIdasImageFile(ImageFile.ImageFile): 

34 format = "MCIDAS" 

35 format_description = "McIdas area file" 

36 

37 def _open(self) -> None: 

38 # parse area file directory 

39 assert self.fp is not None 

40 

41 s = self.fp.read(256) 

42 if not _accept(s) or len(s) != 256: 

43 msg = "not an McIdas area file" 

44 raise SyntaxError(msg) 

45 

46 self.area_descriptor_raw = s 

47 self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) 

48 

49 # get mode 

50 if w[11] == 1: 

51 mode = rawmode = "L" 

52 elif w[11] == 2: 

53 # FIXME: add memory map support 

54 mode = "I" 

55 rawmode = "I;16B" 

56 elif w[11] == 4: 

57 # FIXME: add memory map support 

58 mode = "I" 

59 rawmode = "I;32B" 

60 else: 

61 msg = "unsupported McIdas format" 

62 raise SyntaxError(msg) 

63 

64 self._mode = mode 

65 self._size = w[10], w[9] 

66 

67 offset = w[34] + w[15] 

68 stride = w[15] + w[10] * w[11] * w[14] 

69 

70 self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] 

71 

72 

73# -------------------------------------------------------------------- 

74# registry 

75 

76Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) 

77 

78# no default extension