## 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__importannotationsimportstructfrom.importImage,ImageFiledef_accept(prefix:bytes)->bool:returnprefix[:8]==b"\x00\x00\x00\x00\x00\x00\x00\x04"### Image plugin for McIdas area images.
[docs]classMcIdasImageFile(ImageFile.ImageFile):format="MCIDAS"format_description="McIdas area file"def_open(self)->None:# parse area file directoryassertself.fpisnotNones=self.fp.read(256)ifnot_accept(s)orlen(s)!=256:msg="not an McIdas area file"raiseSyntaxError(msg)self.area_descriptor_raw=sself.area_descriptor=w=[0]+list(struct.unpack("!64i",s))# get modeifw[11]==1:mode=rawmode="L"elifw[11]==2:# FIXME: add memory map supportmode="I"rawmode="I;16B"elifw[11]==4:# FIXME: add memory map supportmode="I"rawmode="I;32B"else:msg="unsupported McIdas format"raiseSyntaxError(msg)self._mode=modeself._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))]
# --------------------------------------------------------------------# registryImage.register_open(McIdasImageFile.format,McIdasImageFile,_accept)# no default extension