## The Python Imaging Library.# $Id$## GD file handling## History:# 1996-04-12 fl Created## Copyright (c) 1997 by Secret Labs AB.# Copyright (c) 1996 by Fredrik Lundh.## See the README file for information on usage and redistribution.#""".. note:: This format cannot be automatically recognized, so the class is not registered for use with :py:func:`PIL.Image.open()`. To open a gd file, use the :py:func:`PIL.GdImageFile.open()` function instead... warning:: THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This implementation is provided for convenience and demonstrational purposes only."""from__future__importannotationsfromtypingimportIOfrom.importImageFile,ImagePalette,UnidentifiedImageErrorfrom._binaryimporti16beasi16from._binaryimporti32beasi32from._typingimportStrOrBytesPath
[docs]classGdImageFile(ImageFile.ImageFile):""" Image plugin for the GD uncompressed format. Note that this format is not supported by the standard :py:func:`PIL.Image.open()` function. To use this plugin, you have to import the :py:mod:`PIL.GdImageFile` module and use the :py:func:`PIL.GdImageFile.open()` function. """format="GD"format_description="GD uncompressed images"def_open(self)->None:# Headerassertself.fpisnotNones=self.fp.read(1037)ifi16(s)notin[65534,65535]:msg="Not a valid GD 2.x .gd file"raiseSyntaxError(msg)self._mode="P"self._size=i16(s,2),i16(s,4)true_color=s[6]true_color_offset=2iftrue_colorelse0# transparency indextindex=i32(s,7+true_color_offset)iftindex<256:self.info["transparency"]=tindexself.palette=ImagePalette.raw("RGBX",s[7+true_color_offset+6:7+true_color_offset+6+256*4])self.tile=[ImageFile._Tile("raw",(0,0)+self.size,7+true_color_offset+6+256*4,"L",)]
[docs]defopen(fp:StrOrBytesPath|IO[bytes],mode:str="r")->GdImageFile:""" Load texture from a GD image file. :param fp: GD file name, or an opened file handle. :param mode: Optional mode. In this version, if the mode argument is given, it must be "r". :returns: An image instance. :raises OSError: If the image could not be read. """ifmode!="r":msg="bad mode"raiseValueError(msg)try:returnGdImageFile(fp)exceptSyntaxErrorase:msg="cannot identify this image file"raiseUnidentifiedImageError(msg)frome