Buckets:
| # | |
| # The Python Imaging Library. | |
| # $Id$ | |
| # | |
| # Basic McIdas support for PIL | |
| # | |
| # History: | |
| # 1997-05-05 fl Created (8-bit images only) | |
| # 2009-03-08 fl Added 16/32-bit support. | |
| # | |
| # Thanks to Richard Jones and Craig Swank for specs and samples. | |
| # | |
| # Copyright (c) Secret Labs AB 1997. | |
| # Copyright (c) Fredrik Lundh 1997. | |
| # | |
| # See the README file for information on usage and redistribution. | |
| # | |
| from __future__ import annotations | |
| import struct | |
| from . import Image, ImageFile | |
| def _accept(prefix: bytes) -> bool: | |
| return prefix.startswith(b"\x00\x00\x00\x00\x00\x00\x00\x04") | |
| ## | |
| # Image plugin for McIdas area images. | |
| class McIdasImageFile(ImageFile.ImageFile): | |
| format = "MCIDAS" | |
| format_description = "McIdas area file" | |
| def _open(self) -> None: | |
| # parse area file directory | |
| assert self.fp is not None | |
| s = self.fp.read(256) | |
| if not _accept(s) or len(s) != 256: | |
| msg = "not an McIdas area file" | |
| raise SyntaxError(msg) | |
| self.area_descriptor_raw = s | |
| self.area_descriptor = w = [0, *struct.unpack("!64i", s)] | |
| # get mode | |
| if w[11] == 1: | |
| mode = rawmode = "L" | |
| elif w[11] == 2: | |
| mode = rawmode = "I;16B" | |
| elif w[11] == 4: | |
| # FIXME: add memory map support | |
| mode = "I" | |
| rawmode = "I;32B" | |
| else: | |
| msg = "unsupported McIdas format" | |
| raise SyntaxError(msg) | |
| self._mode = mode | |
| self._size = w[10], w[9] | |
| offset = w[34] + w[15] | |
| stride = w[15] + w[10] * w[11] * w[14] | |
| self.tile = [ | |
| ImageFile._Tile("raw", (0, 0) + self.size, offset, (rawmode, stride, 1)) | |
| ] | |
| # -------------------------------------------------------------------- | |
| # registry | |
| Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) | |
| # no default extension | |
Xet Storage Details
- Size:
- 1.88 kB
- Xet hash:
- 0f749e951994f934b0a5f17d2f8fc454906f491c38b9c2716c727c3c8d5c0ea4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.