From 76effe361733b0175e56cb67230c1eddbff5903b Mon Sep 17 00:00:00 2001 From: x-o-i-o-x <103693092+x-o-i-o-x@users.noreply.github.com> Date: Sun, 5 Oct 2025 17:26:46 +0200 Subject: [PATCH] call to apply_color working --- constants.py | 3 + libs/PIL/BdfFontFile.py | 133 + libs/PIL/BlpImagePlugin.py | 501 +++ libs/PIL/BmpImagePlugin.py | 511 +++ libs/PIL/BufrStubImagePlugin.py | 76 + libs/PIL/ContainerIO.py | 173 + libs/PIL/CurImagePlugin.py | 75 + libs/PIL/DcxImagePlugin.py | 80 + libs/PIL/DdsImagePlugin.py | 573 +++ libs/PIL/EpsImagePlugin.py | 474 +++ libs/PIL/ExifTags.py | 382 ++ libs/PIL/FitsImagePlugin.py | 152 + libs/PIL/FliImagePlugin.py | 175 + libs/PIL/FontFile.py | 134 + libs/PIL/FpxImagePlugin.py | 257 ++ libs/PIL/FtexImagePlugin.py | 115 + libs/PIL/GbrImagePlugin.py | 103 + libs/PIL/GdImageFile.py | 102 + libs/PIL/GifImagePlugin.py | 1197 ++++++ libs/PIL/GimpGradientFile.py | 149 + libs/PIL/GimpPaletteFile.py | 58 + libs/PIL/GribStubImagePlugin.py | 76 + libs/PIL/Hdf5StubImagePlugin.py | 76 + libs/PIL/IcnsImagePlugin.py | 412 ++ libs/PIL/IcoImagePlugin.py | 381 ++ libs/PIL/ImImagePlugin.py | 386 ++ libs/PIL/Image.py | 4197 ++++++++++++++++++++ libs/PIL/ImageChops.py | 311 ++ libs/PIL/ImageCms.py | 1125 ++++++ libs/PIL/ImageColor.py | 320 ++ libs/PIL/ImageDraw.py | 1218 ++++++ libs/PIL/ImageDraw2.py | 243 ++ libs/PIL/ImageEnhance.py | 113 + libs/PIL/ImageFile.py | 832 ++++ libs/PIL/ImageFilter.py | 605 +++ libs/PIL/ImageFont.py | 1338 +++++++ libs/PIL/ImageGrab.py | 183 + libs/PIL/ImageMath.py | 368 ++ libs/PIL/ImageMode.py | 92 + libs/PIL/ImageMorph.py | 265 ++ libs/PIL/ImageOps.py | 731 ++++ libs/PIL/ImagePalette.py | 285 ++ libs/PIL/ImagePath.py | 20 + libs/PIL/ImageQt.py | 219 + libs/PIL/ImageSequence.py | 86 + libs/PIL/ImageShow.py | 360 ++ libs/PIL/ImageStat.py | 160 + libs/PIL/ImageTk.py | 290 ++ libs/PIL/ImageTransform.py | 136 + libs/PIL/ImageWin.py | 247 ++ libs/PIL/ImtImagePlugin.py | 103 + libs/PIL/IptcImagePlugin.py | 249 ++ libs/PIL/Jpeg2KImagePlugin.py | 443 +++ libs/PIL/JpegImagePlugin.py | 905 +++++ libs/PIL/JpegPresets.py | 242 ++ libs/PIL/McIdasImagePlugin.py | 80 + libs/PIL/MicImagePlugin.py | 107 + libs/PIL/MpegImagePlugin.py | 88 + libs/PIL/MpoImagePlugin.py | 190 + libs/PIL/MspImagePlugin.py | 200 + libs/PIL/PSDraw.py | 234 ++ libs/PIL/PaletteFile.py | 54 + libs/PIL/PalmImagePlugin.py | 232 ++ libs/PIL/PcdImagePlugin.py | 64 + libs/PIL/PcfFontFile.py | 254 ++ libs/PIL/PcxImagePlugin.py | 229 ++ libs/PIL/PdfImagePlugin.py | 311 ++ libs/PIL/PdfParser.py | 1073 +++++ libs/PIL/PixarImagePlugin.py | 72 + libs/PIL/PngImagePlugin.py | 1544 +++++++ libs/PIL/PpmImagePlugin.py | 375 ++ libs/PIL/PsdImagePlugin.py | 332 ++ libs/PIL/QoiImagePlugin.py | 115 + libs/PIL/SgiImagePlugin.py | 247 ++ libs/PIL/SpiderImagePlugin.py | 326 ++ libs/PIL/SunImagePlugin.py | 145 + libs/PIL/TarIO.py | 57 + libs/PIL/TgaImagePlugin.py | 264 ++ libs/PIL/TiffImagePlugin.py | 2297 +++++++++++ libs/PIL/TiffTags.py | 562 +++ libs/PIL/WalImageFile.py | 127 + libs/PIL/WebPImagePlugin.py | 322 ++ libs/PIL/WmfImagePlugin.py | 184 + libs/PIL/XVThumbImagePlugin.py | 83 + libs/PIL/XbmImagePlugin.py | 98 + libs/PIL/XpmImagePlugin.py | 125 + libs/PIL/__init__.py | 86 + libs/PIL/__main__.py | 7 + libs/PIL/_binary.py | 112 + libs/PIL/_deprecate.py | 69 + libs/PIL/_imaging.cp311-win_amd64.pyd | Bin 0 -> 2458112 bytes libs/PIL/_imaging.pyi | 31 + libs/PIL/_imagingcms.cp311-win_amd64.pyd | Bin 0 -> 263680 bytes libs/PIL/_imagingcms.pyi | 143 + libs/PIL/_imagingft.cp311-win_amd64.pyd | Bin 0 -> 1933824 bytes libs/PIL/_imagingft.pyi | 69 + libs/PIL/_imagingmath.cp311-win_amd64.pyd | Bin 0 -> 25088 bytes libs/PIL/_imagingmath.pyi | 3 + libs/PIL/_imagingmorph.cp311-win_amd64.pyd | Bin 0 -> 13824 bytes libs/PIL/_imagingmorph.pyi | 3 + libs/PIL/_imagingtk.cp311-win_amd64.pyd | Bin 0 -> 15360 bytes libs/PIL/_imagingtk.pyi | 3 + libs/PIL/_tkinter_finder.py | 21 + libs/PIL/_typing.py | 53 + libs/PIL/_util.py | 26 + libs/PIL/_version.py | 4 + libs/PIL/_webp.cp311-win_amd64.pyd | Bin 0 -> 409600 bytes libs/PIL/_webp.pyi | 3 + libs/PIL/features.py | 357 ++ libs/PIL/py.typed | 0 libs/PIL/report.py | 5 + paintListener.py | 8 +- paintModifier.py | 75 +- 113 files changed, 33902 insertions(+), 7 deletions(-) create mode 100644 constants.py create mode 100644 libs/PIL/BdfFontFile.py create mode 100644 libs/PIL/BlpImagePlugin.py create mode 100644 libs/PIL/BmpImagePlugin.py create mode 100644 libs/PIL/BufrStubImagePlugin.py create mode 100644 libs/PIL/ContainerIO.py create mode 100644 libs/PIL/CurImagePlugin.py create mode 100644 libs/PIL/DcxImagePlugin.py create mode 100644 libs/PIL/DdsImagePlugin.py create mode 100644 libs/PIL/EpsImagePlugin.py create mode 100644 libs/PIL/ExifTags.py create mode 100644 libs/PIL/FitsImagePlugin.py create mode 100644 libs/PIL/FliImagePlugin.py create mode 100644 libs/PIL/FontFile.py create mode 100644 libs/PIL/FpxImagePlugin.py create mode 100644 libs/PIL/FtexImagePlugin.py create mode 100644 libs/PIL/GbrImagePlugin.py create mode 100644 libs/PIL/GdImageFile.py create mode 100644 libs/PIL/GifImagePlugin.py create mode 100644 libs/PIL/GimpGradientFile.py create mode 100644 libs/PIL/GimpPaletteFile.py create mode 100644 libs/PIL/GribStubImagePlugin.py create mode 100644 libs/PIL/Hdf5StubImagePlugin.py create mode 100644 libs/PIL/IcnsImagePlugin.py create mode 100644 libs/PIL/IcoImagePlugin.py create mode 100644 libs/PIL/ImImagePlugin.py create mode 100644 libs/PIL/Image.py create mode 100644 libs/PIL/ImageChops.py create mode 100644 libs/PIL/ImageCms.py create mode 100644 libs/PIL/ImageColor.py create mode 100644 libs/PIL/ImageDraw.py create mode 100644 libs/PIL/ImageDraw2.py create mode 100644 libs/PIL/ImageEnhance.py create mode 100644 libs/PIL/ImageFile.py create mode 100644 libs/PIL/ImageFilter.py create mode 100644 libs/PIL/ImageFont.py create mode 100644 libs/PIL/ImageGrab.py create mode 100644 libs/PIL/ImageMath.py create mode 100644 libs/PIL/ImageMode.py create mode 100644 libs/PIL/ImageMorph.py create mode 100644 libs/PIL/ImageOps.py create mode 100644 libs/PIL/ImagePalette.py create mode 100644 libs/PIL/ImagePath.py create mode 100644 libs/PIL/ImageQt.py create mode 100644 libs/PIL/ImageSequence.py create mode 100644 libs/PIL/ImageShow.py create mode 100644 libs/PIL/ImageStat.py create mode 100644 libs/PIL/ImageTk.py create mode 100644 libs/PIL/ImageTransform.py create mode 100644 libs/PIL/ImageWin.py create mode 100644 libs/PIL/ImtImagePlugin.py create mode 100644 libs/PIL/IptcImagePlugin.py create mode 100644 libs/PIL/Jpeg2KImagePlugin.py create mode 100644 libs/PIL/JpegImagePlugin.py create mode 100644 libs/PIL/JpegPresets.py create mode 100644 libs/PIL/McIdasImagePlugin.py create mode 100644 libs/PIL/MicImagePlugin.py create mode 100644 libs/PIL/MpegImagePlugin.py create mode 100644 libs/PIL/MpoImagePlugin.py create mode 100644 libs/PIL/MspImagePlugin.py create mode 100644 libs/PIL/PSDraw.py create mode 100644 libs/PIL/PaletteFile.py create mode 100644 libs/PIL/PalmImagePlugin.py create mode 100644 libs/PIL/PcdImagePlugin.py create mode 100644 libs/PIL/PcfFontFile.py create mode 100644 libs/PIL/PcxImagePlugin.py create mode 100644 libs/PIL/PdfImagePlugin.py create mode 100644 libs/PIL/PdfParser.py create mode 100644 libs/PIL/PixarImagePlugin.py create mode 100644 libs/PIL/PngImagePlugin.py create mode 100644 libs/PIL/PpmImagePlugin.py create mode 100644 libs/PIL/PsdImagePlugin.py create mode 100644 libs/PIL/QoiImagePlugin.py create mode 100644 libs/PIL/SgiImagePlugin.py create mode 100644 libs/PIL/SpiderImagePlugin.py create mode 100644 libs/PIL/SunImagePlugin.py create mode 100644 libs/PIL/TarIO.py create mode 100644 libs/PIL/TgaImagePlugin.py create mode 100644 libs/PIL/TiffImagePlugin.py create mode 100644 libs/PIL/TiffTags.py create mode 100644 libs/PIL/WalImageFile.py create mode 100644 libs/PIL/WebPImagePlugin.py create mode 100644 libs/PIL/WmfImagePlugin.py create mode 100644 libs/PIL/XVThumbImagePlugin.py create mode 100644 libs/PIL/XbmImagePlugin.py create mode 100644 libs/PIL/XpmImagePlugin.py create mode 100644 libs/PIL/__init__.py create mode 100644 libs/PIL/__main__.py create mode 100644 libs/PIL/_binary.py create mode 100644 libs/PIL/_deprecate.py create mode 100644 libs/PIL/_imaging.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imaging.pyi create mode 100644 libs/PIL/_imagingcms.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imagingcms.pyi create mode 100644 libs/PIL/_imagingft.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imagingft.pyi create mode 100644 libs/PIL/_imagingmath.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imagingmath.pyi create mode 100644 libs/PIL/_imagingmorph.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imagingmorph.pyi create mode 100644 libs/PIL/_imagingtk.cp311-win_amd64.pyd create mode 100644 libs/PIL/_imagingtk.pyi create mode 100644 libs/PIL/_tkinter_finder.py create mode 100644 libs/PIL/_typing.py create mode 100644 libs/PIL/_util.py create mode 100644 libs/PIL/_version.py create mode 100644 libs/PIL/_webp.cp311-win_amd64.pyd create mode 100644 libs/PIL/_webp.pyi create mode 100644 libs/PIL/features.py create mode 100644 libs/PIL/py.typed create mode 100644 libs/PIL/report.py diff --git a/constants.py b/constants.py new file mode 100644 index 0000000..d1ac13c --- /dev/null +++ b/constants.py @@ -0,0 +1,3 @@ +image_name = "vPainter_buffer" +image_width = 1024 +image_height = 1024 \ No newline at end of file diff --git a/libs/PIL/BdfFontFile.py b/libs/PIL/BdfFontFile.py new file mode 100644 index 0000000..bc1416c --- /dev/null +++ b/libs/PIL/BdfFontFile.py @@ -0,0 +1,133 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +Parse X Bitmap Distribution Format (BDF) +""" +from __future__ import annotations + +from typing import BinaryIO + +from . import FontFile, Image + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other", +} + +bdf_spacing = {"P": "Proportional", "M": "Monospaced", "C": "Cell"} + + +def bdf_char( + f: BinaryIO, +) -> ( + tuple[ + str, + int, + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]], + Image.Image, + ] + | None +): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s[:9] == b"STARTCHAR": + break + id = s[9:].strip().decode("ascii") + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s[:6] == b"BITMAP": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + + # load bitmap + bitmap = bytearray() + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap += s[:-1] + + # The word BBX + # followed by the width in x (BBw), height in y (BBh), + # and x and y displacement (BBxoff0, BByoff0) + # of the lower left corner from the origin of the character. + width, height, x_disp, y_disp = (int(p) for p in props["BBX"].split()) + + # The word DWIDTH + # followed by the width in x and y of the character in device pixels. + dwx, dwy = (int(p) for p in props["DWIDTH"].split()) + + bbox = ( + (dwx, dwy), + (x_disp, -y_disp - height, width + x_disp, -y_disp), + (0, 0, width, height), + ) + + try: + im = Image.frombytes("1", (width, height), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (width, height)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp: BinaryIO) -> None: + super().__init__() + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + msg = "not a valid BDF file" + raise SyntaxError(msg) + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s[:13] == b"ENDPROPERTIES": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + if s[:i] in [b"COMMENT", b"COPYRIGHT"]: + if s.find(b"LogicalFontDescription") < 0: + comments.append(s[i + 1 : -1].decode("ascii")) + + while True: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if 0 <= ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/libs/PIL/BlpImagePlugin.py b/libs/PIL/BlpImagePlugin.py new file mode 100644 index 0000000..c932b3b --- /dev/null +++ b/libs/PIL/BlpImagePlugin.py @@ -0,0 +1,501 @@ +""" +Blizzard Mipmap Format (.blp) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +from __future__ import annotations + +import abc +import os +import struct +from enum import IntEnum +from io import BytesIO +from typing import IO + +from . import Image, ImageFile + + +class Format(IntEnum): + JPEG = 0 + + +class Encoding(IntEnum): + UNCOMPRESSED = 1 + DXT = 2 + UNCOMPRESSED_RAW_BGRA = 3 + + +class AlphaEncoding(IntEnum): + DXT1 = 0 + DXT3 = 1 + DXT5 = 7 + + +def unpack_565(i: int) -> tuple[int, int, int]: + return ((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3 + + +def decode_dxt1( + data: bytes, alpha: bool = False +) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + # Decode next 8-byte block. + idx = block_index * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + idx = block_index * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xF + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data: bytes) -> tuple[bytearray, bytearray, bytearray, bytearray]: + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block_index in range(blocks): + idx = block_index * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] in (b"BLP1", b"BLP2") + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self) -> None: + self.magic = self.fp.read(4) + if not _accept(self.magic): + msg = f"Bad BLP magic {repr(self.magic)}" + raise BLPFormatError(msg) + + compression = struct.unpack(" tuple[int, int]: + try: + self._read_header() + self._load() + except struct.error as e: + msg = "Truncated BLP file" + raise OSError(msg) from e + return -1, 0 + + @abc.abstractmethod + def _load(self) -> None: + pass + + def _read_header(self) -> None: + self._offsets = struct.unpack("<16I", self._safe_read(16 * 4)) + self._lengths = struct.unpack("<16I", self._safe_read(16 * 4)) + + def _safe_read(self, length: int) -> bytes: + assert self.fd is not None + return ImageFile._safe_read(self.fd, length) + + def _read_palette(self) -> list[tuple[int, int, int, int]]: + ret = [] + for i in range(256): + try: + b, g, r, a = struct.unpack("<4B", self._safe_read(4)) + except struct.error: + break + ret.append((b, g, r, a)) + return ret + + def _read_bgra( + self, palette: list[tuple[int, int, int, int]], alpha: bool + ) -> bytearray: + data = bytearray() + _data = BytesIO(self._safe_read(self._lengths[0])) + while True: + try: + (offset,) = struct.unpack(" None: + self._compression, self._encoding, alpha = self.args + + if self._compression == Format.JPEG: + self._decode_jpeg_stream() + + elif self._compression == 1: + if self._encoding in (4, 5): + palette = self._read_palette() + data = self._read_bgra(palette, alpha) + self.set_as_raw(data) + else: + msg = f"Unsupported BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unsupported BLP compression {repr(self._encoding)}" + raise BLPFormatError(msg) + + def _decode_jpeg_stream(self) -> None: + from .JpegImagePlugin import JpegImageFile + + (jpeg_header_size,) = struct.unpack(" None: + self._compression, self._encoding, alpha, self._alpha_encoding = self.args + + palette = self._read_palette() + + assert self.fd is not None + self.fd.seek(self._offsets[0]) + + if self._compression == 1: + # Uncompressed or DirectX compression + + if self._encoding == Encoding.UNCOMPRESSED: + data = self._read_bgra(palette, alpha) + + elif self._encoding == Encoding.DXT: + data = bytearray() + if self._alpha_encoding == AlphaEncoding.DXT1: + linesize = (self.state.xsize + 3) // 4 * 8 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt1(self._safe_read(linesize), alpha): + data += d + + elif self._alpha_encoding == AlphaEncoding.DXT3: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt3(self._safe_read(linesize)): + data += d + + elif self._alpha_encoding == AlphaEncoding.DXT5: + linesize = (self.state.xsize + 3) // 4 * 16 + for yb in range((self.state.ysize + 3) // 4): + for d in decode_dxt5(self._safe_read(linesize)): + data += d + else: + msg = f"Unsupported alpha encoding {repr(self._alpha_encoding)}" + raise BLPFormatError(msg) + else: + msg = f"Unknown BLP encoding {repr(self._encoding)}" + raise BLPFormatError(msg) + + else: + msg = f"Unknown BLP compression {repr(self._compression)}" + raise BLPFormatError(msg) + + self.set_as_raw(data) + + +class BLPEncoder(ImageFile.PyEncoder): + _pushes_fd = True + + def _write_palette(self) -> bytes: + data = b"" + assert self.im is not None + palette = self.im.getpalette("RGBA", "RGBA") + for i in range(len(palette) // 4): + r, g, b, a = palette[i * 4 : (i + 1) * 4] + data += struct.pack("<4B", b, g, r, a) + while len(data) < 256 * 4: + data += b"\x00" * 4 + return data + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + palette_data = self._write_palette() + + offset = 20 + 16 * 4 * 2 + len(palette_data) + data = struct.pack("<16I", offset, *((0,) * 15)) + + assert self.im is not None + w, h = self.im.size + data += struct.pack("<16I", w * h, *((0,) * 15)) + + data += palette_data + + for y in range(h): + for x in range(w): + data += struct.pack(" None: + if im.mode != "P": + msg = "Unsupported BLP image mode" + raise ValueError(msg) + + magic = b"BLP1" if im.encoderinfo.get("blp_version") == "BLP1" else b"BLP2" + fp.write(magic) + + assert im.palette is not None + fp.write(struct.pack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix: bytes) -> bool: + return prefix[:2] == b"BM" + + +def _dib_accept(prefix: bytes) -> bool: + return i32(prefix) in [12, 40, 52, 56, 64, 108, 124] + + +# ============================================================================= +# Image plugin for the Windows BMP format. +# ============================================================================= +class BmpImageFile(ImageFile.ImageFile): + """Image plugin for the Windows Bitmap format (BMP)""" + + # ------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + + # -------------------------------------------------- BMP Compression values + COMPRESSIONS = {"RAW": 0, "RLE8": 1, "RLE4": 2, "BITFIELDS": 3, "JPEG": 4, "PNG": 5} + for k, v in COMPRESSIONS.items(): + vars()[k] = v + + def _bitmap(self, header: int = 0, offset: int = 0) -> None: + """Read relevant info about the BMP""" + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + # read bmp header size @offset 14 (this is part of the header size) + file_info: dict[str, bool | int | tuple[int, ...]] = { + "header_size": i32(read(4)), + "direction": -1, + } + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + assert isinstance(file_info["header_size"], int) + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # ------------------------------- Windows Bitmap v2, IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + # 12: BITMAPCOREHEADER/OS21XBITMAPHEADER + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data, 0) + file_info["height"] = i16(header_data, 2) + file_info["planes"] = i16(header_data, 4) + file_info["bits"] = i16(header_data, 6) + file_info["compression"] = self.COMPRESSIONS["RAW"] + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v3 to v5 + # 40: BITMAPINFOHEADER + # 52: BITMAPV2HEADER + # 56: BITMAPV3HEADER + # 64: BITMAPCOREHEADER2/OS22XBITMAPHEADER + # 108: BITMAPV4HEADER + # 124: BITMAPV5HEADER + elif file_info["header_size"] in (40, 52, 56, 64, 108, 124): + file_info["y_flip"] = header_data[7] == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data, 0) + file_info["height"] = ( + i32(header_data, 4) + if not file_info["y_flip"] + else 2**32 - i32(header_data, 4) + ) + file_info["planes"] = i16(header_data, 8) + file_info["bits"] = i16(header_data, 10) + file_info["compression"] = i32(header_data, 12) + # byte size of pixel data + file_info["data_size"] = i32(header_data, 16) + file_info["pixels_per_meter"] = ( + i32(header_data, 20), + i32(header_data, 24), + ) + file_info["colors"] = i32(header_data, 28) + file_info["palette_padding"] = 4 + assert isinstance(file_info["pixels_per_meter"], tuple) + self.info["dpi"] = tuple(x / 39.3701 for x in file_info["pixels_per_meter"]) + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + masks = ["r_mask", "g_mask", "b_mask"] + if len(header_data) >= 48: + if len(header_data) >= 52: + masks.append("a_mask") + else: + file_info["a_mask"] = 0x0 + for idx, mask in enumerate(masks): + file_info[mask] = i32(header_data, 36 + idx * 4) + else: + # 40 byte headers only have the three components in the + # bitfields masks, ref: + # https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also + # https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha + # location, but it is listed as a reserved component, + # and it is not generally an alpha channel + file_info["a_mask"] = 0x0 + for mask in masks: + file_info[mask] = i32(read(4)) + assert isinstance(file_info["r_mask"], int) + assert isinstance(file_info["g_mask"], int) + assert isinstance(file_info["b_mask"], int) + assert isinstance(file_info["a_mask"], int) + file_info["rgb_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + ) + file_info["rgba_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + file_info["a_mask"], + ) + else: + msg = f"Unsupported BMP header type ({file_info['header_size']})" + raise OSError(msg) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + assert isinstance(file_info["width"], int) + assert isinstance(file_info["height"], int) + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + assert isinstance(file_info["bits"], int) + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + assert isinstance(file_info["colors"], int) + if offset == 14 + file_info["header_size"] and file_info["bits"] <= 8: + offset += 4 * file_info["colors"] + + # ---------------------- Check bit depth for unusual unsupported values + self._mode, raw_mode = BIT2MODE.get(file_info["bits"], ("", "")) + if not self.mode: + msg = f"Unsupported BMP pixel depth ({file_info['bits']})" + raise OSError(msg) + + # ---------------- Process BMP with Bitfields compression (not palette) + decoder_name = "raw" + if file_info["compression"] == self.COMPRESSIONS["BITFIELDS"]: + SUPPORTED: dict[int, list[tuple[int, ...]]] = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + (0xFF000000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0xFF), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF000000, 0xFF00, 0xFF, 0xFF0000), + (0x0, 0x0, 0x0, 0x0), + ], + 24: [(0xFF0000, 0xFF00, 0xFF)], + 16: [(0xF800, 0x7E0, 0x1F), (0x7C00, 0x3E0, 0x1F)], + } + MASK_MODES = { + (32, (0xFF0000, 0xFF00, 0xFF, 0x0)): "BGRX", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0x0)): "XBGR", + (32, (0xFF000000, 0xFF00, 0xFF, 0x0)): "BGXR", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0xFF)): "ABGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0xFF000000, 0xFF00, 0xFF, 0xFF0000)): "BGAR", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xFF0000, 0xFF00, 0xFF)): "BGR", + (16, (0xF800, 0x7E0, 0x1F)): "BGR;16", + (16, (0x7C00, 0x3E0, 0x1F)): "BGR;15", + } + if file_info["bits"] in SUPPORTED: + if ( + file_info["bits"] == 32 + and file_info["rgba_mask"] in SUPPORTED[file_info["bits"]] + ): + assert isinstance(file_info["rgba_mask"], tuple) + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgba_mask"])] + self._mode = "RGBA" if "A" in raw_mode else self.mode + elif ( + file_info["bits"] in (24, 16) + and file_info["rgb_mask"] in SUPPORTED[file_info["bits"]] + ): + assert isinstance(file_info["rgb_mask"], tuple) + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + elif file_info["compression"] == self.COMPRESSIONS["RAW"]: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self._mode = "BGRA", "RGBA" + elif file_info["compression"] in ( + self.COMPRESSIONS["RLE8"], + self.COMPRESSIONS["RLE4"], + ): + decoder_name = "bmp_rle" + else: + msg = f"Unsupported BMP compression ({file_info['compression']})" + raise OSError(msg) + + # --------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + # ---------------------------------------------------- 1-bit images + if not (0 < file_info["colors"] <= 65536): + msg = f"Unsupported BMP Palette size ({file_info['colors']})" + raise OSError(msg) + else: + assert isinstance(file_info["palette_padding"], int) + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + grayscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if grayscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + grayscale = False + + # ------- If all colors are gray, white or black, ditch palette + if grayscale: + self._mode = "1" if file_info["colors"] == 2 else "L" + raw_mode = self.mode + else: + self._mode = "P" + self.palette = ImagePalette.raw( + "BGRX" if padding == 4 else "BGR", palette + ) + + # ---------------------------- Finally set the tile data for the plugin + self.info["compression"] = file_info["compression"] + args: list[Any] = [raw_mode] + if decoder_name == "bmp_rle": + args.append(file_info["compression"] == self.COMPRESSIONS["RLE4"]) + else: + assert isinstance(file_info["width"], int) + args.append(((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3)) + args.append(file_info["direction"]) + self.tile = [ + ImageFile._Tile( + decoder_name, + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + tuple(args), + ) + ] + + def _open(self) -> None: + """Open file, check magic number and read header""" + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if not _accept(head_data): + msg = "Not a BMP file" + raise SyntaxError(msg) + # read the start position of the BMP image data (u32) + offset = i32(head_data, 10) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +class BmpRleDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + rle4 = self.args[1] + data = bytearray() + x = 0 + dest_length = self.state.xsize * self.state.ysize + while len(data) < dest_length: + pixels = self.fd.read(1) + byte = self.fd.read(1) + if not pixels or not byte: + break + num_pixels = pixels[0] + if num_pixels: + # encoded mode + if x + num_pixels > self.state.xsize: + # Too much data for row + num_pixels = max(0, self.state.xsize - x) + if rle4: + first_pixel = o8(byte[0] >> 4) + second_pixel = o8(byte[0] & 0x0F) + for index in range(num_pixels): + if index % 2 == 0: + data += first_pixel + else: + data += second_pixel + else: + data += byte * num_pixels + x += num_pixels + else: + if byte[0] == 0: + # end of line + while len(data) % self.state.xsize != 0: + data += b"\x00" + x = 0 + elif byte[0] == 1: + # end of bitmap + break + elif byte[0] == 2: + # delta + bytes_read = self.fd.read(2) + if len(bytes_read) < 2: + break + right, up = self.fd.read(2) + data += b"\x00" * (right + up * self.state.xsize) + x = len(data) % self.state.xsize + else: + # absolute mode + if rle4: + # 2 pixels per byte + byte_count = byte[0] // 2 + bytes_read = self.fd.read(byte_count) + for byte_read in bytes_read: + data += o8(byte_read >> 4) + data += o8(byte_read & 0x0F) + else: + byte_count = byte[0] + bytes_read = self.fd.read(byte_count) + data += bytes_read + if len(bytes_read) < byte_count: + break + x += byte[0] + + # align to 16-bit word boundary + if self.fd.tell() % 2 != 0: + self.fd.seek(1, os.SEEK_CUR) + rawmode = "L" if self.mode == "L" else "P" + self.set_as_raw(bytes(data), rawmode, (0, self.args[-1])) + return -1, 0 + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self) -> None: + self._bitmap() + + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _dib_save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, False) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, bitmap_header: bool = True +) -> None: + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as BMP" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(int(x * 39.3701 + 0.5) for x in dpi) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + if im.mode == "1": + palette = b"".join(o8(i) * 4 for i in (0, 255)) + elif im.mode == "L": + palette = b"".join(o8(i) * 4 for i in range(256)) + elif im.mode == "P": + palette = im.im.getpalette("RGB", "BGRX") + colors = len(palette) // 4 + else: + palette = None + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2**32 - 1: + msg = "File size is too large for the BMP format" + raise ValueError(msg) + fp.write( + b"BM" # file type (magic) + + o32(file_size) # file size + + o32(0) # reserved + + o32(offset) # image data offset + ) + + # bitmap info header + fp.write( + o32(header) # info header size + + o32(im.size[0]) # width + + o32(im.size[1]) # height + + o16(1) # planes + + o16(bits) # depth + + o32(0) # compression (0=uncompressed) + + o32(image) # size of bitmap + + o32(ppm[0]) # resolution + + o32(ppm[1]) # resolution + + o32(colors) # colors used + + o32(colors) # colors important + ) + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if palette: + fp.write(palette) + + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, stride, -1))] + ) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") + +Image.register_decoder("bmp_rle", BmpRleDecoder) + +Image.register_open(DibImageFile.format, DibImageFile, _dib_accept) +Image.register_save(DibImageFile.format, _dib_save) + +Image.register_extension(DibImageFile.format, ".dib") + +Image.register_mime(DibImageFile.format, "image/bmp") diff --git a/libs/PIL/BufrStubImagePlugin.py b/libs/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..0ee2f65 --- /dev/null +++ b/libs/PIL/BufrStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + format = "BUFR" + format_description = "BUFR" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + msg = "Not a BUFR file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "BUFR save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/libs/PIL/ContainerIO.py b/libs/PIL/ContainerIO.py new file mode 100644 index 0000000..ec9e66c --- /dev/null +++ b/libs/PIL/ContainerIO.py @@ -0,0 +1,173 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from collections.abc import Iterable +from typing import IO, AnyStr, NoReturn + + +class ContainerIO(IO[AnyStr]): + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file: IO[AnyStr], offset: int, length: int) -> None: + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh: IO[AnyStr] = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self) -> bool: + return False + + def seekable(self) -> bool: + return True + + def seek(self, offset: int, mode: int = io.SEEK_SET) -> int: + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + :returns: Offset from start of region, in bytes. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + return self.pos + + def tell(self) -> int: + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def readable(self) -> bool: + return True + + def read(self, n: int = -1) -> AnyStr: + """ + Read data. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of region. + :returns: An 8-bit string. + """ + if n > 0: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if n <= 0: # EOF + return b"" if "b" in self.fh.mode else "" # type: ignore[return-value] + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self, n: int = -1) -> AnyStr: + """ + Read a line of text. + + :param n: Number of bytes to read. If omitted, zero or negative, + read until end of line. + :returns: An 8-bit string. + """ + s: AnyStr = b"" if "b" in self.fh.mode else "" # type: ignore[assignment] + newline_character = b"\n" if "b" in self.fh.mode else "\n" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == newline_character or len(s) == n: + break + return s + + def readlines(self, n: int | None = -1) -> list[AnyStr]: + """ + Read multiple lines of text. + + :param n: Number of lines to read. If omitted, zero, negative or None, + read until end of region. + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + if len(lines) == n: + break + return lines + + def writable(self) -> bool: + return False + + def write(self, b: AnyStr) -> NoReturn: + raise NotImplementedError() + + def writelines(self, lines: Iterable[AnyStr]) -> NoReturn: + raise NotImplementedError() + + def truncate(self, size: int | None = None) -> int: + raise NotImplementedError() + + def __enter__(self) -> ContainerIO[AnyStr]: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def __iter__(self) -> ContainerIO[AnyStr]: + return self + + def __next__(self) -> AnyStr: + line = self.readline() + if not line: + msg = "end of region" + raise StopIteration(msg) + return line + + def fileno(self) -> int: + return self.fh.fileno() + + def flush(self) -> None: + self.fh.flush() + + def close(self) -> None: + self.fh.close() diff --git a/libs/PIL/CurImagePlugin.py b/libs/PIL/CurImagePlugin.py new file mode 100644 index 0000000..c4be0ce --- /dev/null +++ b/libs/PIL/CurImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import BmpImagePlugin, Image, ImageFile +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"\0\0\2\0" + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + format = "CUR" + format_description = "Windows Cursor" + + def _open(self) -> None: + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + msg = "not a CUR file" + raise SyntaxError(msg) + + # pick the largest cursor in the file + m = b"" + for i in range(i16(s, 4)): + s = self.fp.read(16) + if not m: + m = s + elif s[0] > m[0] and s[1] > m[1]: + m = s + if not m: + msg = "No cursors were found" + raise TypeError(msg) + + # load as bitmap + self._bitmap(i32(m, 12) + offset) + + # patch up the bitmap height + self._size = self.size[0], self.size[1] // 2 + d, e, o, a = self.tile[0] + self.tile[0] = ImageFile._Tile(d, (0, 0) + self.size, o, a) + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/libs/PIL/DcxImagePlugin.py b/libs/PIL/DcxImagePlugin.py new file mode 100644 index 0000000..f67f27d --- /dev/null +++ b/libs/PIL/DcxImagePlugin.py @@ -0,0 +1,80 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + + +class DcxImageFile(PcxImageFile): + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # Header + s = self.fp.read(4) + if not _accept(s): + msg = "not a DCX file" + raise SyntaxError(msg) + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self._fp = self.fp + self.frame = -1 + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self._fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self) -> int: + return self.frame + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/libs/PIL/DdsImagePlugin.py b/libs/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..9349e28 --- /dev/null +++ b/libs/PIL/DdsImagePlugin.py @@ -0,0 +1,573 @@ +""" +A Pillow loader for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: +https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: +https://creativecommons.org/publicdomain/zero/1.0/ +""" + +from __future__ import annotations + +import io +import struct +import sys +from enum import IntEnum, IntFlag +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o32le as o32 + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + + +# DDS flags +class DDSD(IntFlag): + CAPS = 0x1 + HEIGHT = 0x2 + WIDTH = 0x4 + PITCH = 0x8 + PIXELFORMAT = 0x1000 + MIPMAPCOUNT = 0x20000 + LINEARSIZE = 0x80000 + DEPTH = 0x800000 + + +# DDS caps +class DDSCAPS(IntFlag): + COMPLEX = 0x8 + TEXTURE = 0x1000 + MIPMAP = 0x400000 + + +class DDSCAPS2(IntFlag): + CUBEMAP = 0x200 + CUBEMAP_POSITIVEX = 0x400 + CUBEMAP_NEGATIVEX = 0x800 + CUBEMAP_POSITIVEY = 0x1000 + CUBEMAP_NEGATIVEY = 0x2000 + CUBEMAP_POSITIVEZ = 0x4000 + CUBEMAP_NEGATIVEZ = 0x8000 + VOLUME = 0x200000 + + +# Pixel Format +class DDPF(IntFlag): + ALPHAPIXELS = 0x1 + ALPHA = 0x2 + FOURCC = 0x4 + PALETTEINDEXED8 = 0x20 + RGB = 0x40 + LUMINANCE = 0x20000 + + +# dxgiformat.h +class DXGI_FORMAT(IntEnum): + UNKNOWN = 0 + R32G32B32A32_TYPELESS = 1 + R32G32B32A32_FLOAT = 2 + R32G32B32A32_UINT = 3 + R32G32B32A32_SINT = 4 + R32G32B32_TYPELESS = 5 + R32G32B32_FLOAT = 6 + R32G32B32_UINT = 7 + R32G32B32_SINT = 8 + R16G16B16A16_TYPELESS = 9 + R16G16B16A16_FLOAT = 10 + R16G16B16A16_UNORM = 11 + R16G16B16A16_UINT = 12 + R16G16B16A16_SNORM = 13 + R16G16B16A16_SINT = 14 + R32G32_TYPELESS = 15 + R32G32_FLOAT = 16 + R32G32_UINT = 17 + R32G32_SINT = 18 + R32G8X24_TYPELESS = 19 + D32_FLOAT_S8X24_UINT = 20 + R32_FLOAT_X8X24_TYPELESS = 21 + X32_TYPELESS_G8X24_UINT = 22 + R10G10B10A2_TYPELESS = 23 + R10G10B10A2_UNORM = 24 + R10G10B10A2_UINT = 25 + R11G11B10_FLOAT = 26 + R8G8B8A8_TYPELESS = 27 + R8G8B8A8_UNORM = 28 + R8G8B8A8_UNORM_SRGB = 29 + R8G8B8A8_UINT = 30 + R8G8B8A8_SNORM = 31 + R8G8B8A8_SINT = 32 + R16G16_TYPELESS = 33 + R16G16_FLOAT = 34 + R16G16_UNORM = 35 + R16G16_UINT = 36 + R16G16_SNORM = 37 + R16G16_SINT = 38 + R32_TYPELESS = 39 + D32_FLOAT = 40 + R32_FLOAT = 41 + R32_UINT = 42 + R32_SINT = 43 + R24G8_TYPELESS = 44 + D24_UNORM_S8_UINT = 45 + R24_UNORM_X8_TYPELESS = 46 + X24_TYPELESS_G8_UINT = 47 + R8G8_TYPELESS = 48 + R8G8_UNORM = 49 + R8G8_UINT = 50 + R8G8_SNORM = 51 + R8G8_SINT = 52 + R16_TYPELESS = 53 + R16_FLOAT = 54 + D16_UNORM = 55 + R16_UNORM = 56 + R16_UINT = 57 + R16_SNORM = 58 + R16_SINT = 59 + R8_TYPELESS = 60 + R8_UNORM = 61 + R8_UINT = 62 + R8_SNORM = 63 + R8_SINT = 64 + A8_UNORM = 65 + R1_UNORM = 66 + R9G9B9E5_SHAREDEXP = 67 + R8G8_B8G8_UNORM = 68 + G8R8_G8B8_UNORM = 69 + BC1_TYPELESS = 70 + BC1_UNORM = 71 + BC1_UNORM_SRGB = 72 + BC2_TYPELESS = 73 + BC2_UNORM = 74 + BC2_UNORM_SRGB = 75 + BC3_TYPELESS = 76 + BC3_UNORM = 77 + BC3_UNORM_SRGB = 78 + BC4_TYPELESS = 79 + BC4_UNORM = 80 + BC4_SNORM = 81 + BC5_TYPELESS = 82 + BC5_UNORM = 83 + BC5_SNORM = 84 + B5G6R5_UNORM = 85 + B5G5R5A1_UNORM = 86 + B8G8R8A8_UNORM = 87 + B8G8R8X8_UNORM = 88 + R10G10B10_XR_BIAS_A2_UNORM = 89 + B8G8R8A8_TYPELESS = 90 + B8G8R8A8_UNORM_SRGB = 91 + B8G8R8X8_TYPELESS = 92 + B8G8R8X8_UNORM_SRGB = 93 + BC6H_TYPELESS = 94 + BC6H_UF16 = 95 + BC6H_SF16 = 96 + BC7_TYPELESS = 97 + BC7_UNORM = 98 + BC7_UNORM_SRGB = 99 + AYUV = 100 + Y410 = 101 + Y416 = 102 + NV12 = 103 + P010 = 104 + P016 = 105 + OPAQUE_420 = 106 + YUY2 = 107 + Y210 = 108 + Y216 = 109 + NV11 = 110 + AI44 = 111 + IA44 = 112 + P8 = 113 + A8P8 = 114 + B4G4R4A4_UNORM = 115 + P208 = 130 + V208 = 131 + V408 = 132 + SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189 + SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190 + + +class D3DFMT(IntEnum): + UNKNOWN = 0 + R8G8B8 = 20 + A8R8G8B8 = 21 + X8R8G8B8 = 22 + R5G6B5 = 23 + X1R5G5B5 = 24 + A1R5G5B5 = 25 + A4R4G4B4 = 26 + R3G3B2 = 27 + A8 = 28 + A8R3G3B2 = 29 + X4R4G4B4 = 30 + A2B10G10R10 = 31 + A8B8G8R8 = 32 + X8B8G8R8 = 33 + G16R16 = 34 + A2R10G10B10 = 35 + A16B16G16R16 = 36 + A8P8 = 40 + P8 = 41 + L8 = 50 + A8L8 = 51 + A4L4 = 52 + V8U8 = 60 + L6V5U5 = 61 + X8L8V8U8 = 62 + Q8W8V8U8 = 63 + V16U16 = 64 + A2W10V10U10 = 67 + D16_LOCKABLE = 70 + D32 = 71 + D15S1 = 73 + D24S8 = 75 + D24X8 = 77 + D24X4S4 = 79 + D16 = 80 + D32F_LOCKABLE = 82 + D24FS8 = 83 + D32_LOCKABLE = 84 + S8_LOCKABLE = 85 + L16 = 81 + VERTEXDATA = 100 + INDEX16 = 101 + INDEX32 = 102 + Q16W16V16U16 = 110 + R16F = 111 + G16R16F = 112 + A16B16G16R16F = 113 + R32F = 114 + G32R32F = 115 + A32B32G32R32F = 116 + CxV8U8 = 117 + A1 = 118 + A2B10G10R10_XR_BIAS = 119 + BINARYBUFFER = 199 + + UYVY = i32(b"UYVY") + R8G8_B8G8 = i32(b"RGBG") + YUY2 = i32(b"YUY2") + G8R8_G8B8 = i32(b"GRGB") + DXT1 = i32(b"DXT1") + DXT2 = i32(b"DXT2") + DXT3 = i32(b"DXT3") + DXT4 = i32(b"DXT4") + DXT5 = i32(b"DXT5") + DX10 = i32(b"DX10") + BC4S = i32(b"BC4S") + BC4U = i32(b"BC4U") + BC5S = i32(b"BC5S") + BC5U = i32(b"BC5U") + ATI1 = i32(b"ATI1") + ATI2 = i32(b"ATI2") + MULTI2_ARGB8 = i32(b"MET1") + + +# Backward compatibility layer +module = sys.modules[__name__] +for item in DDSD: + assert item.name is not None + setattr(module, f"DDSD_{item.name}", item.value) +for item1 in DDSCAPS: + assert item1.name is not None + setattr(module, f"DDSCAPS_{item1.name}", item1.value) +for item2 in DDSCAPS2: + assert item2.name is not None + setattr(module, f"DDSCAPS2_{item2.name}", item2.value) +for item3 in DDPF: + assert item3.name is not None + setattr(module, f"DDPF_{item3.name}", item3.value) + +DDS_FOURCC = DDPF.FOURCC +DDS_RGB = DDPF.RGB +DDS_RGBA = DDPF.RGB | DDPF.ALPHAPIXELS +DDS_LUMINANCE = DDPF.LUMINANCE +DDS_LUMINANCEA = DDPF.LUMINANCE | DDPF.ALPHAPIXELS +DDS_ALPHA = DDPF.ALPHA +DDS_PAL8 = DDPF.PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PIXELFORMAT +DDS_HEADER_FLAGS_MIPMAP = DDSD.MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD.DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD.PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD.LINEARSIZE + +DDS_HEIGHT = DDSD.HEIGHT +DDS_WIDTH = DDSD.WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS.TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS.COMPLEX | DDSCAPS.MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS.COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEZ + +DXT1_FOURCC = D3DFMT.DXT1 +DXT3_FOURCC = D3DFMT.DXT3 +DXT5_FOURCC = D3DFMT.DXT5 + +DXGI_FORMAT_R8G8B8A8_TYPELESS = DXGI_FORMAT.R8G8B8A8_TYPELESS +DXGI_FORMAT_R8G8B8A8_UNORM = DXGI_FORMAT.R8G8B8A8_UNORM +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = DXGI_FORMAT.R8G8B8A8_UNORM_SRGB +DXGI_FORMAT_BC5_TYPELESS = DXGI_FORMAT.BC5_TYPELESS +DXGI_FORMAT_BC5_UNORM = DXGI_FORMAT.BC5_UNORM +DXGI_FORMAT_BC5_SNORM = DXGI_FORMAT.BC5_SNORM +DXGI_FORMAT_BC6H_UF16 = DXGI_FORMAT.BC6H_UF16 +DXGI_FORMAT_BC6H_SF16 = DXGI_FORMAT.BC6H_SF16 +DXGI_FORMAT_BC7_TYPELESS = DXGI_FORMAT.BC7_TYPELESS +DXGI_FORMAT_BC7_UNORM = DXGI_FORMAT.BC7_UNORM +DXGI_FORMAT_BC7_UNORM_SRGB = DXGI_FORMAT.BC7_UNORM_SRGB + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a DDS file" + raise SyntaxError(msg) + (header_size,) = struct.unpack(" None: + pass + + +class DdsRgbDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + bitcount, masks = self.args + + # Some masks will be padded with zeros, e.g. R 0b11 G 0b1100 + # Calculate how many zeros each mask is padded with + mask_offsets = [] + # And the maximum value of each channel without the padding + mask_totals = [] + for mask in masks: + offset = 0 + if mask != 0: + while mask >> (offset + 1) << (offset + 1) == mask: + offset += 1 + mask_offsets.append(offset) + mask_totals.append(mask >> offset) + + data = bytearray() + bytecount = bitcount // 8 + dest_length = self.state.xsize * self.state.ysize * len(masks) + while len(data) < dest_length: + value = int.from_bytes(self.fd.read(bytecount), "little") + for i, mask in enumerate(masks): + masked_value = value & mask + # Remove the zero padding, and scale it to 8 bits + data += o8( + int(((masked_value >> mask_offsets[i]) / mask_totals[i]) * 255) + ) + self.set_as_raw(data) + return -1, 0 + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in ("RGB", "RGBA", "L", "LA"): + msg = f"cannot write mode {im.mode} as DDS" + raise OSError(msg) + + alpha = im.mode[-1] == "A" + if im.mode[0] == "L": + pixel_flags = DDPF.LUMINANCE + rawmode = im.mode + if alpha: + rgba_mask = [0x000000FF, 0x000000FF, 0x000000FF] + else: + rgba_mask = [0xFF000000, 0xFF000000, 0xFF000000] + else: + pixel_flags = DDPF.RGB + rawmode = im.mode[::-1] + rgba_mask = [0x00FF0000, 0x0000FF00, 0x000000FF] + + if alpha: + r, g, b, a = im.split() + im = Image.merge("RGBA", (a, r, g, b)) + if alpha: + pixel_flags |= DDPF.ALPHAPIXELS + rgba_mask.append(0xFF000000 if alpha else 0) + + flags = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PITCH | DDSD.PIXELFORMAT + bitcount = len(im.getbands()) * 8 + pitch = (im.width * bitcount + 7) // 8 + + fp.write( + o32(DDS_MAGIC) + + struct.pack( + "<7I", + 124, # header size + flags, # flags + im.height, + im.width, + pitch, + 0, # depth + 0, # mipmaps + ) + + struct.pack("11I", *((0,) * 11)) # reserved + # pfsize, pfflags, fourcc, bitcount + + struct.pack("<4I", 32, pixel_flags, 0, bitcount) + + struct.pack("<4I", *rgba_mask) # dwRGBABitMask + + struct.pack("<5I", DDSCAPS.TEXTURE, 0, 0, 0, 0) + ) + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"DDS " + + +Image.register_open(DdsImageFile.format, DdsImageFile, _accept) +Image.register_decoder("dds_rgb", DdsRgbDecoder) +Image.register_save(DdsImageFile.format, _save) +Image.register_extension(DdsImageFile.format, ".dds") diff --git a/libs/PIL/EpsImagePlugin.py b/libs/PIL/EpsImagePlugin.py new file mode 100644 index 0000000..36ba15e --- /dev/null +++ b/libs/PIL/EpsImagePlugin.py @@ -0,0 +1,474 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EPS file handling +# +# History: +# 1995-09-01 fl Created (0.1) +# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) +# 1996-08-22 fl Don't choke on floating point BoundingBox values +# 1996-08-23 fl Handle files from Macintosh (0.3) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) +# 2014-05-07 e Handling of EPS with binary preview and fixed resolution +# resizing +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import re +import subprocess +import sys +import tempfile +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# -------------------------------------------------------------------- + + +split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") +field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") + +gs_binary: str | bool | None = None +gs_windows_binary = None + + +def has_ghostscript() -> bool: + global gs_binary, gs_windows_binary + if gs_binary is None: + if sys.platform.startswith("win"): + if gs_windows_binary is None: + import shutil + + for binary in ("gswin32c", "gswin64c", "gs"): + if shutil.which(binary) is not None: + gs_windows_binary = binary + break + else: + gs_windows_binary = False + gs_binary = gs_windows_binary + else: + try: + subprocess.check_call(["gs", "--version"], stdout=subprocess.DEVNULL) + gs_binary = "gs" + except OSError: + gs_binary = False + return gs_binary is not False + + +def Ghostscript( + tile: list[ImageFile._Tile], + size: tuple[int, int], + fp: IO[bytes], + scale: int = 1, + transparency: bool = False, +) -> Image.core.ImagingCore: + """Render an image using Ghostscript""" + global gs_binary + if not has_ghostscript(): + msg = "Unable to locate Ghostscript on paths" + raise OSError(msg) + assert isinstance(gs_binary, str) + + # Unpack decoder tile + args = tile[0].args + assert isinstance(args, tuple) + length, bbox = args + + # Hack to support hi-res rendering + scale = int(scale) or 1 + width = size[0] * scale + height = size[1] * scale + # resolution is dependent on bbox and size + res_x = 72.0 * width / (bbox[2] - bbox[0]) + res_y = 72.0 * height / (bbox[3] - bbox[1]) + + out_fd, outfile = tempfile.mkstemp() + os.close(out_fd) + + infile_temp = None + if hasattr(fp, "name") and os.path.exists(fp.name): + infile = fp.name + else: + in_fd, infile_temp = tempfile.mkstemp() + os.close(in_fd) + infile = infile_temp + + # Ignore length and offset! + # Ghostscript can read it + # Copy whole file to read in Ghostscript + with open(infile_temp, "wb") as f: + # fetch length of fp + fp.seek(0, io.SEEK_END) + fsize = fp.tell() + # ensure start position + # go back + fp.seek(0) + lengthfile = fsize + while lengthfile > 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + if transparency: + # "RGBA" + device = "pngalpha" + else: + # "pnmraw" automatically chooses between + # PBM ("1"), PGM ("L"), and PPM ("RGB"). + device = "pnmraw" + + # Build Ghostscript command + command = [ + gs_binary, + "-q", # quiet mode + f"-g{width:d}x{height:d}", # set output geometry (pixels) + f"-r{res_x:f}x{res_y:f}", # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + f"-sDEVICE={device}", + f"-sOutputFile={outfile}", # output file + # adjust for image origin + "-c", + f"{-bbox[0]} {-bbox[1]} translate", + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + # push data through Ghostscript + try: + startupinfo = None + if sys.platform.startswith("win"): + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + subprocess.check_call(command, startupinfo=startupinfo) + with Image.open(outfile) as out_im: + out_im.load() + return out_im.im.copy() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"%!PS" or (len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5) + + +## +# Image plugin for Encapsulated PostScript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self) -> None: + (length, offset) = self._find_offset(self.fp) + + # go to offset - start of "%!PS" + self.fp.seek(offset) + + self._mode = "RGB" + + # When reading header comments, the first comment is used. + # When reading trailer comments, the last comment is used. + bounding_box: list[int] | None = None + imagedata_size: tuple[int, int] | None = None + + byte_arr = bytearray(255) + bytes_mv = memoryview(byte_arr) + bytes_read = 0 + reading_header_comments = True + reading_trailer_comments = False + trailer_reached = False + + def check_required_header_comments() -> None: + """ + The EPS specification requires that some headers exist. + This should be checked when the header comments formally end, + when image data starts, or when the file ends, whichever comes first. + """ + if "PS-Adobe" not in self.info: + msg = 'EPS header missing "%!PS-Adobe" comment' + raise SyntaxError(msg) + if "BoundingBox" not in self.info: + msg = 'EPS header missing "%%BoundingBox" comment' + raise SyntaxError(msg) + + def read_comment(s: str) -> bool: + nonlocal bounding_box, reading_trailer_comments + try: + m = split.match(s) + except re.error as e: + msg = "not an EPS file" + raise SyntaxError(msg) from e + + if not m: + return False + + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + if v == "(atend)": + reading_trailer_comments = True + elif not bounding_box or (trailer_reached and reading_trailer_comments): + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + bounding_box = [int(float(i)) for i in v.split()] + except Exception: + pass + return True + + while True: + byte = self.fp.read(1) + if byte == b"": + # if we didn't read a byte we must be at the end of the file + if bytes_read == 0: + if reading_header_comments: + check_required_header_comments() + break + elif byte in b"\r\n": + # if we read a line ending character, ignore it and parse what + # we have already read. if we haven't read any other characters, + # continue reading + if bytes_read == 0: + continue + else: + # ASCII/hexadecimal lines in an EPS file must not exceed + # 255 characters, not including line ending characters + if bytes_read >= 255: + # only enforce this for lines starting with a "%", + # otherwise assume it's binary data + if byte_arr[0] == ord("%"): + msg = "not an EPS file" + raise SyntaxError(msg) + else: + if reading_header_comments: + check_required_header_comments() + reading_header_comments = False + # reset bytes_read so we can keep reading + # data until the end of the line + bytes_read = 0 + byte_arr[bytes_read] = byte[0] + bytes_read += 1 + continue + + if reading_header_comments: + # Load EPS header + + # if this line doesn't start with a "%", + # or does start with "%%EndComments", + # then we've reached the end of the header/comments + if byte_arr[0] != ord("%") or bytes_mv[:13] == b"%%EndComments": + check_required_header_comments() + reading_header_comments = False + continue + + s = str(bytes_mv[:bytes_read], "latin-1") + if not read_comment(s): + m = field.match(s) + if m: + k = m.group(1) + if k[:8] == "PS-Adobe": + self.info["PS-Adobe"] = k[9:] + else: + self.info[k] = "" + elif s[0] == "%": + # handle non-DSC PostScript comments that some + # tools mistakenly put in the Comments section + pass + else: + msg = "bad EPS header" + raise OSError(msg) + elif bytes_mv[:11] == b"%ImageData:": + # Check for an "ImageData" descriptor + # https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577413_pgfId-1035096 + + # If we've already read an "ImageData" descriptor, + # don't read another one. + if imagedata_size: + bytes_read = 0 + continue + + # Values: + # columns + # rows + # bit depth (1 or 8) + # mode (1: L, 2: LAB, 3: RGB, 4: CMYK) + # number of padding channels + # block size (number of bytes per row per channel) + # binary/ascii (1: binary, 2: ascii) + # data start identifier (the image data follows after a single line + # consisting only of this quoted value) + image_data_values = byte_arr[11:bytes_read].split(None, 7) + columns, rows, bit_depth, mode_id = ( + int(value) for value in image_data_values[:4] + ) + + if bit_depth == 1: + self._mode = "1" + elif bit_depth == 8: + try: + self._mode = self.mode_map[mode_id] + except ValueError: + break + else: + break + + # Parse the columns and rows after checking the bit depth and mode + # in case the bit depth and/or mode are invalid. + imagedata_size = columns, rows + elif bytes_mv[:5] == b"%%EOF": + break + elif trailer_reached and reading_trailer_comments: + # Load EPS trailer + s = str(bytes_mv[:bytes_read], "latin-1") + read_comment(s) + elif bytes_mv[:9] == b"%%Trailer": + trailer_reached = True + bytes_read = 0 + + # A "BoundingBox" is always required, + # even if an "ImageData" descriptor size exists. + if not bounding_box: + msg = "cannot determine EPS bounding box" + raise OSError(msg) + + # An "ImageData" size takes precedence over the "BoundingBox". + self._size = imagedata_size or ( + bounding_box[2] - bounding_box[0], + bounding_box[3] - bounding_box[1], + ) + + self.tile = [ + ImageFile._Tile("eps", (0, 0) + self.size, offset, (length, bounding_box)) + ] + + def _find_offset(self, fp: IO[bytes]) -> tuple[int, int]: + s = fp.read(4) + + if s == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + s = fp.read(8) + offset = i32(s) + length = i32(s, 4) + else: + msg = "not an EPS file" + raise SyntaxError(msg) + + return length, offset + + def load( + self, scale: int = 1, transparency: bool = False + ) -> Image.core.PixelAccess | None: + # Load EPS via Ghostscript + if self.tile: + self.im = Ghostscript(self.tile, self.size, self.fp, scale, transparency) + self._mode = self.im.mode + self._size = self.im.size + self.tile = [] + return Image.Image.load(self) + + def load_seek(self, pos: int) -> None: + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes, eps: int = 1) -> None: + """EPS Writer for the Python Imaging Library.""" + + # make sure image data is available + im.load() + + # determine PostScript image mode + if im.mode == "L": + operator = (8, 1, b"image") + elif im.mode == "RGB": + operator = (8, 3, b"false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, b"false 4 colorimage") + else: + msg = "image mode is not supported" + raise ValueError(msg) + + if eps: + # write EPS header + fp.write(b"%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write(b"%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write(b"%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write(b"%%Pages: 1\n") + fp.write(b"%%EndComments\n") + fp.write(b"%%Page: 1 1\n") + fp.write(b"%%ImageData: %d %d " % im.size) + fp.write(b'%d %d 0 1 1 "%s"\n' % operator) + + # image header + fp.write(b"gsave\n") + fp.write(b"10 dict begin\n") + fp.write(b"/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write(b"%d %d scale\n" % im.size) + fp.write(b"%d %d 8\n" % im.size) # <= bits + fp.write(b"[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write(b"{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + b"\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, fp, [ImageFile._Tile("eps", (0, 0) + im.size)]) + + fp.write(b"\n%%%%EndBinary\n") + fp.write(b"grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/libs/PIL/ExifTags.py b/libs/PIL/ExifTags.py new file mode 100644 index 0000000..2280d5c --- /dev/null +++ b/libs/PIL/ExifTags.py @@ -0,0 +1,382 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +""" +This module provides constants and clear-text names for various +well-known EXIF tags. +""" +from __future__ import annotations + +from enum import IntEnum + + +class Base(IntEnum): + # possibly incomplete + InteropIndex = 0x0001 + ProcessingSoftware = 0x000B + NewSubfileType = 0x00FE + SubfileType = 0x00FF + ImageWidth = 0x0100 + ImageLength = 0x0101 + BitsPerSample = 0x0102 + Compression = 0x0103 + PhotometricInterpretation = 0x0106 + Thresholding = 0x0107 + CellWidth = 0x0108 + CellLength = 0x0109 + FillOrder = 0x010A + DocumentName = 0x010D + ImageDescription = 0x010E + Make = 0x010F + Model = 0x0110 + StripOffsets = 0x0111 + Orientation = 0x0112 + SamplesPerPixel = 0x0115 + RowsPerStrip = 0x0116 + StripByteCounts = 0x0117 + MinSampleValue = 0x0118 + MaxSampleValue = 0x0119 + XResolution = 0x011A + YResolution = 0x011B + PlanarConfiguration = 0x011C + PageName = 0x011D + FreeOffsets = 0x0120 + FreeByteCounts = 0x0121 + GrayResponseUnit = 0x0122 + GrayResponseCurve = 0x0123 + T4Options = 0x0124 + T6Options = 0x0125 + ResolutionUnit = 0x0128 + PageNumber = 0x0129 + TransferFunction = 0x012D + Software = 0x0131 + DateTime = 0x0132 + Artist = 0x013B + HostComputer = 0x013C + Predictor = 0x013D + WhitePoint = 0x013E + PrimaryChromaticities = 0x013F + ColorMap = 0x0140 + HalftoneHints = 0x0141 + TileWidth = 0x0142 + TileLength = 0x0143 + TileOffsets = 0x0144 + TileByteCounts = 0x0145 + SubIFDs = 0x014A + InkSet = 0x014C + InkNames = 0x014D + NumberOfInks = 0x014E + DotRange = 0x0150 + TargetPrinter = 0x0151 + ExtraSamples = 0x0152 + SampleFormat = 0x0153 + SMinSampleValue = 0x0154 + SMaxSampleValue = 0x0155 + TransferRange = 0x0156 + ClipPath = 0x0157 + XClipPathUnits = 0x0158 + YClipPathUnits = 0x0159 + Indexed = 0x015A + JPEGTables = 0x015B + OPIProxy = 0x015F + JPEGProc = 0x0200 + JpegIFOffset = 0x0201 + JpegIFByteCount = 0x0202 + JpegRestartInterval = 0x0203 + JpegLosslessPredictors = 0x0205 + JpegPointTransforms = 0x0206 + JpegQTables = 0x0207 + JpegDCTables = 0x0208 + JpegACTables = 0x0209 + YCbCrCoefficients = 0x0211 + YCbCrSubSampling = 0x0212 + YCbCrPositioning = 0x0213 + ReferenceBlackWhite = 0x0214 + XMLPacket = 0x02BC + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageLength = 0x1002 + Rating = 0x4746 + RatingPercent = 0x4749 + ImageID = 0x800D + CFARepeatPatternDim = 0x828D + BatteryLevel = 0x828F + Copyright = 0x8298 + ExposureTime = 0x829A + FNumber = 0x829D + IPTCNAA = 0x83BB + ImageResources = 0x8649 + ExifOffset = 0x8769 + InterColorProfile = 0x8773 + ExposureProgram = 0x8822 + SpectralSensitivity = 0x8824 + GPSInfo = 0x8825 + ISOSpeedRatings = 0x8827 + OECF = 0x8828 + Interlace = 0x8829 + TimeZoneOffset = 0x882A + SelfTimerMode = 0x882B + SensitivityType = 0x8830 + StandardOutputSensitivity = 0x8831 + RecommendedExposureIndex = 0x8832 + ISOSpeed = 0x8833 + ISOSpeedLatitudeyyy = 0x8834 + ISOSpeedLatitudezzz = 0x8835 + ExifVersion = 0x9000 + DateTimeOriginal = 0x9003 + DateTimeDigitized = 0x9004 + OffsetTime = 0x9010 + OffsetTimeOriginal = 0x9011 + OffsetTimeDigitized = 0x9012 + ComponentsConfiguration = 0x9101 + CompressedBitsPerPixel = 0x9102 + ShutterSpeedValue = 0x9201 + ApertureValue = 0x9202 + BrightnessValue = 0x9203 + ExposureBiasValue = 0x9204 + MaxApertureValue = 0x9205 + SubjectDistance = 0x9206 + MeteringMode = 0x9207 + LightSource = 0x9208 + Flash = 0x9209 + FocalLength = 0x920A + Noise = 0x920D + ImageNumber = 0x9211 + SecurityClassification = 0x9212 + ImageHistory = 0x9213 + TIFFEPStandardID = 0x9216 + MakerNote = 0x927C + UserComment = 0x9286 + SubsecTime = 0x9290 + SubsecTimeOriginal = 0x9291 + SubsecTimeDigitized = 0x9292 + AmbientTemperature = 0x9400 + Humidity = 0x9401 + Pressure = 0x9402 + WaterDepth = 0x9403 + Acceleration = 0x9404 + CameraElevationAngle = 0x9405 + XPTitle = 0x9C9B + XPComment = 0x9C9C + XPAuthor = 0x9C9D + XPKeywords = 0x9C9E + XPSubject = 0x9C9F + FlashPixVersion = 0xA000 + ColorSpace = 0xA001 + ExifImageWidth = 0xA002 + ExifImageHeight = 0xA003 + RelatedSoundFile = 0xA004 + ExifInteroperabilityOffset = 0xA005 + FlashEnergy = 0xA20B + SpatialFrequencyResponse = 0xA20C + FocalPlaneXResolution = 0xA20E + FocalPlaneYResolution = 0xA20F + FocalPlaneResolutionUnit = 0xA210 + SubjectLocation = 0xA214 + ExposureIndex = 0xA215 + SensingMethod = 0xA217 + FileSource = 0xA300 + SceneType = 0xA301 + CFAPattern = 0xA302 + CustomRendered = 0xA401 + ExposureMode = 0xA402 + WhiteBalance = 0xA403 + DigitalZoomRatio = 0xA404 + FocalLengthIn35mmFilm = 0xA405 + SceneCaptureType = 0xA406 + GainControl = 0xA407 + Contrast = 0xA408 + Saturation = 0xA409 + Sharpness = 0xA40A + DeviceSettingDescription = 0xA40B + SubjectDistanceRange = 0xA40C + ImageUniqueID = 0xA420 + CameraOwnerName = 0xA430 + BodySerialNumber = 0xA431 + LensSpecification = 0xA432 + LensMake = 0xA433 + LensModel = 0xA434 + LensSerialNumber = 0xA435 + CompositeImage = 0xA460 + CompositeImageCount = 0xA461 + CompositeImageExposureTimes = 0xA462 + Gamma = 0xA500 + PrintImageMatching = 0xC4A5 + DNGVersion = 0xC612 + DNGBackwardVersion = 0xC613 + UniqueCameraModel = 0xC614 + LocalizedCameraModel = 0xC615 + CFAPlaneColor = 0xC616 + CFALayout = 0xC617 + LinearizationTable = 0xC618 + BlackLevelRepeatDim = 0xC619 + BlackLevel = 0xC61A + BlackLevelDeltaH = 0xC61B + BlackLevelDeltaV = 0xC61C + WhiteLevel = 0xC61D + DefaultScale = 0xC61E + DefaultCropOrigin = 0xC61F + DefaultCropSize = 0xC620 + ColorMatrix1 = 0xC621 + ColorMatrix2 = 0xC622 + CameraCalibration1 = 0xC623 + CameraCalibration2 = 0xC624 + ReductionMatrix1 = 0xC625 + ReductionMatrix2 = 0xC626 + AnalogBalance = 0xC627 + AsShotNeutral = 0xC628 + AsShotWhiteXY = 0xC629 + BaselineExposure = 0xC62A + BaselineNoise = 0xC62B + BaselineSharpness = 0xC62C + BayerGreenSplit = 0xC62D + LinearResponseLimit = 0xC62E + CameraSerialNumber = 0xC62F + LensInfo = 0xC630 + ChromaBlurRadius = 0xC631 + AntiAliasStrength = 0xC632 + ShadowScale = 0xC633 + DNGPrivateData = 0xC634 + MakerNoteSafety = 0xC635 + CalibrationIlluminant1 = 0xC65A + CalibrationIlluminant2 = 0xC65B + BestQualityScale = 0xC65C + RawDataUniqueID = 0xC65D + OriginalRawFileName = 0xC68B + OriginalRawFileData = 0xC68C + ActiveArea = 0xC68D + MaskedAreas = 0xC68E + AsShotICCProfile = 0xC68F + AsShotPreProfileMatrix = 0xC690 + CurrentICCProfile = 0xC691 + CurrentPreProfileMatrix = 0xC692 + ColorimetricReference = 0xC6BF + CameraCalibrationSignature = 0xC6F3 + ProfileCalibrationSignature = 0xC6F4 + AsShotProfileName = 0xC6F6 + NoiseReductionApplied = 0xC6F7 + ProfileName = 0xC6F8 + ProfileHueSatMapDims = 0xC6F9 + ProfileHueSatMapData1 = 0xC6FA + ProfileHueSatMapData2 = 0xC6FB + ProfileToneCurve = 0xC6FC + ProfileEmbedPolicy = 0xC6FD + ProfileCopyright = 0xC6FE + ForwardMatrix1 = 0xC714 + ForwardMatrix2 = 0xC715 + PreviewApplicationName = 0xC716 + PreviewApplicationVersion = 0xC717 + PreviewSettingsName = 0xC718 + PreviewSettingsDigest = 0xC719 + PreviewColorSpace = 0xC71A + PreviewDateTime = 0xC71B + RawImageDigest = 0xC71C + OriginalRawFileDigest = 0xC71D + SubTileBlockSize = 0xC71E + RowInterleaveFactor = 0xC71F + ProfileLookTableDims = 0xC725 + ProfileLookTableData = 0xC726 + OpcodeList1 = 0xC740 + OpcodeList2 = 0xC741 + OpcodeList3 = 0xC74E + NoiseProfile = 0xC761 + + +"""Maps EXIF tags to tag names.""" +TAGS = { + **{i.value: i.name for i in Base}, + 0x920C: "SpatialFrequencyResponse", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x828E: "CFAPattern", + 0x920B: "FlashEnergy", + 0x9216: "TIFF/EPStandardID", +} + + +class GPS(IntEnum): + GPSVersionID = 0x00 + GPSLatitudeRef = 0x01 + GPSLatitude = 0x02 + GPSLongitudeRef = 0x03 + GPSLongitude = 0x04 + GPSAltitudeRef = 0x05 + GPSAltitude = 0x06 + GPSTimeStamp = 0x07 + GPSSatellites = 0x08 + GPSStatus = 0x09 + GPSMeasureMode = 0x0A + GPSDOP = 0x0B + GPSSpeedRef = 0x0C + GPSSpeed = 0x0D + GPSTrackRef = 0x0E + GPSTrack = 0x0F + GPSImgDirectionRef = 0x10 + GPSImgDirection = 0x11 + GPSMapDatum = 0x12 + GPSDestLatitudeRef = 0x13 + GPSDestLatitude = 0x14 + GPSDestLongitudeRef = 0x15 + GPSDestLongitude = 0x16 + GPSDestBearingRef = 0x17 + GPSDestBearing = 0x18 + GPSDestDistanceRef = 0x19 + GPSDestDistance = 0x1A + GPSProcessingMethod = 0x1B + GPSAreaInformation = 0x1C + GPSDateStamp = 0x1D + GPSDifferential = 0x1E + GPSHPositioningError = 0x1F + + +"""Maps EXIF GPS tags to tag names.""" +GPSTAGS = {i.value: i.name for i in GPS} + + +class Interop(IntEnum): + InteropIndex = 0x0001 + InteropVersion = 0x0002 + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageHeight = 0x1002 + + +class IFD(IntEnum): + Exif = 0x8769 + GPSInfo = 0x8825 + MakerNote = 0x927C + Makernote = 0x927C # Deprecated + Interop = 0xA005 + IFD1 = -1 + + +class LightSource(IntEnum): + Unknown = 0x00 + Daylight = 0x01 + Fluorescent = 0x02 + Tungsten = 0x03 + Flash = 0x04 + Fine = 0x09 + Cloudy = 0x0A + Shade = 0x0B + DaylightFluorescent = 0x0C + DayWhiteFluorescent = 0x0D + CoolWhiteFluorescent = 0x0E + WhiteFluorescent = 0x0F + StandardLightA = 0x11 + StandardLightB = 0x12 + StandardLightC = 0x13 + D55 = 0x14 + D65 = 0x15 + D75 = 0x16 + D50 = 0x17 + ISO = 0x18 + Other = 0xFF diff --git a/libs/PIL/FitsImagePlugin.py b/libs/PIL/FitsImagePlugin.py new file mode 100644 index 0000000..6bbd264 --- /dev/null +++ b/libs/PIL/FitsImagePlugin.py @@ -0,0 +1,152 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS file handling +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import gzip +import math + +from . import Image, ImageFile + + +def _accept(prefix: bytes) -> bool: + return prefix[:6] == b"SIMPLE" + + +class FitsImageFile(ImageFile.ImageFile): + format = "FITS" + format_description = "FITS" + + def _open(self) -> None: + assert self.fp is not None + + headers: dict[bytes, bytes] = {} + header_in_progress = False + decoder_name = "" + while True: + header = self.fp.read(80) + if not header: + msg = "Truncated FITS file" + raise OSError(msg) + keyword = header[:8].strip() + if keyword in (b"SIMPLE", b"XTENSION"): + header_in_progress = True + elif headers and not header_in_progress: + # This is now a data unit + break + elif keyword == b"END": + # Seek to the end of the header unit + self.fp.seek(math.ceil(self.fp.tell() / 2880) * 2880) + if not decoder_name: + decoder_name, offset, args = self._parse_headers(headers) + + header_in_progress = False + continue + + if decoder_name: + # Keep going to read past the headers + continue + + value = header[8:].split(b"/")[0].strip() + if value.startswith(b"="): + value = value[1:].strip() + if not headers and (not _accept(keyword) or value != b"T"): + msg = "Not a FITS file" + raise SyntaxError(msg) + headers[keyword] = value + + if not decoder_name: + msg = "No image data" + raise ValueError(msg) + + offset += self.fp.tell() - 80 + self.tile = [ImageFile._Tile(decoder_name, (0, 0) + self.size, offset, args)] + + def _get_size( + self, headers: dict[bytes, bytes], prefix: bytes + ) -> tuple[int, int] | None: + naxis = int(headers[prefix + b"NAXIS"]) + if naxis == 0: + return None + + if naxis == 1: + return 1, int(headers[prefix + b"NAXIS1"]) + else: + return int(headers[prefix + b"NAXIS1"]), int(headers[prefix + b"NAXIS2"]) + + def _parse_headers( + self, headers: dict[bytes, bytes] + ) -> tuple[str, int, tuple[str | int, ...]]: + prefix = b"" + decoder_name = "raw" + offset = 0 + if ( + headers.get(b"XTENSION") == b"'BINTABLE'" + and headers.get(b"ZIMAGE") == b"T" + and headers[b"ZCMPTYPE"] == b"'GZIP_1 '" + ): + no_prefix_size = self._get_size(headers, prefix) or (0, 0) + number_of_bits = int(headers[b"BITPIX"]) + offset = no_prefix_size[0] * no_prefix_size[1] * (number_of_bits // 8) + + prefix = b"Z" + decoder_name = "fits_gzip" + + size = self._get_size(headers, prefix) + if not size: + return "", 0, () + + self._size = size + + number_of_bits = int(headers[prefix + b"BITPIX"]) + if number_of_bits == 8: + self._mode = "L" + elif number_of_bits == 16: + self._mode = "I;16" + elif number_of_bits == 32: + self._mode = "I" + elif number_of_bits in (-32, -64): + self._mode = "F" + + args: tuple[str | int, ...] + if decoder_name == "raw": + args = (self.mode, 0, -1) + else: + args = (number_of_bits,) + return decoder_name, offset, args + + +class FitsGzipDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + value = gzip.decompress(self.fd.read()) + + rows = [] + offset = 0 + number_of_bits = min(self.args[0] // 8, 4) + for y in range(self.state.ysize): + row = bytearray() + for x in range(self.state.xsize): + row += value[offset + (4 - number_of_bits) : offset + 4] + offset += 4 + rows.append(row) + self.set_as_raw(bytes([pixel for row in rows[::-1] for pixel in row])) + return -1, 0 + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FitsImageFile.format, FitsImageFile, _accept) +Image.register_decoder("fits_gzip", FitsGzipDecoder) + +Image.register_extensions(FitsImageFile.format, [".fit", ".fits"]) diff --git a/libs/PIL/FliImagePlugin.py b/libs/PIL/FliImagePlugin.py new file mode 100644 index 0000000..b534b30 --- /dev/null +++ b/libs/PIL/FliImagePlugin.py @@ -0,0 +1,175 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 + +# +# decoder + + +def _accept(prefix: bytes) -> bool: + return ( + len(prefix) >= 6 + and i16(prefix, 4) in [0xAF11, 0xAF12] + and i16(prefix, 14) in [0, 3] # flags + ) + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + + +class FliImageFile(ImageFile.ImageFile): + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # HEAD + s = self.fp.read(128) + if not (_accept(s) and s[20:22] == b"\x00\x00"): + msg = "not an FLI/FLC file" + raise SyntaxError(msg) + + # frames + self.n_frames = i16(s, 6) + self.is_animated = self.n_frames > 1 + + # image characteristics + self._mode = "P" + self._size = i16(s, 8), i16(s, 10) + + # animation speed + duration = i32(s, 16) + magic = i16(s, 4) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s, 4) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + self.fp.seek(self.__offset) + s = self.fp.read(16) + + if i16(s, 4) == 0xF1FA: + # look for palette chunk + number_of_subchunks = i16(s, 6) + chunk_size: int | None = None + for _ in range(number_of_subchunks): + if chunk_size is not None: + self.fp.seek(chunk_size - 6, os.SEEK_CUR) + s = self.fp.read(6) + chunk_type = i16(s, 4) + if chunk_type in (4, 11): + self._palette(palette, 2 if chunk_type == 11 else 0) + break + chunk_size = i32(s) + if not chunk_size: + break + + self.palette = ImagePalette.raw( + "RGB", b"".join(o8(r) + o8(g) + o8(b) for (r, g, b) in palette) + ) + + # set things up to decode first frame + self.__frame = -1 + self._fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette: list[tuple[int, int, int]], shift: int) -> None: + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + s[0] + n = s[1] + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = s[n] << shift + g = s[n + 1] << shift + b = s[n + 2] << shift + palette[i] = (r, g, b) + i += 1 + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame: int) -> None: + if frame == 0: + self.__frame = -1 + self._fp.seek(self.__rewind) + self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + self.__frame = frame + + # move to next frame + self.fp = self._fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + msg = "missing frame size" + raise EOFError(msg) + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [ImageFile._Tile("fli", (0, 0) + self.size, self.__offset)] + + self.__offset += framesize + + def tell(self) -> int: + return self.__frame + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/libs/PIL/FontFile.py b/libs/PIL/FontFile.py new file mode 100644 index 0000000..1e0c1c1 --- /dev/null +++ b/libs/PIL/FontFile.py @@ -0,0 +1,134 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +from typing import BinaryIO + +from . import Image, _binary + +WIDTH = 800 + + +def puti16( + fp: BinaryIO, values: tuple[int, int, int, int, int, int, int, int, int, int] +) -> None: + """Write network order (big-endian) 16-bit sequence""" + for v in values: + if v < 0: + v += 65536 + fp.write(_binary.o16be(v)) + + +class FontFile: + """Base class for raster font file handlers.""" + + bitmap: Image.Image | None = None + + def __init__(self) -> None: + self.info: dict[bytes, bytes | int] = {} + self.glyph: list[ + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ] = [None] * 256 + + def __getitem__(self, ix: int) -> ( + tuple[ + tuple[int, int], + tuple[int, int, int, int], + tuple[int, int, int, int], + Image.Image, + ] + | None + ): + return self.glyph[ix] + + def compile(self) -> None: + """Create metrics and bitmap""" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self.glyph: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines += 1 + w = src[2] - src[0] + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics: list[ + tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]] + | None + ] = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + self.metrics[i] = d, dst, s + + def save(self, filename: str) -> None: + """Save font""" + + self.compile() + + # font data + if not self.bitmap: + msg = "No bitmap created" + raise ValueError(msg) + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write(f";;;;;;{self.ysize};\n".encode("ascii")) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, (0,) * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/libs/PIL/FpxImagePlugin.py b/libs/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..4cfcb06 --- /dev/null +++ b/libs/PIL/FpxImagePlugin.py @@ -0,0 +1,257 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# 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 olefile + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007FFE,): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017FFE): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027FFE): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037FFE): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + format = "FPX" + format_description = "FlashPix" + + def _open(self) -> None: + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an FPX file; invalid OLE file" + raise SyntaxError(msg) from e + + root = self.ole.root + if not root or root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + msg = "not an FPX file; bad root CLSID" + raise SyntaxError(msg) + + self._open_index(1) + + def _open_index(self, index: int = 1) -> None: + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + [f"Data Object Store {index:06d}", "\005Image Contents"] + ) + + # size (highest resolution) + + assert isinstance(prop[0x1000002], int) + assert isinstance(prop[0x1000003], int) + self._size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size // 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + if not isinstance(s, bytes) or (bands := i32(s, 4)) > 4: + msg = "Invalid number of bands" + raise OSError(msg) + + # note: for now, we ignore the "uncalibrated" flag + colors = tuple(i32(s, 8 + i * 4) & 0x7FFFFFFF for i in range(bands)) + + self._mode, self.rawmode = MODES[colors] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index: int = 1, subimage: int = 0) -> None: + # + # setup tile descriptors for a given subimage + + stream = [ + f"Data Object Store {index:06d}", + f"Resolution {subimage:04d}", + "Subimage 0000 Header", + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + if size != self.size: + msg = "subimage mismatch" + raise OSError(msg) + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + x1 = min(xsize, x + xtile) + y1 = min(ysize, y + ytile) + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ImageFile._Tile( + "raw", + (x, y, x1, y1), + i32(s, i) + 28, + self.rawmode, + ) + ) + + elif compression == 1: + # FIXME: the fill decoder is not implemented + self.tile.append( + ImageFile._Tile( + "fill", + (x, y, x1, y1), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + internal_color_conversion = s[14] + jpeg_tables = s[15] + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append( + ImageFile._Tile( + "jpeg", + (x, y, x1, y1), + i32(s, i) + 28, + (rawmode, jpegmode), + ) + ) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + msg = "unknown/invalid compression" + raise OSError(msg) + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self._fp = self.fp + self.fp = None + + def load(self) -> Image.core.PixelAccess | None: + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + def close(self) -> None: + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/libs/PIL/FtexImagePlugin.py b/libs/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..0516b76 --- /dev/null +++ b/libs/PIL/FtexImagePlugin.py @@ -0,0 +1,115 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC +and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { + u32:magic, + u32:version, + u32:width, + u32:height, + u32:mipmap_count, + u32:format_count +} + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the +same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB +uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed +textures this is the size of the texture data compressed with DXT1. For 24 bit +uncompressed textures, this is 3 * width * height. Following this are the image +bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +from __future__ import annotations + +import struct +from enum import IntEnum +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" + + +class Format(IntEnum): + DXT1 = 0 + UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not an FTEX file" + raise SyntaxError(msg) + struct.unpack(" None: + pass + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == MAGIC + + +Image.register_open(FtexImageFile.format, FtexImageFile, _accept) +Image.register_extensions(FtexImageFile.format, [".ftc", ".ftu"]) diff --git a/libs/PIL/GbrImagePlugin.py b/libs/PIL/GbrImagePlugin.py new file mode 100644 index 0000000..f319d7e --- /dev/null +++ b/libs/PIL/GbrImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library +# +# load a GIMP brush file +# +# History: +# 96-03-14 fl Created +# 16-01-08 es Version 2 +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# Copyright (c) Eric Soroos 2016. +# +# See the README file for information on usage and redistribution. +# +# +# See https://github.com/GNOME/gimp/blob/mainline/devel-docs/gbr.txt for +# format documentation. +# +# This code Interprets version 1 and 2 .gbr files. +# Version 1 files are obsolete, and should not be used for new +# brushes. +# Version 2 files are saved by GIMP v2.8 (at least) +# Version 3 files have a format specifier of 18 for 16bit floats in +# the color depth field. This is currently unsupported by Pillow. +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 8 and i32(prefix, 0) >= 20 and i32(prefix, 4) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + format = "GBR" + format_description = "GIMP brush file" + + def _open(self) -> None: + header_size = i32(self.fp.read(4)) + if header_size < 20: + msg = "not a GIMP brush" + raise SyntaxError(msg) + version = i32(self.fp.read(4)) + if version not in (1, 2): + msg = f"Unsupported GIMP brush version: {version}" + raise SyntaxError(msg) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + msg = "not a GIMP brush" + raise SyntaxError(msg) + if color_depth not in (1, 4): + msg = f"Unsupported GIMP brush color depth: {color_depth}" + raise SyntaxError(msg) + + if version == 1: + comment_length = header_size - 20 + else: + comment_length = header_size - 28 + magic_number = self.fp.read(4) + if magic_number != b"GIMP": + msg = "not a GIMP brush, bad magic number" + raise SyntaxError(msg) + self.info["spacing"] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self._mode = "L" + else: + self._mode = "RGBA" + + self._size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + return Image.Image.load(self) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/libs/PIL/GdImageFile.py b/libs/PIL/GdImageFile.py new file mode 100644 index 0000000..fc4801e --- /dev/null +++ b/libs/PIL/GdImageFile.py @@ -0,0 +1,102 @@ +# +# 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__ import annotations + +from typing import IO + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._typing import StrOrBytesPath + + +class GdImageFile(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: + # Header + assert self.fp is not None + + s = self.fp.read(1037) + + if i16(s) not in [65534, 65535]: + msg = "Not a valid GD 2.x .gd file" + raise SyntaxError(msg) + + self._mode = "L" # FIXME: "P" + self._size = i16(s, 2), i16(s, 4) + + true_color = s[6] + true_color_offset = 2 if true_color else 0 + + # transparency index + tindex = i32(s, 7 + true_color_offset) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + true_color_offset + 4 : 7 + true_color_offset + 4 + 256 * 4] + ) + + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + 7 + true_color_offset + 4 + 256 * 4, + "L", + ) + ] + + +def open(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. + """ + if mode != "r": + msg = "bad mode" + raise ValueError(msg) + + try: + return GdImageFile(fp) + except SyntaxError as e: + msg = "cannot identify this image file" + raise UnidentifiedImageError(msg) from e diff --git a/libs/PIL/GifImagePlugin.py b/libs/PIL/GifImagePlugin.py new file mode 100644 index 0000000..47022d5 --- /dev/null +++ b/libs/PIL/GifImagePlugin.py @@ -0,0 +1,1197 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import itertools +import math +import os +import subprocess +from enum import IntEnum +from functools import cached_property +from typing import IO, TYPE_CHECKING, Any, Literal, NamedTuple, Union + +from . import ( + Image, + ImageChops, + ImageFile, + ImageMath, + ImageOps, + ImagePalette, + ImageSequence, +) +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +if TYPE_CHECKING: + from . import _imaging + from ._typing import Buffer + + +class LoadingStrategy(IntEnum): + """.. versionadded:: 9.1.0""" + + RGB_AFTER_FIRST = 0 + RGB_AFTER_DIFFERENT_PALETTE_ONLY = 1 + RGB_ALWAYS = 2 + + +#: .. versionadded:: 9.1.0 +LOADING_STRATEGY = LoadingStrategy.RGB_AFTER_FIRST + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix: bytes) -> bool: + return prefix[:6] in [b"GIF87a", b"GIF89a"] + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + + +class GifImageFile(ImageFile.ImageFile): + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self) -> bytes | None: + s = self.fp.read(1) + if s and s[0]: + return self.fp.read(s[0]) + return None + + def _is_palette_needed(self, p: bytes) -> bool: + for i in range(0, len(p), 3): + if not (i // 3 == p[i] == p[i + 1] == p[i + 2]): + return True + return False + + def _open(self) -> None: + # Screen + s = self.fp.read(13) + if not _accept(s): + msg = "not a GIF file" + raise SyntaxError(msg) + + self.info["version"] = s[:6] + self._size = i16(s, 6), i16(s, 8) + flags = s[10] + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = s[11] + # check if palette contains colour indices + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + + self._fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames: int | None = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self) -> int: + if self._n_frames is None: + current = self.tell() + try: + while True: + self._seek(self.tell() + 1, False) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @cached_property + def is_animated(self) -> bool: + if self._n_frames is not None: + return self._n_frames != 1 + + current = self.tell() + if current: + return True + + try: + self._seek(1, False) + is_animated = True + except EOFError: + is_animated = False + + self.seek(current) + return is_animated + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._im = None + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in GIF file" + raise EOFError(msg) from e + + def _seek(self, frame: int, update_image: bool = True) -> None: + if frame == 0: + # rewind + self.__offset = 0 + self.dispose: _imaging.ImagingCore | None = None + self.__frame = -1 + self._fp.seek(self.__rewind) + self.disposal_method = 0 + if "comment" in self.info: + del self.info["comment"] + else: + # ensure that the previous frame was loaded + if self.tile and update_image: + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + self.fp = self._fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + s = self.fp.read(1) + if not s or s == b";": + msg = "no more images in GIF file" + raise EOFError(msg) + + palette: ImagePalette.ImagePalette | Literal[False] | None = None + + info: dict[str, Any] = {} + frame_transparency = None + interlace = None + frame_dispose_extent = None + while True: + if not s: + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if s[0] == 249 and block is not None: + # + # graphic control extension + # + flags = block[0] + if flags & 1: + frame_transparency = block[3] + info["duration"] = i16(block, 1) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif s[0] == 254: + # + # comment extension + # + comment = b"" + + # Read this comment block + while block: + comment += block + block = self.data() + + if "comment" in info: + # If multiple comment blocks in frame, separate with \n + info["comment"] += b"\n" + comment + else: + info["comment"] = comment + s = None + continue + elif s[0] == 255 and frame == 0 and block is not None: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if block and len(block) >= 3 and block[0] == 1: + self.info["loop"] = i16(block, 1) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s, 0), i16(s, 2) + x1, y1 = x0 + i16(s, 4), y0 + i16(s, 6) + if (x1 > self.size[0] or y1 > self.size[1]) and update_image: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + Image._decompression_bomb_check(self._size) + frame_dispose_extent = x0, y0, x1, y1 + flags = s[8] + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + palette = ImagePalette.raw("RGB", p) + else: + palette = False + + # image data + bits = self.fp.read(1)[0] + self.__offset = self.fp.tell() + break + s = None + + if interlace is None: + msg = "image not found in GIF frame" + raise EOFError(msg) + + self.__frame = frame + if not update_image: + return + + self.tile = [] + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + self._frame_palette = palette if palette is not None else self.global_palette + self._frame_transparency = frame_transparency + if frame == 0: + if self._frame_palette: + if LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + self._mode = "RGBA" if frame_transparency is not None else "RGB" + else: + self._mode = "P" + else: + self._mode = "L" + + if palette: + self.palette = palette + elif self.global_palette: + from copy import copy + + self.palette = copy(self.global_palette) + else: + self.palette = None + else: + if self.mode == "P": + if ( + LOADING_STRATEGY != LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY + or palette + ): + if "transparency" in self.info: + self.im.putpalettealpha(self.info["transparency"], 0) + self.im = self.im.convert("RGBA", Image.Dither.FLOYDSTEINBERG) + self._mode = "RGBA" + del self.info["transparency"] + else: + self._mode = "RGB" + self.im = self.im.convert("RGB", Image.Dither.FLOYDSTEINBERG) + + def _rgb(color: int) -> tuple[int, int, int]: + if self._frame_palette: + if color * 3 + 3 > len(self._frame_palette.palette): + color = 0 + return tuple(self._frame_palette.palette[color * 3 : color * 3 + 3]) + else: + return (color, color, color) + + self.dispose = None + self.dispose_extent = frame_dispose_extent + if self.dispose_extent and self.disposal_method >= 2: + try: + if self.disposal_method == 2: + # replace with background colour + + # only dispose the extent in this frame + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + + # by convention, attempt to use transparency first + dispose_mode = "P" + color = self.info.get("transparency", frame_transparency) + if color is not None: + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(color) + (0,) + else: + color = self.info.get("background", 0) + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGB" + color = _rgb(color) + self.dispose = Image.core.fill(dispose_mode, dispose_size, color) + else: + # replace with previous contents + if self._im is not None: + # only dispose the extent in this frame + self.dispose = self._crop(self.im, self.dispose_extent) + elif frame_transparency is not None: + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + dispose_mode = "P" + color = frame_transparency + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(frame_transparency) + (0,) + self.dispose = Image.core.fill( + dispose_mode, dispose_size, color + ) + except AttributeError: + pass + + if interlace is not None: + transparency = -1 + if frame_transparency is not None: + if frame == 0: + if LOADING_STRATEGY != LoadingStrategy.RGB_ALWAYS: + self.info["transparency"] = frame_transparency + elif self.mode not in ("RGB", "RGBA"): + transparency = frame_transparency + self.tile = [ + ImageFile._Tile( + "gif", + (x0, y0, x1, y1), + self.__offset, + (bits, interlace, transparency), + ) + ] + + if info.get("comment"): + self.info["comment"] = info["comment"] + for k in ["duration", "extension"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + def load_prepare(self) -> None: + temp_mode = "P" if self._frame_palette else "L" + self._prev_im = None + if self.__frame == 0: + if self._frame_transparency is not None: + self.im = Image.core.fill( + temp_mode, self.size, self._frame_transparency + ) + elif self.mode in ("RGB", "RGBA"): + self._prev_im = self.im + if self._frame_palette: + self.im = Image.core.fill("P", self.size, self._frame_transparency or 0) + self.im.putpalette("RGB", *self._frame_palette.getdata()) + else: + self._im = None + if not self._prev_im and self._im is not None and self.size != self.im.size: + expanded_im = Image.core.fill(self.im.mode, self.size) + if self._frame_palette: + expanded_im.putpalette("RGB", *self._frame_palette.getdata()) + expanded_im.paste(self.im, (0, 0) + self.im.size) + + self.im = expanded_im + self._mode = temp_mode + self._frame_palette = None + + super().load_prepare() + + def load_end(self) -> None: + if self.__frame == 0: + if self.mode == "P" and LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + self._mode = "RGBA" + else: + self._mode = "RGB" + self.im = self.im.convert(self.mode, Image.Dither.FLOYDSTEINBERG) + return + if not self._prev_im: + return + if self.size != self._prev_im.size: + if self._frame_transparency is not None: + expanded_im = Image.core.fill("RGBA", self.size) + else: + expanded_im = Image.core.fill("P", self.size) + expanded_im.putpalette("RGB", "RGB", self.im.getpalette()) + expanded_im = expanded_im.convert("RGB") + expanded_im.paste(self._prev_im, (0, 0) + self._prev_im.size) + + self._prev_im = expanded_im + assert self._prev_im is not None + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + frame_im = self.im.convert("RGBA") + else: + frame_im = self.im.convert("RGB") + + assert self.dispose_extent is not None + frame_im = self._crop(frame_im, self.dispose_extent) + + self.im = self._prev_im + self._mode = self.im.mode + if frame_im.mode == "RGBA": + self.im.paste(frame_im, self.dispose_extent, frame_im) + else: + self.im.paste(frame_im, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im: Image.Image) -> Image.Image: + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + :param im: Image object + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + im = im.convert("P", palette=Image.Palette.ADAPTIVE) + assert im.palette is not None + if im.palette.mode == "RGBA": + for rgba in im.palette.colors: + if rgba[3] == 0: + im.info["transparency"] = im.palette.colors[rgba] + break + return im + return im.convert("L") + + +_Palette = Union[bytes, bytearray, list[int], ImagePalette.ImagePalette] + + +def _normalize_palette( + im: Image.Image, palette: _Palette | None, info: dict[str, Any] +) -> Image.Image: + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray(palette.palette) + + if im.mode == "P": + if not source_palette: + im_palette = im.getpalette(None) + assert im_palette is not None + source_palette = bytearray(im_palette) + else: # L-mode + if not source_palette: + source_palette = bytearray(i // 3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", palette=source_palette) + assert source_palette is not None + + if palette: + used_palette_colors: list[int | None] = [] + assert im.palette is not None + for i in range(0, len(source_palette), 3): + source_color = tuple(source_palette[i : i + 3]) + index = im.palette.colors.get(source_color) + if index in used_palette_colors: + index = None + used_palette_colors.append(index) + for i, index in enumerate(used_palette_colors): + if index is None: + for j in range(len(used_palette_colors)): + if j not in used_palette_colors: + used_palette_colors[i] = j + break + dest_map: list[int] = [] + for index in used_palette_colors: + assert index is not None + dest_map.append(index) + im = im.remap_palette(dest_map) + else: + optimized_palette_colors = _get_optimize(im, info) + if optimized_palette_colors is not None: + im = im.remap_palette(optimized_palette_colors, source_palette) + if "transparency" in info: + try: + info["transparency"] = optimized_palette_colors.index( + info["transparency"] + ) + except ValueError: + del info["transparency"] + return im + + assert im.palette is not None + im.palette.palette = source_palette + return im + + +def _write_single_frame( + im: Image.Image, + fp: IO[bytes], + palette: _Palette | None, +) -> None: + im_out = _normalize_mode(im) + for k, v in im_out.info.items(): + if isinstance(k, str): + im.encoderinfo.setdefault(k, v) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save( + im_out, fp, [ImageFile._Tile("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])] + ) + + fp.write(b"\0") # end of image data + + +def _getbbox( + base_im: Image.Image, im_frame: Image.Image +) -> tuple[Image.Image, tuple[int, int, int, int] | None]: + palette_bytes = [ + bytes(im.palette.palette) if im.palette else b"" for im in (base_im, im_frame) + ] + if palette_bytes[0] != palette_bytes[1]: + im_frame = im_frame.convert("RGBA") + base_im = base_im.convert("RGBA") + delta = ImageChops.subtract_modulo(im_frame, base_im) + return delta, delta.getbbox(alpha_only=False) + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, fp: IO[bytes], palette: _Palette | None +) -> bool: + duration = im.encoderinfo.get("duration") + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames: list[_Frame] = [] + previous_im: Image.Image | None = None + frame_count = 0 + background_im = None + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + if frame_count == 0: + for k, v in im_frame.info.items(): + if k == "transparency": + continue + if isinstance(k, str): + im.encoderinfo.setdefault(k, v) + + encoderinfo = im.encoderinfo.copy() + if "transparency" in im_frame.info: + encoderinfo.setdefault("transparency", im_frame.info["transparency"]) + im_frame = _normalize_palette(im_frame, palette, encoderinfo) + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + diff_frame = None + if im_frames and previous_im: + # delta frame + delta, bbox = _getbbox(previous_im, im_frame) + if not bbox: + # This frame is identical to the previous frame + if encoderinfo.get("duration"): + im_frames[-1].encoderinfo["duration"] += encoderinfo["duration"] + continue + if im_frames[-1].encoderinfo.get("disposal") == 2: + if background_im is None: + color = im.encoderinfo.get( + "transparency", im.info.get("transparency", (0, 0, 0)) + ) + background = _get_background(im_frame, color) + background_im = Image.new("P", im_frame.size, background) + first_palette = im_frames[0].im.palette + assert first_palette is not None + background_im.putpalette(first_palette, first_palette.mode) + bbox = _getbbox(background_im, im_frame)[1] + elif encoderinfo.get("optimize") and im_frame.mode != "1": + if "transparency" not in encoderinfo: + assert im_frame.palette is not None + try: + encoderinfo["transparency"] = ( + im_frame.palette._new_color_index(im_frame) + ) + except ValueError: + pass + if "transparency" in encoderinfo: + # When the delta is zero, fill the image with transparency + diff_frame = im_frame.copy() + fill = Image.new("P", delta.size, encoderinfo["transparency"]) + if delta.mode == "RGBA": + r, g, b, a = delta.split() + mask = ImageMath.lambda_eval( + lambda args: args["convert"]( + args["max"]( + args["max"]( + args["max"](args["r"], args["g"]), args["b"] + ), + args["a"], + ) + * 255, + "1", + ), + r=r, + g=g, + b=b, + a=a, + ) + else: + if delta.mode == "P": + # Convert to L without considering palette + delta_l = Image.new("L", delta.size) + delta_l.putdata(delta.getdata()) + delta = delta_l + mask = ImageMath.lambda_eval( + lambda args: args["convert"](args["im"] * 255, "1"), + im=delta, + ) + diff_frame.paste(fill, mask=ImageOps.invert(mask)) + else: + bbox = None + previous_im = im_frame + im_frames.append(_Frame(diff_frame or im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1: + if "duration" in im.encoderinfo: + # Since multiple frames will not be written, use the combined duration + im.encoderinfo["duration"] = im_frames[0].encoderinfo["duration"] + return False + + for frame_data in im_frames: + im_frame = frame_data.im + if not frame_data.bbox: + # global header + for s in _get_global_header(im_frame, frame_data.encoderinfo): + fp.write(s) + offset = (0, 0) + else: + # compress difference + if not palette: + frame_data.encoderinfo["include_color_table"] = True + + im_frame = im_frame.crop(frame_data.bbox) + offset = frame_data.bbox[:2] + _write_frame_data(fp, im_frame, offset, frame_data.encoderinfo) + return True + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + # header + if "palette" in im.encoderinfo or "palette" in im.info: + palette = im.encoderinfo.get("palette", im.info.get("palette")) + else: + palette = None + im.encoderinfo.setdefault("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im: Image.Image) -> int: + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header( + fp: IO[bytes], im: Image.Image, offset: tuple[int, int], flags: int +) -> None: + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + transparency = None + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparency is not None or duration != 0 or disposal: + packed_flag = 1 if transparency is not None else 0 + packed_flag |= disposal << 2 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency or 0) # transparency index + + o8(0) + ) + + include_color_table = im.encoderinfo.get("include_color_table") + if include_color_table: + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write( + b"," + + o16(offset[0]) # offset + + o16(offset[1]) + + o16(im.size[0]) # size + + o16(im.size[1]) + + o8(flags) # flags + ) + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + tempfile = im._dump() + + try: + with open(filename, "wb") as f: + if im.mode != "RGB": + subprocess.check_call( + ["ppmtogif", tempfile], stdout=f, stderr=subprocess.DEVNULL + ) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (tempfile, filename) + quant_cmd = ["ppmquant", "256", tempfile] + togif_cmd = ["ppmtogif"] + quant_proc = subprocess.Popen( + quant_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + togif_proc = subprocess.Popen( + togif_cmd, + stdin=quant_proc.stdout, + stdout=f, + stderr=subprocess.DEVNULL, + ) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + assert quant_proc.stdout is not None + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, togif_cmd) + finally: + try: + os.unlink(tempfile) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im: Image.Image, info: dict[str, Any]) -> list[int] | None: + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize"): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == "L" + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or max(used_palette_colors) >= len(used_palette_colors): + return used_palette_colors + + assert im.palette is not None + num_palette_colors = len(im.palette.palette) // Image.getmodebands( + im.palette.mode + ) + current_palette_size = 1 << (num_palette_colors - 1).bit_length() + if ( + # check that the palette would become smaller when saved + len(used_palette_colors) <= current_palette_size // 2 + # check that the palette is not already the smallest possible size + and current_palette_size > 2 + ): + return used_palette_colors + return None + + +def _get_color_table_size(palette_bytes: bytes) -> int: + # calculate the palette size for the header + if not palette_bytes: + return 0 + elif len(palette_bytes) < 9: + return 1 + else: + return math.ceil(math.log(len(palette_bytes) // 3, 2)) - 1 + + +def _get_header_palette(palette_bytes: bytes) -> bytes: + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im: Image.Image) -> bytes: + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + if not im.palette: + return b"" + + palette = bytes(im.palette.palette) + if im.palette.mode == "RGBA": + palette = b"".join(palette[i * 4 : i * 4 + 3] for i in range(len(palette) // 3)) + return palette + + +def _get_background( + im: Image.Image, + info_background: int | tuple[int, int, int] | tuple[int, int, int, int] | None, +) -> int: + background = 0 + if info_background: + if isinstance(info_background, tuple): + # WebPImagePlugin stores an RGBA value in info["background"] + # So it must be converted to the same format as GifImagePlugin's + # info["background"] - a global color table index + assert im.palette is not None + try: + background = im.palette.getcolor(info_background, im) + except ValueError as e: + if str(e) not in ( + # If all 256 colors are in use, + # then there is no need for the background color + "cannot allocate more than 256 colors", + # Ignore non-opaque WebP background + "cannot add non-opaque RGBA color to RGB palette", + ): + raise + else: + background = info_background + return background + + +def _get_global_header(im: Image.Image, info: dict[str, Any]) -> list[bytes]: + """Return a list of strings representing a GIF header""" + + # Header Block + # https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + if im.info.get("version") == b"89a" or ( + info + and ( + "transparency" in info + or info.get("loop") is not None + or info.get("duration") + or info.get("comment") + ) + ): + version = b"89a" + + background = _get_background(im, info.get("background")) + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + header = [ + b"GIF" # signature + + version # version + + o16(im.size[0]) # canvas width + + o16(im.size[1]), # canvas height + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + # Global Color Table + _get_header_palette(palette_bytes), + ] + if info.get("loop") is not None: + header.append( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(info["loop"]) # number of loops + + o8(0) + ) + if info.get("comment"): + comment_block = b"!" + o8(254) # extension intro + + comment = info["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + comment_block += o8(len(subblock)) + subblock + + comment_block += o8(0) + header.append(comment_block) + return header + + +def _write_frame_data( + fp: IO[bytes], + im_frame: Image.Image, + offset: tuple[int, int], + params: dict[str, Any], +) -> None: + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, + fp, + [ImageFile._Tile("gif", (0, 0) + im_frame.size, 0, RAWMODE[im_frame.mode])], + ) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader( + im: Image.Image, palette: _Palette | None = None, info: dict[str, Any] | None = None +) -> tuple[list[bytes], list[int] | None]: + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + if info is None: + info = {} + + used_palette_colors = _get_optimize(im, info) + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +def getdata( + im: Image.Image, offset: tuple[int, int] = (0, 0), **params: Any +) -> list[bytes]: + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + To specify duration, add the time in milliseconds, + e.g. ``getdata(im_frame, duration=1000)`` + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0, 0) + :param \\**params: e.g. duration or other encoder info parameters + :returns: List of bytes containing GIF encoded frame data + + """ + from io import BytesIO + + class Collector(BytesIO): + data = [] + + def write(self, data: Buffer) -> int: + self.data.append(data) + return len(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/libs/PIL/GimpGradientFile.py b/libs/PIL/GimpGradientFile.py new file mode 100644 index 0000000..220eac5 --- /dev/null +++ b/libs/PIL/GimpGradientFile.py @@ -0,0 +1,149 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +""" +Stuff to translate curve segments to palette values (derived from +the corresponding code in GIMP, written by Federico Mena Quintero. +See the GIMP distribution for more information.) +""" +from __future__ import annotations + +from math import log, pi, sin, sqrt +from typing import IO, Callable + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle: float, pos: float) -> float: + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle: float, pos: float) -> float: + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle: float, pos: float) -> float: + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle: float, pos: float) -> float: + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle: float, pos: float) -> float: + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] +"""""" # Enable auto-doc for data member + + +class GradientFile: + gradient: ( + list[ + tuple[ + float, + float, + float, + list[float], + list[float], + Callable[[float, float], float], + ] + ] + | None + ) = None + + def getpalette(self, entries: int = 256) -> tuple[bytes, str]: + assert self.gradient is not None + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + x = i / (entries - 1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +class GimpGradientFile(GradientFile): + """File handler for GIMP's gradient format.""" + + def __init__(self, fp: IO[bytes]) -> None: + if fp.readline()[:13] != b"GIMP Gradient": + msg = "not a GIMP gradient file" + raise SyntaxError(msg) + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + self.gradient = [] + + for i in range(count): + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + msg = "cannot handle HSV colour space" + raise OSError(msg) + + self.gradient.append((x0, x1, xm, rgb0, rgb1, segment)) diff --git a/libs/PIL/GimpPaletteFile.py b/libs/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..4cad0eb --- /dev/null +++ b/libs/PIL/GimpPaletteFile.py @@ -0,0 +1,58 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from typing import IO + +from ._binary import o8 + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def __init__(self, fp: IO[bytes]) -> None: + palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + msg = "not a GIMP palette file" + raise SyntaxError(msg) + + for i in range(256): + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(rb"\w+:|#", s): + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + msg = "bad palette entry" + raise ValueError(msg) + + palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(palette) + + def getpalette(self) -> tuple[bytes, str]: + return self.palette, self.rawmode diff --git a/libs/PIL/GribStubImagePlugin.py b/libs/PIL/GribStubImagePlugin.py new file mode 100644 index 0000000..e9aa084 --- /dev/null +++ b/libs/PIL/GribStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"GRIB" and prefix[7] == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + format = "GRIB" + format_description = "GRIB" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not a GRIB file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "GRIB save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/libs/PIL/Hdf5StubImagePlugin.py b/libs/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..cc9e73d --- /dev/null +++ b/libs/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + format = "HDF5" + format_description = "HDF5" + + def _open(self) -> None: + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not an HDF file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self._mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "HDF5 save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/libs/PIL/IcnsImagePlugin.py b/libs/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..9757b2b --- /dev/null +++ b/libs/PIL/IcnsImagePlugin.py @@ -0,0 +1,412 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# 2020-04-04 Allow saving on all operating systems. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# Copyright (c) 2020 by Pan Jing. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +import sys +from typing import IO + +from . import Image, ImageFile, PngImagePlugin, features +from ._deprecate import deprecate + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from . import Jpeg2KImagePlugin + +MAGIC = b"icns" +HEADERSIZE = 8 + + +def nextheader(fobj: IO[bytes]) -> tuple[bytes, int]: + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b"\x00\x00\x00\x00": + msg = "Unknown signature, expecting 0x00000000" + raise SyntaxError(msg) + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte_int = byte[0] + if byte_int & 0x80: + blocksize = byte_int - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte_int + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + msg = f"Error reading channel [{repr(bytesleft)} left]" + raise SyntaxError(msg) + band = Image.frombuffer("L", pixel_size, b"".join(data), "raw", "L", 0, 1) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer("L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1) + return {"A": band} + + +def read_png_or_jpeg2000( + fobj: IO[bytes], start_length: tuple[int, int], size: tuple[int, int, int] +) -> dict[str, Image.Image]: + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + + im: Image.Image + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + Image._decompression_bomb_check(im.size) + return {"RGBA": im} + elif ( + sig[:4] == b"\xff\x4f\xff\x51" + or sig[:4] == b"\x0d\x0a\x87\x0a" + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + msg = ( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + raise ValueError(msg) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + Image._decompression_bomb_check(im.size) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + msg = "Unsupported icon subimage format" + raise ValueError(msg) + + +class IcnsFile: + SIZES = { + (512, 512, 2): [(b"ic10", read_png_or_jpeg2000)], + (512, 512, 1): [(b"ic09", read_png_or_jpeg2000)], + (256, 256, 2): [(b"ic14", read_png_or_jpeg2000)], + (256, 256, 1): [(b"ic08", read_png_or_jpeg2000)], + (128, 128, 2): [(b"ic13", read_png_or_jpeg2000)], + (128, 128, 1): [ + (b"ic07", read_png_or_jpeg2000), + (b"it32", read_32t), + (b"t8mk", read_mk), + ], + (64, 64, 1): [(b"icp6", read_png_or_jpeg2000)], + (32, 32, 2): [(b"ic12", read_png_or_jpeg2000)], + (48, 48, 1): [(b"ih32", read_32), (b"h8mk", read_mk)], + (32, 32, 1): [ + (b"icp5", read_png_or_jpeg2000), + (b"il32", read_32), + (b"l8mk", read_mk), + ], + (16, 16, 2): [(b"ic11", read_png_or_jpeg2000)], + (16, 16, 1): [ + (b"icp4", read_png_or_jpeg2000), + (b"is32", read_32), + (b"s8mk", read_mk), + ], + } + + def __init__(self, fobj: IO[bytes]) -> None: + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if not _accept(sig): + msg = "not an icns file" + raise SyntaxError(msg) + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + msg = "invalid block header" + raise SyntaxError(msg) + i += HEADERSIZE + blocksize -= HEADERSIZE + self.dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self) -> list[tuple[int, int, int]]: + sizes = [] + for size, fmts in self.SIZES.items(): + for fmt, reader in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self) -> tuple[int, int, int]: + sizes = self.itersizes() + if not sizes: + msg = "No 32bit icon resources found" + raise SyntaxError(msg) + return max(sizes) + + def dataforsize(self, size: tuple[int, int, int]) -> dict[str, Image.Image]: + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage( + self, size: tuple[int, int] | tuple[int, int, int] | None = None + ) -> Image.Image: + if size is None: + size = self.bestsize() + elif len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA") + if im: + return im + + im = channels["RGB"].copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self) -> None: + self.icns = IcnsFile(self.fp) + self._mode = "RGBA" + self.info["sizes"] = self.icns.itersizes() + self.best_size = self.icns.bestsize() + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + @property # type: ignore[override] + def size(self) -> tuple[int, int] | tuple[int, int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int] | tuple[int, int, int]) -> None: + if len(value) == 3: + deprecate("Setting size to (width, height, scale)", 12, "load(scale)") + if value in self.info["sizes"]: + self._size = value # type: ignore[assignment] + return + else: + # Check that a matching size exists, + # or that there is a scale that would create a size that matches + for size in self.info["sizes"]: + simple_size = size[0] * size[2], size[1] * size[2] + scale = simple_size[0] // value[0] + if simple_size[1] / value[1] == scale: + self._size = value + return + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + + def load(self, scale: int | None = None) -> Image.core.PixelAccess | None: + if scale is not None or len(self.size) == 3: + if scale is None and len(self.size) == 3: + scale = self.size[2] + assert scale is not None + width, height = self.size[:2] + self.size = width * scale, height * scale + self.best_size = width, height, scale + + px = Image.Image.load(self) + if self._im is not None and self.im.size == self.size: + # Already loaded + return px + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + px = im.load() + + self.im = im.im + self._mode = im.mode + self.size = im.size + + return px + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + """ + Saves the image as a series of PNG files, + that are then combined into a .icns file. + """ + if hasattr(fp, "flush"): + fp.flush() + + sizes = { + b"ic07": 128, + b"ic08": 256, + b"ic09": 512, + b"ic10": 1024, + b"ic11": 32, + b"ic12": 64, + b"ic13": 256, + b"ic14": 512, + } + provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])} + size_streams = {} + for size in set(sizes.values()): + image = ( + provided_images[size] + if size in provided_images + else im.resize((size, size)) + ) + + temp = io.BytesIO() + image.save(temp, "png") + size_streams[size] = temp.getvalue() + + entries = [] + for type, size in sizes.items(): + stream = size_streams[size] + entries.append((type, HEADERSIZE + len(stream), stream)) + + # Header + fp.write(MAGIC) + file_length = HEADERSIZE # Header + file_length += HEADERSIZE + 8 * len(entries) # TOC + file_length += sum(entry[1] for entry in entries) + fp.write(struct.pack(">i", file_length)) + + # TOC + fp.write(b"TOC ") + fp.write(struct.pack(">i", HEADERSIZE + len(entries) * HEADERSIZE)) + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + + # Data + for entry in entries: + fp.write(entry[0]) + fp.write(struct.pack(">i", entry[1])) + fp.write(entry[2]) + + if hasattr(fp, "flush"): + fp.flush() + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == MAGIC + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, _accept) +Image.register_extension(IcnsImageFile.format, ".icns") + +Image.register_save(IcnsImageFile.format, _save) +Image.register_mime(IcnsImageFile.format, "image/icns") + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + width, height, scale = imf.size = size + imf.save(f"out-{width}-{height}-{scale}.png") + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/libs/PIL/IcoImagePlugin.py b/libs/PIL/IcoImagePlugin.py new file mode 100644 index 0000000..e879f18 --- /dev/null +++ b/libs/PIL/IcoImagePlugin.py @@ -0,0 +1,381 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +# This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis +# . +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx +from __future__ import annotations + +import warnings +from io import BytesIO +from math import ceil, log +from typing import IO, NamedTuple + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o16le as o16 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + fp.write(_MAGIC) # (2+2) + bmp = im.encoderinfo.get("bitmap_format") == "bmp" + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + frames = [] + provided_ims = [im] + im.encoderinfo.get("append_images", []) + width, height = im.size + for size in sorted(set(sizes)): + if size[0] > width or size[1] > height or size[0] > 256 or size[1] > 256: + continue + + for provided_im in provided_ims: + if provided_im.size != size: + continue + frames.append(provided_im) + if bmp: + bits = BmpImagePlugin.SAVE[provided_im.mode][1] + bits_used = [bits] + for other_im in provided_ims: + if other_im.size != size: + continue + bits = BmpImagePlugin.SAVE[other_im.mode][1] + if bits not in bits_used: + # Another image has been supplied for this size + # with a different bit depth + frames.append(other_im) + bits_used.append(bits) + break + else: + # TODO: invent a more convenient method for proportional scalings + frame = provided_im.copy() + frame.thumbnail(size, Image.Resampling.LANCZOS, reducing_gap=None) + frames.append(frame) + fp.write(o16(len(frames))) # idCount(2) + offset = fp.tell() + len(frames) * 16 + for frame in frames: + width, height = frame.size + # 0 means 256 + fp.write(o8(width if width < 256 else 0)) # bWidth(1) + fp.write(o8(height if height < 256 else 0)) # bHeight(1) + + bits, colors = BmpImagePlugin.SAVE[frame.mode][1:] if bmp else (32, 0) + fp.write(o8(colors)) # bColorCount(1) + fp.write(b"\0") # bReserved(1) + fp.write(b"\0\0") # wPlanes(2) + fp.write(o16(bits)) # wBitCount(2) + + image_io = BytesIO() + if bmp: + frame.save(image_io, "dib") + + if bits != 32: + and_mask = Image.new("1", size) + ImageFile._save( + and_mask, + image_io, + [ImageFile._Tile("raw", (0, 0) + size, 0, ("1", 0, -1))], + ) + else: + frame.save(image_io, "png") + image_io.seek(0) + image_bytes = image_io.read() + if bmp: + image_bytes = image_bytes[:8] + o32(height * 2) + image_bytes[12:] + bytes_len = len(image_bytes) + fp.write(o32(bytes_len)) # dwBytesInRes(4) + fp.write(o32(offset)) # dwImageOffset(4) + current = fp.tell() + fp.seek(offset) + fp.write(image_bytes) + offset = offset + bytes_len + fp.seek(current) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == _MAGIC + + +class IconHeader(NamedTuple): + width: int + height: int + nb_color: int + reserved: int + planes: int + bpp: int + size: int + offset: int + dim: tuple[int, int] + square: int + color_depth: int + + +class IcoFile: + def __init__(self, buf: IO[bytes]) -> None: + """ + Parse image from file-like object containing ico file data + """ + + # check magic + s = buf.read(6) + if not _accept(s): + msg = "not an ICO file" + raise SyntaxError(msg) + + self.buf = buf + self.entry = [] + + # Number of items in file + self.nb_items = i16(s, 4) + + # Get headers for each item + for i in range(self.nb_items): + s = buf.read(16) + + # See Wikipedia + width = s[0] or 256 + height = s[1] or 256 + + # No. of colors in image (0 if >=8bpp) + nb_color = s[2] + bpp = i16(s, 6) + icon_header = IconHeader( + width=width, + height=height, + nb_color=nb_color, + reserved=s[3], + planes=i16(s, 4), + bpp=i16(s, 6), + size=i32(s, 8), + offset=i32(s, 12), + dim=(width, height), + square=width * height, + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + color_depth=bpp or (nb_color != 0 and ceil(log(nb_color, 2))) or 256, + ) + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x.color_depth) + # ICO images are usually squares + self.entry = sorted(self.entry, key=lambda x: x.square, reverse=True) + + def sizes(self) -> set[tuple[int, int]]: + """ + Get a set of all available icon sizes and color depths. + """ + return {(h.width, h.height) for h in self.entry} + + def getentryindex(self, size: tuple[int, int], bpp: int | bool = False) -> int: + for i, h in enumerate(self.entry): + if size == h.dim and (bpp is False or bpp == h.color_depth): + return i + return 0 + + def getimage(self, size: tuple[int, int], bpp: int | bool = False) -> Image.Image: + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx: int) -> Image.Image: + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header.offset) + data = self.buf.read(8) + self.buf.seek(header.offset) + + im: Image.Image + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + Image._decompression_bomb_check(im.size) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + Image._decompression_bomb_check(im.size) + + # change tile dimension to only encompass XOR image + im._size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = ImageFile._Tile(d, (0, 0) + im.size, o, a) + + # figure out where AND mask image starts + if header.bpp == 32: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + try: + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + total_bytes = int((w * im.size[1]) / 8) + and_mask_offset = header.offset + header.size - total_bytes + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + try: + mask = Image.frombuffer( + "1", # 1 bpp + im.size, # (w, h) + mask_data, # source chars + "raw", # raw decoder + ("1;I", int(w / 8), -1), # 1bpp inverted, padded, reversed + ) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + mask = None + else: + raise + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + if mask: + im = im.convert("RGBA") + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + When saving, PNG compression is used. Support for this was only added in + Windows Vista. If you are unable to view the icon in Windows, convert the + image to "RGBA" mode before saving. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + + format = "ICO" + format_description = "Windows Icon" + + def _open(self) -> None: + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0].dim + self.load() + + @property + def size(self) -> tuple[int, int]: + return self._size + + @size.setter + def size(self, value: tuple[int, int]) -> None: + if value not in self.info["sizes"]: + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + self._size = value + + def load(self) -> Image.core.PixelAccess | None: + if self._im is not None and self.im.size == self.size: + # Already loaded + return Image.Image.load(self) + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self._mode = im.mode + if im.palette: + self.palette = im.palette + if im.size != self.size: + warnings.warn("Image was not the expected size") + + index = self.ico.getentryindex(self.size) + sizes = list(self.info["sizes"]) + sizes[index] = im.size + self.info["sizes"] = set(sizes) + + self.size = im.size + return None + + def load_seek(self, pos: int) -> None: + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass + + +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/libs/PIL/ImImagePlugin.py b/libs/PIL/ImImagePlugin.py new file mode 100644 index 0000000..b4215a0 --- /dev/null +++ b/libs/PIL/ImImagePlugin.py @@ -0,0 +1,386 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +import re +from typing import IO, Any + +from . import Image, ImageFile, ImagePalette + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { + COMMENT: 0, + DATE: 0, + EQUIPMENT: 0, + FRAMES: 0, + LUT: 0, + NAME: 0, + SCALE: 0, + SIZE: 0, + MODE: 0, +} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "PA image": ("LA", "PA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGB", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN[f"L {i} image"] = ("F", f"F;{i}") + OPEN[f"L*{i} image"] = ("F", f"F;{i}") +for i in ["16", "16L", "16B"]: + OPEN[f"L {i} image"] = (f"I;{i}", f"I;{i}") + OPEN[f"L*{i} image"] = (f"I;{i}", f"I;{i}") +for i in ["32S"]: + OPEN[f"L {i} image"] = ("I", f"I;{i}") + OPEN[f"L*{i} image"] = ("I", f"I;{i}") +for j in range(2, 33): + OPEN[f"L*{j} image"] = ("F", f"F;{j}") + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(rb"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s: Any) -> float: + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + + +class ImImageFile(ImageFile.ImageFile): + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + msg = "not an IM file" + raise SyntaxError(msg) + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b"\0" or s == b"\x1A": + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + msg = "not an IM file" + raise SyntaxError(msg) + + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] == b"\n": + s = s[:-1] + + try: + m = split.match(s) + except re.error as e: + msg = "not an IM file" + raise SyntaxError(msg) from e + + if m: + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode("latin-1", "replace") + v = v.decode("latin-1", "replace") + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + msg = f"Syntax error in IM header: {s.decode('ascii', 'replace')}" + raise SyntaxError(msg) + + if not n: + msg = "Not an IM file" + raise SyntaxError(msg) + + # Basic attributes + self._size = self.info[SIZE] + self._mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[:1] != b"\x1A": + s = self.fp.read(1) + if not s: + msg = "File truncated" + raise SyntaxError(msg) + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i + 256] == palette[i + 512]: + if palette[i] != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = list(palette[:256]) + else: + if self.mode in ["L", "P"]: + self._mode = self.rawmode = "P" + elif self.mode in ["LA", "PA"]: + self._mode = "PA" + self.rawmode = "PA;L" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = list(palette) + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self._fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [ + ImageFile._Tile( + "bit", (0, 0) + self.size, offs, (bits, 8, 3, 0, -1) + ) + ] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ImageFile._Tile("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ImageFile._Tile( + "raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1) + ), + ] + else: + # LabEye/IFUNC files + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + @property + def n_frames(self) -> int: + return self.info[FRAMES] + + @property + def is_animated(self) -> bool: + return self.info[FRAMES] > 1 + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self._fp + + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1)) + ] + + def tell(self) -> int: + return self.frame + + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L"), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as IM" + raise ValueError(msg) from e + + frames = im.encoderinfo.get("frames", 1) + + fp.write(f"Image type: {image_type} image\r\n".encode("ascii")) + if filename: + # Each line must be 100 characters or less, + # or: SyntaxError("not an IM file") + # 8 characters are used for "Name: " and "\r\n" + # Keep just the filename, ditch the potentially overlong path + if isinstance(filename, bytes): + filename = filename.decode("ascii") + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(f"Name: {name}\r\n".encode("ascii")) + fp.write(f"Image size (x*y): {im.size[0]}*{im.size[1]}\r\n".encode("ascii")) + fp.write(f"File size (no of images): {frames}\r\n".encode("ascii")) + if im.mode in ["P", "PA"]: + fp.write(b"Lut: 1\r\n") + fp.write(b"\000" * (511 - fp.tell()) + b"\032") + if im.mode in ["P", "PA"]: + im_palette = im.im.getpalette("RGB", "RGB;L") + colors = len(im_palette) // 3 + palette = b"" + for i in range(3): + palette += im_palette[colors * i : colors * (i + 1)] + palette += b"\x00" * (256 - colors) + fp.write(palette) # 768 bytes + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))] + ) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/libs/PIL/Image.py b/libs/PIL/Image.py new file mode 100644 index 0000000..dff3d06 --- /dev/null +++ b/libs/PIL/Image.py @@ -0,0 +1,4197 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +import abc +import atexit +import builtins +import io +import logging +import math +import os +import re +import struct +import sys +import tempfile +import warnings +from collections.abc import Callable, Iterator, MutableMapping, Sequence +from enum import IntEnum +from types import ModuleType +from typing import ( + IO, + TYPE_CHECKING, + Any, + Literal, + Protocol, + cast, +) + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +from . import ( + ExifTags, + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, +) +from ._binary import i32le, o32be, o32le +from ._deprecate import deprecate +from ._util import DeferredError, is_path + +ElementTree: ModuleType | None +try: + from defusedxml import ElementTree +except ImportError: + ElementTree = None + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +WARN_POSSIBLE_FORMATS: bool = False + +# Limit to around a quarter gigabyte for a 24-bit (3 bpp) image +MAX_IMAGE_PIXELS: int | None = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + + if __version__ != getattr(core, "PILLOW_VERSION", None): + msg = ( + "The _imaging extension was built for another version of Pillow or PIL:\n" + f"Core version: {getattr(core, 'PILLOW_VERSION', None)}\n" + f"Pillow version: {__version__}" + ) + raise ImportError(msg) + +except ImportError as v: + core = DeferredError.new(ImportError("The _imaging C module is not installed.")) + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version of Python.", + RuntimeWarning, + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + + +def isImageType(t: Any) -> TypeGuard[Image]: + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + deprecate("Image.isImageType(im)", 12, "isinstance(im, Image.Image)") + return hasattr(t, "im") + + +# +# Constants + + +# transpose +class Transpose(IntEnum): + FLIP_LEFT_RIGHT = 0 + FLIP_TOP_BOTTOM = 1 + ROTATE_90 = 2 + ROTATE_180 = 3 + ROTATE_270 = 4 + TRANSPOSE = 5 + TRANSVERSE = 6 + + +# transforms (also defined in Imaging.h) +class Transform(IntEnum): + AFFINE = 0 + EXTENT = 1 + PERSPECTIVE = 2 + QUAD = 3 + MESH = 4 + + +# resampling filters (also defined in Imaging.h) +class Resampling(IntEnum): + NEAREST = 0 + BOX = 4 + BILINEAR = 2 + HAMMING = 5 + BICUBIC = 3 + LANCZOS = 1 + + +_filters_support = { + Resampling.BOX: 0.5, + Resampling.BILINEAR: 1.0, + Resampling.HAMMING: 1.0, + Resampling.BICUBIC: 2.0, + Resampling.LANCZOS: 3.0, +} + + +# dithers +class Dither(IntEnum): + NONE = 0 + ORDERED = 1 # Not yet implemented + RASTERIZE = 2 # Not yet implemented + FLOYDSTEINBERG = 3 # default + + +# palettes/quantizers +class Palette(IntEnum): + WEB = 0 + ADAPTIVE = 1 + + +class Quantize(IntEnum): + MEDIANCUT = 0 + MAXCOVERAGE = 1 + FASTOCTREE = 2 + LIBIMAGEQUANT = 3 + + +module = sys.modules[__name__] +for enum in (Transpose, Transform, Resampling, Dither, Palette, Quantize): + for item in enum: + setattr(module, item.name, item.value) + + +if hasattr(core, "DEFAULT_STRATEGY"): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +if TYPE_CHECKING: + import mmap + from xml.etree.ElementTree import Element + + from IPython.lib.pretty import PrettyPrinter + + from . import ImageFile, ImageFilter, ImagePalette, ImageQt, TiffImagePlugin + from ._typing import CapsuleType, NumpyArray, StrOrBytesPath, TypeGuard +ID: list[str] = [] +OPEN: dict[ + str, + tuple[ + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile], + Callable[[bytes], bool | str] | None, + ], +] = {} +MIME: dict[str, str] = {} +SAVE: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +SAVE_ALL: dict[str, Callable[[Image, IO[bytes], str | bytes], None]] = {} +EXTENSION: dict[str, str] = {} +DECODERS: dict[str, type[ImageFile.PyDecoder]] = {} +ENCODERS: dict[str, type[ImageFile.PyEncoder]] = {} + +# -------------------------------------------------------------------- +# Modes + +_ENDIAN = "<" if sys.byteorder == "little" else ">" + + +def _conv_type_shape(im: Image) -> tuple[tuple[int, ...], str]: + m = ImageMode.getmode(im.mode) + shape: tuple[int, ...] = (im.height, im.width) + extra = len(m.bands) + if extra != 1: + shape += (extra,) + return shape, m.typestr + + +MODES = [ + "1", + "CMYK", + "F", + "HSV", + "I", + "I;16", + "I;16B", + "I;16L", + "I;16N", + "L", + "LA", + "La", + "LAB", + "P", + "PA", + "RGB", + "RGBA", + "RGBa", + "RGBX", + "YCbCr", +] + +# raw modes that may be memory mapped. NOTE: if you change this, you +# may have to modify the stride calculation in map.c too! +_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") + + +def getmodebase(mode: str) -> str: + """ + Gets the "base" mode for given mode. This function returns "L" for + images that contain grayscale data, and "RGB" for images that + contain color data. + + :param mode: Input mode. + :returns: "L" or "RGB". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basemode + + +def getmodetype(mode: str) -> str: + """ + Gets the storage type mode. Given a mode, this function returns a + single-layer mode suitable for storing individual bands. + + :param mode: Input mode. + :returns: "L", "I", or "F". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basetype + + +def getmodebandnames(mode: str) -> tuple[str, ...]: + """ + Gets a list of individual band names. Given a mode, this function returns + a tuple containing the names of individual bands (use + :py:method:`~PIL.Image.getmodetype` to get the mode used to store each + individual band. + + :param mode: Input mode. + :returns: A tuple containing band names. The length of the tuple + gives the number of bands in an image of the given mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).bands + + +def getmodebands(mode: str) -> int: + """ + Gets the number of individual bands for this mode. + + :param mode: Input mode. + :returns: The number of bands in this mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return len(ImageMode.getmode(mode).bands) + + +# -------------------------------------------------------------------- +# Helpers + +_initialized = 0 + + +def preinit() -> None: + """ + Explicitly loads BMP, GIF, JPEG, PPM and PPM file format drivers. + + It is called when opening or saving images. + """ + + global _initialized + if _initialized >= 1: + return + + try: + from . import BmpImagePlugin + + assert BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + + assert GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + + assert JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + + assert PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + + assert PngImagePlugin + except ImportError: + pass + + _initialized = 1 + + +def init() -> bool: + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + + It is called when opening or saving images if :py:meth:`~preinit()` is + insufficient, and by :py:meth:`~PIL.features.pilinfo`. + """ + + global _initialized + if _initialized >= 2: + return False + + parent_name = __name__.rpartition(".")[0] + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__(f"{parent_name}.{plugin}", globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return True + return False + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder( + mode: str, decoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingDecoder | ImageFile.PyDecoder: + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + except KeyError: + pass + else: + return decoder(mode, *args + extra) + + try: + # get decoder + decoder = getattr(core, f"{decoder_name}_decoder") + except AttributeError as e: + msg = f"decoder {decoder_name} not available" + raise OSError(msg) from e + return decoder(mode, *args + extra) + + +def _getencoder( + mode: str, encoder_name: str, args: Any, extra: tuple[Any, ...] = () +) -> core.ImagingEncoder | ImageFile.PyEncoder: + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + except KeyError: + pass + else: + return encoder(mode, *args + extra) + + try: + # get encoder + encoder = getattr(core, f"{encoder_name}_encoder") + except AttributeError as e: + msg = f"encoder {encoder_name} not available" + raise OSError(msg) from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +class ImagePointTransform: + """ + Used with :py:meth:`~PIL.Image.Image.point` for single band images with more than + 8 bits, this represents an affine transformation, where the value is multiplied by + ``scale`` and ``offset`` is added. + """ + + def __init__(self, scale: float, offset: float) -> None: + self.scale = scale + self.offset = offset + + def __neg__(self) -> ImagePointTransform: + return ImagePointTransform(-self.scale, -self.offset) + + def __add__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return ImagePointTransform( + self.scale + other.scale, self.offset + other.offset + ) + return ImagePointTransform(self.scale, self.offset + other) + + __radd__ = __add__ + + def __sub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return self + -other + + def __rsub__(self, other: ImagePointTransform | float) -> ImagePointTransform: + return other + -self + + def __mul__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale * other, self.offset * other) + + __rmul__ = __mul__ + + def __truediv__(self, other: ImagePointTransform | float) -> ImagePointTransform: + if isinstance(other, ImagePointTransform): + return NotImplemented + return ImagePointTransform(self.scale / other, self.offset / other) + + +def _getscaleoffset( + expr: Callable[[ImagePointTransform], ImagePointTransform | float] +) -> tuple[float, float]: + a = expr(ImagePointTransform(1, 0)) + return (a.scale, a.offset) if isinstance(a, ImagePointTransform) else (0, a) + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class SupportsGetData(Protocol): + def getdata( + self, + ) -> tuple[Transform, Sequence[int]]: ... + + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format: str | None = None + format_description: str | None = None + _close_exclusive_fp_after_loading = True + + def __init__(self) -> None: + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self._im: core.ImagingCore | DeferredError | None = None + self._mode = "" + self._size = (0, 0) + self.palette: ImagePalette.ImagePalette | None = None + self.info: dict[str | tuple[int, int], Any] = {} + self.readonly = 0 + self._exif: Exif | None = None + + @property + def im(self) -> core.ImagingCore: + if isinstance(self._im, DeferredError): + raise self._im.ex + assert self._im is not None + return self._im + + @im.setter + def im(self, im: core.ImagingCore) -> None: + self._im = im + + @property + def width(self) -> int: + return self.size[0] + + @property + def height(self) -> int: + return self.size[1] + + @property + def size(self) -> tuple[int, int]: + return self._size + + @property + def mode(self) -> str: + return self._mode + + def _new(self, im: core.ImagingCore) -> Image: + new = Image() + new.im = im + new._mode = im.mode + new._size = im.size + if im.mode in ("P", "PA"): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context manager support + def __enter__(self): + return self + + def _close_fp(self): + if getattr(self, "_fp", False): + if self._fp != self.fp: + self._fp.close() + self._fp = DeferredError(ValueError("Operation on closed image")) + if self.fp: + self.fp.close() + + def __exit__(self, *args): + if hasattr(self, "fp"): + if getattr(self, "_exclusive_fp", False): + self._close_fp() + self.fp = None + + def close(self) -> None: + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + if hasattr(self, "fp"): + try: + self._close_fp() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map: mmap.mmap | None = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self._im = DeferredError(ValueError("Operation on closed image")) + + def _copy(self) -> None: + self.load() + self.im = self.im.copy() + self.readonly = 0 + + def _ensure_mutable(self) -> None: + if self.readonly: + self._copy() + else: + self.load() + + def _dump( + self, file: str | None = None, format: str | None = None, **options: Any + ) -> str: + suffix = "" + if format: + suffix = f".{format}" + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, Image) + return ( + self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self) -> str: + return ( + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]} " + f"at 0x{id(self):X}>" + ) + + def _repr_pretty_(self, p: PrettyPrinter, cycle: bool) -> None: + """IPython plain text display support""" + + # Same as __repr__ but without unpredictable id(self), + # to keep Jupyter notebook `text/plain` output stable. + p.text( + f"<{self.__class__.__module__}.{self.__class__.__name__} " + f"image mode={self.mode} size={self.size[0]}x{self.size[1]}>" + ) + + def _repr_image(self, image_format: str, **kwargs: Any) -> bytes | None: + """Helper function for iPython display hook. + + :param image_format: Image format. + :returns: image as bytes, saved into the given format. + """ + b = io.BytesIO() + try: + self.save(b, image_format, **kwargs) + except Exception: + return None + return b.getvalue() + + def _repr_png_(self) -> bytes | None: + """iPython display hook support for PNG format. + + :returns: PNG version of the image as bytes + """ + return self._repr_image("PNG", compress_level=1) + + def _repr_jpeg_(self) -> bytes | None: + """iPython display hook support for JPEG format. + + :returns: JPEG version of the image as bytes + """ + return self._repr_image("JPEG") + + @property + def __array_interface__(self) -> dict[str, str | bytes | int | tuple[int, ...]]: + # numpy array interface support + new: dict[str, str | bytes | int | tuple[int, ...]] = {"version": 3} + if self.mode == "1": + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new["data"] = self.tobytes("raw", "L") + else: + new["data"] = self.tobytes() + new["shape"], new["typestr"] = _conv_type_shape(self) + return new + + def __getstate__(self) -> list[Any]: + im_data = self.tobytes() # load image first + return [self.info, self.mode, self.size, self.getpalette(), im_data] + + def __setstate__(self, state: list[Any]) -> None: + Image.__init__(self) + info, mode, size, palette, data = state[:5] + self.info = info + self._mode = mode + self._size = size + self.im = core.new(mode, size) + if mode in ("L", "LA", "P", "PA") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name: str = "raw", *args: Any) -> bytes: + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + + A list of C encoders can be seen under + codecs section of the function array in + :file:`_imaging.c`. Python encoders are + registered within the relevant plugins. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + + encoder_args: Any = args + if len(encoder_args) == 1 and isinstance(encoder_args[0], tuple): + # may pass tuple instead of argument list + encoder_args = encoder_args[0] + + if encoder_name == "raw" and encoder_args == (): + encoder_args = self.mode + + self.load() + + if self.width == 0 or self.height == 0: + return b"" + + # unpack data + e = _getencoder(self.mode, encoder_name, encoder_args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + output = [] + while True: + bytes_consumed, errcode, data = e.encode(bufsize) + output.append(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} in tobytes" + raise RuntimeError(msg) + + return b"".join(output) + + def tobitmap(self, name: str = "image") -> bytes: + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + msg = "not a bitmap" + raise ValueError(msg) + data = self.tobytes("xbm") + return b"".join( + [ + f"#define {name}_width {self.size[0]}\n".encode("ascii"), + f"#define {name}_height {self.size[1]}\n".encode("ascii"), + f"static char {name}_bits[] = {{\n".encode("ascii"), + data, + b"};", + ] + ) + + def frombytes( + self, + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, + ) -> None: + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + if self.width == 0 or self.height == 0: + return + + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + # default format + if decoder_name == "raw" and decoder_args == (): + decoder_args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, decoder_args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + def load(self) -> core.PixelAccess | None: + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :py:class:`.PixelAccess` + """ + if self._im is not None and self.palette and self.palette.dirty: + # realize palette + mode, arr = self.palette.getdata() + self.im.putpalette(self.palette.mode, mode, arr) + self.palette.dirty = 0 + self.palette.rawmode = None + if "transparency" in self.info and mode in ("LA", "PA"): + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + else: + self.palette.palette = self.im.getpalette( + self.palette.mode, self.palette.mode + ) + + if self._im is not None: + return self.im.pixel_access(self.readonly) + return None + + def verify(self) -> None: + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert( + self, + mode: str | None = None, + matrix: tuple[float, ...] | None = None, + dither: Dither | None = None, + palette: Palette = Palette.WEB, + colors: int = 256, + ) -> Image: + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + This supports all possible conversions between "L", "RGB" and "CMYK". The + ``matrix`` argument only supports "L" and "RGB". + + When translating a color image to grayscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a grayscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is ``None``, all values larger than 127 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a ``matrix`` argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and ``dither`` and ``palette`` are ignored. + + When converting from "PA", if an "RGBA" palette is present, the alpha + channel from the image will be used instead of the values from the palette. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). Note that this is not used when ``matrix`` is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are :data:`Palette.WEB` or + :data:`Palette.ADAPTIVE`. + :param colors: Number of colors to use for the :data:`Palette.ADAPTIVE` + palette. Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + self.load() + + has_transparency = "transparency" in self.info + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if mode == "RGB" and has_transparency: + mode = "RGBA" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + msg = "illegal conversion" + raise ValueError(msg) + im = self.im.convert_matrix(mode, matrix) + new_im = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new_im.info["transparency"] + + def convert_transparency( + m: tuple[float, ...], v: tuple[int, int, int] + ) -> int: + value = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(value))) + + if mode == "L": + transparency = convert_transparency(matrix, transparency) + elif len(mode) == 3: + transparency = tuple( + convert_transparency(matrix[i * 4 : i * 4 + 4], transparency) + for i in range(0, len(transparency)) + ) + new_im.info["transparency"] = transparency + return new_im + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if has_transparency: + if (self.mode in ("1", "L", "I", "I;16") and mode in ("LA", "RGBA")) or ( + self.mode == "RGB" and mode in ("La", "LA", "RGBa", "RGBA") + ): + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new( + self.im.convert_transparent(mode, self.info["transparency"]) + ) + del new_im.info["transparency"] + return new_im + elif self.mode in ("L", "RGB", "P") and mode in ("L", "RGB", "P"): + t = self.info["transparency"] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn( + "Palette images with Transparency expressed in bytes should be " + "converted to RGBA images" + ) + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = new(self.mode, (1, 1)) + if self.mode == "P": + assert self.palette is not None + trns_im.putpalette(self.palette, self.palette.mode) + if isinstance(t, tuple): + err = "Couldn't allocate a palette color for transparency" + assert trns_im.palette is not None + try: + t = trns_im.palette.getcolor(t, self) + except ValueError as e: + if str(e) == "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + t = None + else: + raise ValueError(err) from e + if t is None: + trns = None + else: + trns_im.putpixel((0, 0), t) + + if mode in ("L", "RGB"): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert("RGB") + trns = trns_im.getpixel((0, 0)) + + elif self.mode == "P" and mode in ("LA", "PA", "RGBA"): + t = self.info["transparency"] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + msg = "Transparency for P mode should be bytes or int" + raise ValueError(msg) + + if mode == "P" and palette == Palette.ADAPTIVE: + im = self.im.quantize(colors) + new_im = self._new(im) + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette( + "RGB", new_im.im.getpalette("RGB") + ) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del new_im.info["transparency"] + if trns is not None: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), # trns was converted to RGB + new_im, + ) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new_im + + if "LAB" in (self.mode, mode): + im = self + if mode == "LAB": + if im.mode not in ("RGB", "RGBA", "RGBX"): + im = im.convert("RGBA") + other_mode = im.mode + else: + other_mode = mode + if other_mode in ("RGB", "RGBA", "RGBX"): + from . import ImageCms + + srgb = ImageCms.createProfile("sRGB") + lab = ImageCms.createProfile("LAB") + profiles = [lab, srgb] if im.mode == "LAB" else [srgb, lab] + transform = ImageCms.buildTransform( + profiles[0], profiles[1], im.mode, mode + ) + return transform.apply(im) + + # colorspace conversion + if dither is None: + dither = Dither.FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + modebase = getmodebase(self.mode) + if modebase == self.mode: + raise + im = self.im.convert(modebase) + im = im.convert(mode, dither) + except KeyError as e: + msg = "illegal conversion" + raise ValueError(msg) from e + + new_im = self._new(im) + if mode == "P" and palette != Palette.ADAPTIVE: + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette("RGB", im.getpalette("RGB")) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del new_im.info["transparency"] + if trns is not None: + if new_im.mode == "P" and new_im.palette: + try: + new_im.info["transparency"] = new_im.palette.getcolor( + cast(tuple[int, ...], trns), new_im # trns was converted to RGB + ) + except ValueError as e: + del new_im.info["transparency"] + if str(e) != "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + warnings.warn( + "Couldn't allocate palette entry for transparency" + ) + else: + new_im.info["transparency"] = trns + return new_im + + def quantize( + self, + colors: int = 256, + method: int | None = None, + kmeans: int = 0, + palette: Image | None = None, + dither: Dither = Dither.FLOYDSTEINBERG, + ) -> Image: + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`Quantize.MEDIANCUT` (median cut), + :data:`Quantize.MAXCOVERAGE` (maximum coverage), + :data:`Quantize.FASTOCTREE` (fast octree), + :data:`Quantize.LIBIMAGEQUANT` (libimagequant; check support + using :py:func:`PIL.features.check_feature` with + ``feature="libimagequant"``). + + By default, :data:`Quantize.MEDIANCUT` will be used. + + The exception to this is RGBA images. :data:`Quantize.MEDIANCUT` + and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so + :data:`Quantize.FASTOCTREE` is used by default instead. + :param kmeans: Integer greater than or equal to zero. + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). + :returns: A new image + """ + + self.load() + + if method is None: + # defaults: + method = Quantize.MEDIANCUT + if self.mode == "RGBA": + method = Quantize.FASTOCTREE + + if self.mode == "RGBA" and method not in ( + Quantize.FASTOCTREE, + Quantize.LIBIMAGEQUANT, + ): + # Caller specified an invalid mode. + msg = ( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + raise ValueError(msg) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + msg = "bad mode for palette image" + raise ValueError(msg) + if self.mode not in {"RGB", "L"}: + msg = "only RGB or L mode images can be quantized to a palette" + raise ValueError(msg) + im = self.im.convert("P", dither, palette.im) + new_im = self._new(im) + assert palette.palette is not None + new_im.palette = palette.palette.copy() + return new_im + + if kmeans < 0: + msg = "kmeans must not be negative" + raise ValueError(msg) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + palette_data = im.im.getpalette(mode, mode)[: colors * len(mode)] + im.palette = ImagePalette.ImagePalette(mode, palette_data) + + return im + + def copy(self) -> Image: + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box: tuple[float, float, float, float] | None = None) -> Image: + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + if box[2] < box[0]: + msg = "Coordinate 'right' is less than 'left'" + raise ValueError(msg) + elif box[3] < box[1]: + msg = "Coordinate 'lower' is less than 'upper'" + raise ValueError(msg) + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop( + self, im: core.ImagingCore, box: tuple[float, float, float, float] + ) -> core.ImagingCore: + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + absolute_values = (abs(x1 - x0), abs(y1 - y0)) + + _decompression_bomb_check(absolute_values) + + return im.crop((x0, y0, x1, y1)) + + def draft( + self, mode: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to grayscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + """ + pass + + def _expand(self, xmargin: int, ymargin: int | None = None) -> Image: + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin)) + + def filter(self, filter: ImageFilter.Filter | type[ImageFilter.Filter]) -> Image: + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object.""" + + from . import ImageFilter + + self.load() + + if callable(filter): + filter = filter() + if not hasattr(filter, "filter"): + msg = "filter argument should be ImageFilter.Filter instance or class" + raise TypeError(msg) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [ + self._new(filter.filter(self.im.getband(c))) for c in range(self.im.bands) + ] + return merge(self.mode, ims) + + def getbands(self) -> tuple[str, ...]: + """ + Returns a tuple containing the name of each band in this image. + For example, ``getbands`` on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self, *, alpha_only: bool = True) -> tuple[int, int, int, int] | None: + """ + Calculates the bounding box of the non-zero regions in the + image. + + :param alpha_only: Optional flag, defaulting to ``True``. + If ``True`` and the image has an alpha channel, trim transparent pixels. + Otherwise, trim pixels when all channels are zero. + Keyword-only argument. + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox(alpha_only) + + def getcolors( + self, maxcolors: int = 256 + ) -> list[tuple[int, tuple[int, ...]]] | list[tuple[int, float]] | None: + """ + Returns a list of colors used in this image. + + The colors will be in the image's mode. For example, an RGB image will + return a tuple of (red, green, blue) color values, and a P image will + return the index of the color in the palette. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out: list[tuple[int, float]] = [(h[i], i) for i in range(256) if h[i]] + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band: int | None = None) -> core.ImagingCore: + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use ``list(im.getdata())``. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self) -> tuple[float, float] | tuple[tuple[int, int], ...]: + """ + Gets the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + return tuple(self.im.getband(i).getextrema() for i in range(self.im.bands)) + return self.im.getextrema() + + def getxmp(self) -> dict[str, Any]: + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + + def get_name(tag: str) -> str: + return re.sub("^{[^}]+}", "", tag) + + def get_value(element: Element) -> str | dict[str, Any] | None: + value: dict[str, Any] = {get_name(k): v for k, v in element.attrib.items()} + children = list(element) + if children: + for child in children: + name = get_name(child.tag) + child_value = get_value(child) + if name in value: + if not isinstance(value[name], list): + value[name] = [value[name]] + value[name].append(child_value) + else: + value[name] = child_value + elif value: + if element.text: + value["text"] = element.text + else: + return element.text + return value + + if ElementTree is None: + warnings.warn("XMP data cannot be read without defusedxml dependency") + return {} + if "xmp" not in self.info: + return {} + root = ElementTree.fromstring(self.info["xmp"].rstrip(b"\x00")) + return {get_name(root.tag): get_value(root)} + + def getexif(self) -> Exif: + """ + Gets EXIF data from the image. + + :returns: an :py:class:`~PIL.Image.Exif` object. + """ + if self._exif is None: + self._exif = Exif() + elif self._exif._loaded: + return self._exif + self._exif._loaded = True + + exif_info = self.info.get("exif") + if exif_info is None: + if "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + elif hasattr(self, "tag_v2"): + self._exif.bigtiff = self.tag_v2._bigtiff + self._exif.endian = self.tag_v2._endian + self._exif.load_from_fp(self.fp, self.tag_v2._offset) + if exif_info is not None: + self._exif.load(exif_info) + + # XMP tags + if ExifTags.Base.Orientation not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + if xmp_tags: + match = re.search(r'tiff:Orientation(="|>)([0-9])', xmp_tags) + if match: + self._exif[ExifTags.Base.Orientation] = int(match[2]) + + return self._exif + + def _reload_exif(self) -> None: + if self._exif is None or not self._exif._loaded: + return + self._exif._loaded = False + self.getexif() + + def get_child_images(self) -> list[ImageFile.ImageFile]: + child_images = [] + exif = self.getexif() + ifds = [] + if ExifTags.Base.SubIFDs in exif: + subifd_offsets = exif[ExifTags.Base.SubIFDs] + if subifd_offsets: + if not isinstance(subifd_offsets, tuple): + subifd_offsets = (subifd_offsets,) + for subifd_offset in subifd_offsets: + ifds.append((exif._get_ifd_dict(subifd_offset), subifd_offset)) + ifd1 = exif.get_ifd(ExifTags.IFD.IFD1) + if ifd1 and ifd1.get(ExifTags.Base.JpegIFOffset): + assert exif._info is not None + ifds.append((ifd1, exif._info.next)) + + offset = None + for ifd, ifd_offset in ifds: + current_offset = self.fp.tell() + if offset is None: + offset = current_offset + + fp = self.fp + if ifd is not None: + thumbnail_offset = ifd.get(ExifTags.Base.JpegIFOffset) + if thumbnail_offset is not None: + thumbnail_offset += getattr(self, "_exif_offset", 0) + self.fp.seek(thumbnail_offset) + data = self.fp.read(ifd.get(ExifTags.Base.JpegIFByteCount)) + fp = io.BytesIO(data) + + with open(fp) as im: + from . import TiffImagePlugin + + if thumbnail_offset is None and isinstance( + im, TiffImagePlugin.TiffImageFile + ): + im._frame_pos = [ifd_offset] + im._seek(0) + im.load() + child_images.append(im) + + if offset is not None: + self.fp.seek(offset) + return child_images + + def getim(self) -> CapsuleType: + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None: + """ + Returns the image palette as a list. + + :param rawmode: The mode in which to return the palette. ``None`` will + return the palette in its current mode. + + .. versionadded:: 9.1.0 + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + mode = self.im.getpalettemode() + except ValueError: + return None # no palette + if rawmode is None: + rawmode = mode + return list(self.im.getpalette(mode, rawmode)) + + @property + def has_transparency_data(self) -> bool: + """ + Determine if an image has transparency data, whether in the form of an + alpha channel, a palette with an alpha channel, or a "transparency" key + in the info dictionary. + + Note the image might still appear solid, if all of the values shown + within are opaque. + + :returns: A boolean. + """ + if ( + self.mode in ("LA", "La", "PA", "RGBA", "RGBa") + or "transparency" in self.info + ): + return True + if self.mode == "P": + assert self.palette is not None + return self.palette.mode.endswith("A") + return False + + def apply_transparency(self) -> None: + """ + If a P mode image has a "transparency" key in the info dictionary, + remove the key and instead apply the transparency to the palette. + Otherwise, the image is unchanged. + """ + if self.mode != "P" or "transparency" not in self.info: + return + + from . import ImagePalette + + palette = self.getpalette("RGBA") + assert palette is not None + transparency = self.info["transparency"] + if isinstance(transparency, bytes): + for i, alpha in enumerate(transparency): + palette[i * 4 + 3] = alpha + else: + palette[transparency * 4 + 3] = 0 + self.palette = ImagePalette.ImagePalette("RGBA", bytes(palette)) + self.palette.dirty = 1 + + del self.info["transparency"] + + def getpixel( + self, xy: tuple[int, int] | list[int] + ) -> float | tuple[int, ...] | None: + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + return self.im.getpixel(tuple(xy)) + + def getprojection(self) -> tuple[list[int], list[int]]: + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return list(x), list(y) + + def histogram( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> list[int]: + """ + Returns a histogram for the image. The histogram is returned as a + list of pixel counts, one for each pixel value in the source + image. Counts are grouped into 256 bins for each band, even if + the image has more than 8 bits per band. If the image has more + than one band, the histograms for all bands are concatenated (for + example, the histogram for an "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a grayscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + return self.im.histogram( + extrema if extrema is not None else self.getextrema() + ) + return self.im.histogram() + + def entropy( + self, mask: Image | None = None, extrema: tuple[float, float] | None = None + ) -> float: + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a grayscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + self.load() + if mask: + mask.load() + return self.im.entropy((0, 0), mask.im) + if self.mode in ("I", "F"): + return self.im.entropy( + extrema if extrema is not None else self.getextrema() + ) + return self.im.entropy() + + def paste( + self, + im: Image | str | float | tuple[float, ...], + box: Image | tuple[int, int, int, int] | tuple[int, int] | None = None, + mask: Image | None = None, + ) -> None: + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L", "LA", "RGBA" + or "RGBa" images (if present, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer, float or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isinstance(box, Image): + if mask is not None: + msg = "If using second argument as mask, third argument must be None" + raise ValueError(msg) + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isinstance(im, Image): + size = im.size + elif isinstance(mask, Image): + size = mask.size + else: + # FIXME: use self.size here? + msg = "cannot determine region size; use 4-item box" + raise ValueError(msg) + box += (box[0] + size[0], box[1] + size[1]) + + source: core.ImagingCore | str | float | tuple[float, ...] + if isinstance(im, str): + from . import ImageColor + + source = ImageColor.getcolor(im, self.mode) + elif isinstance(im, Image): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("LA", "RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + source = im.im + else: + source = im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(source, box, mask.im) + else: + self.im.paste(source, box) + + def alpha_composite( + self, im: Image, dest: Sequence[int] = (0, 0), source: Sequence[int] = (0, 0) + ) -> None: + """'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + msg = "Source must be a list or tuple" + raise ValueError(msg) + if not isinstance(dest, (list, tuple)): + msg = "Destination must be a list or tuple" + raise ValueError(msg) + + if len(source) == 4: + overlay_crop_box = tuple(source) + elif len(source) == 2: + overlay_crop_box = tuple(source) + im.size + else: + msg = "Source must be a sequence of length 2 or 4" + raise ValueError(msg) + + if not len(dest) == 2: + msg = "Destination must be a sequence of length 2" + raise ValueError(msg) + if min(source) < 0: + msg = "Source must be non-negative" + raise ValueError(msg) + + # over image, crop if it's not the whole image. + if overlay_crop_box == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(overlay_crop_box) + + # target for the paste + box = tuple(dest) + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point( + self, + lut: ( + Sequence[float] + | NumpyArray + | Callable[[int], float] + | Callable[[ImagePointTransform], ImagePointTransform | float] + | ImagePointHandler + ), + mode: str | None = None, + ) -> Image: + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + + It may also be an :py:class:`~PIL.Image.ImagePointHandler` + object:: + + class Example(Image.ImagePointHandler): + def point(self, im: Image) -> Image: + # Return result + :param mode: Output mode (default is same as input). This can only be used if + the source image has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) # type: ignore[arg-type] + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + flatLut = [lut(i) for i in range(256)] * self.im.bands # type: ignore[arg-type] + else: + flatLut = lut + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + msg = "point operation not supported for this mode" + raise ValueError(msg) + + if mode != "F": + flatLut = [round(i) for i in flatLut] + return self._new(self.im.point(flatLut, mode)) + + def putalpha(self, alpha: Image | int) -> None: + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "PA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError) as e: + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "PA", "RGBA"): + msg = "alpha channel could not be added" + raise ValueError(msg) from e # sanity check + self.im = im + self._mode = self.im.mode + except KeyError as e: + msg = "illegal image mode" + raise ValueError(msg) from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isinstance(alpha, Image): + # alpha layer + if alpha.mode not in ("1", "L"): + msg = "illegal image mode" + raise ValueError(msg) + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata( + self, + data: Sequence[float] | Sequence[Sequence[int]] | core.ImagingCore | NumpyArray, + scale: float = 1.0, + offset: float = 0.0, + ) -> None: + """ + Copies pixel data from a flattened sequence object into the image. The + values should start at the upper left corner (0, 0), continue to the + end of the line, followed directly by the first value of the second + line, and so on. Data will be read until either the image or the + sequence ends. The scale and offset values are used to adjust the + sequence values: **pixel = value*scale + offset**. + + :param data: A flattened sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette( + self, + data: ImagePalette.ImagePalette | bytes | Sequence[int], + rawmode: str = "RGB", + ) -> None: + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain at most 256 colors, made up of one + integer value for each channel in the raw mode. + For example, if the raw mode is "RGB", then it can contain at most 768 + values, made up of red, green and blue values for the corresponding pixel + index in the 256 colors. + If the raw mode is "RGBA", then it can contain at most 1024 values, + containing red, green, blue and alpha values. + + Alternatively, an 8-bit string may be used instead of an integer sequence. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. Either "RGB", "RGBA", or a mode + that can be transformed to "RGB" or "RGBA" (e.g. "R", "BGR;15", "RGBA;L"). + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + msg = "illegal image mode" + raise ValueError(msg) + if isinstance(data, ImagePalette.ImagePalette): + if data.rawmode is not None: + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + palette = ImagePalette.ImagePalette(palette=data.palette) + palette.dirty = 1 + else: + if not isinstance(data, bytes): + data = bytes(data) + palette = ImagePalette.raw(rawmode, data) + self._mode = "PA" if "A" in self.mode else "P" + self.palette = palette + self.palette.mode = "RGBA" if "A" in rawmode else "RGB" + self.load() # install new palette + + def putpixel( + self, xy: tuple[int, int], value: float | tuple[int, ...] | list[int] + ) -> None: + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P and PA images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if ( + self.mode in ("P", "PA") + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P or PA image + if self.mode == "PA": + alpha = value[3] if len(value) == 4 else 255 + value = value[:3] + assert self.palette is not None + palette_index = self.palette.getcolor(tuple(value), self) + value = (palette_index, alpha) if self.mode == "PA" else palette_index + return self.im.putpixel(xy, value) + + def remap_palette( + self, dest_map: list[int], source_palette: bytes | bytearray | None = None + ) -> Image: + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. ``[1,0]`` would swap a two item palette, and ``list(range(256))`` + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + msg = "illegal image mode" + raise ValueError(msg) + + bands = 3 + palette_mode = "RGB" + if source_palette is None: + if self.mode == "P": + self.load() + palette_mode = self.im.getpalettemode() + if palette_mode == "RGBA": + bands = 4 + source_palette = self.im.getpalette(palette_mode, palette_mode) + else: # L-mode + source_palette = bytearray(i // 3 for i in range(768)) + elif len(source_palette) > 768: + bands = 4 + palette_mode = "RGBA" + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += source_palette[ + oldPosition * bands : oldPosition * bands + bands + ] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im._mode = "P" + + m_im.palette = ImagePalette.ImagePalette( + palette_mode, palette=mapping_palette * bands + ) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(palette_mode, palette_mode + ";L", m_im.palette.tobytes()) + + m_im = m_im.convert("L") + + m_im.putpalette(palette_bytes, palette_mode) + m_im.palette = ImagePalette.ImagePalette(palette_mode, palette=palette_bytes) + + if "transparency" in self.info: + try: + m_im.info["transparency"] = dest_map.index(self.info["transparency"]) + except ValueError: + if "transparency" in m_im.info: + del m_im.info["transparency"] + + return m_im + + def _get_safe_box( + self, + size: tuple[int, int], + resample: Resampling, + box: tuple[float, float, float, float], + ) -> tuple[int, int, int, int]: + """Expands the box so it includes adjacent pixels + that may be used by resampling with the given resampling filter. + """ + filter_support = _filters_support[resample] - 0.5 + scale_x = (box[2] - box[0]) / size[0] + scale_y = (box[3] - box[1]) / size[1] + support_x = filter_support * scale_x + support_y = filter_support * scale_y + + return ( + max(0, int(box[0] - support_x)), + max(0, int(box[1] - support_y)), + min(self.size[0], math.ceil(box[2] + support_x)), + min(self.size[1], math.ceil(box[3] + support_y)), + ) + + def resize( + self, + size: tuple[int, int] | list[int] | NumpyArray, + resample: int | None = None, + box: tuple[float, float, float, float] | None = None, + reducing_gap: float | None = None, + ) -> Image: + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a tuple or array: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If the image has mode "1" or "P", it is always set to + :py:data:`Resampling.NEAREST`. If the image mode is "BGR;15", + "BGR;16" or "BGR;24", then the default filter is + :py:data:`Resampling.NEAREST`. Otherwise, the default filter is + :py:data:`Resampling.BICUBIC`. See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample is None: + bgr = self.mode.startswith("BGR;") + resample = Resampling.NEAREST if bgr else Resampling.BICUBIC + elif resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + Resampling.LANCZOS, + Resampling.BOX, + Resampling.HAMMING, + ): + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.LANCZOS, "Image.Resampling.LANCZOS"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + (Resampling.BOX, "Image.Resampling.BOX"), + (Resampling.HAMMING, "Image.Resampling.HAMMING"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + if reducing_gap is not None and reducing_gap < 1.0: + msg = "reducing_gap must be 1.0 or greater" + raise ValueError(msg) + + if box is None: + box = (0, 0) + self.size + + size = tuple(size) + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = Resampling.NEAREST + + if self.mode in ["LA", "RGBA"] and resample != Resampling.NEAREST: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != Resampling.NEAREST: + factor_x = int((box[2] - box[0]) / size[0] / reducing_gap) or 1 + factor_y = int((box[3] - box[1]) / size[1] / reducing_gap) or 1 + if factor_x > 1 or factor_y > 1: + reduce_box = self._get_safe_box(size, cast(Resampling, resample), box) + factor = (factor_x, factor_y) + self = ( + self.reduce(factor, box=reduce_box) + if callable(self.reduce) + else Image.reduce(self, factor, box=reduce_box) + ) + box = ( + (box[0] - reduce_box[0]) / factor_x, + (box[1] - reduce_box[1]) / factor_y, + (box[2] - reduce_box[0]) / factor_x, + (box[3] - reduce_box[1]) / factor_y, + ) + + return self._new(self.im.resize(size, resample, box)) + + def reduce( + self, + factor: int | tuple[int, int], + box: tuple[int, int, int, int] | None = None, + ) -> Image: + """ + Returns a copy of the image reduced ``factor`` times. + If the size of the image is not dividable by ``factor``, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within ``(0, 0, width, height)`` rectangle. + If omitted or ``None``, the entire source is used. + """ + if not isinstance(factor, (list, tuple)): + factor = (factor, factor) + + if box is None: + box = (0, 0) + self.size + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle: float, + resample: Resampling = Resampling.NEAREST, + expand: int | bool = False, + center: tuple[float, float] | None = None, + translate: tuple[int, int] | None = None, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image has + mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(Transpose.ROTATE_180) + if angle in (90, 270) and (expand or self.width == self.height): + return self.transpose( + Transpose.ROTATE_90 if angle == 90 else Transpose.ROTATE_270 + ) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + center = (w / 2, h / 2) + + angle = -math.radians(angle) + matrix = [ + round(math.cos(angle), 15), + round(math.sin(angle), 15), + 0.0, + round(-math.sin(angle), 15), + round(math.cos(angle), 15), + 0.0, + ] + + def transform(x: float, y: float, matrix: list[float]) -> tuple[float, float]: + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -center[0] - post_trans[0], -center[1] - post_trans[1], matrix + ) + matrix[2] += center[0] + matrix[5] += center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + transformed_x, transformed_y = transform(x, y, matrix) + xx.append(transformed_x) + yy.append(transformed_y) + nw = math.ceil(max(xx)) - math.floor(min(xx)) + nh = math.ceil(max(yy)) - math.floor(min(yy)) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, -(nh - h) / 2.0, matrix) + w, h = nw, nh + + return self.transform( + (w, h), Transform.AFFINE, matrix, resample, fillcolor=fillcolor + ) + + def save( + self, fp: StrOrBytesPath | IO[bytes], format: str | None = None, **params: Any + ) -> None: + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), os.PathLike object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception OSError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename: str | bytes = "" + open_fp = False + if is_path(fp): + filename = os.fspath(fp) + open_fp = True + elif fp == sys.stdout: + try: + fp = sys.stdout.buffer + except AttributeError: + pass + if not filename and hasattr(fp, "name") and is_path(fp.name): + # only set the name for metadata purposes + filename = os.fspath(fp.name) + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = {**getattr(self, "encoderinfo", {}), **params} + self.encoderconfig: tuple[Any, ...] = () + + preinit() + + filename_ext = os.path.splitext(filename)[1].lower() + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + msg = f"unknown file extension: {ext}" + raise ValueError(msg) from e + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + created = False + if open_fp: + created = not os.path.exists(filename) + if params.get("append", False): + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "r+b") + else: + fp = builtins.open(filename, "w+b") + else: + fp = cast(IO[bytes], fp) + + try: + save_handler(self, fp, filename) + except Exception: + if open_fp: + fp.close() + if created: + try: + os.remove(filename) + except PermissionError: + pass + raise + finally: + try: + del self.encoderinfo + except AttributeError: + pass + if open_fp: + fp.close() + + def seek(self, frame: int) -> None: + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + ``EOFError`` exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + msg = "no more images in file" + raise EOFError(msg) + + def show(self, title: str | None = None) -> None: + """ + Displays this image. This method is mainly intended for debugging purposes. + + This method calls :py:func:`PIL.ImageShow.show` internally. You can use + :py:func:`PIL.ImageShow.register` to override its default behaviour. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **xdg-open**, **display**, + **gm**, **eog** or **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, where possible. + """ + + _show(self, title=title) + + def split(self) -> tuple[Image, ...]: + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + return (self.copy(),) + return tuple(map(self._new, self.im.split())) + + def getchannel(self, channel: int | str) -> Image: + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isinstance(channel, str): + try: + channel = self.getbands().index(channel) + except ValueError as e: + msg = f'The image has no channel "{channel}"' + raise ValueError(msg) from e + + return self._new(self.im.getband(channel)) + + def tell(self) -> int: + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail( + self, + size: tuple[float, float], + resample: Resampling = Resampling.BICUBIC, + reducing_gap: float | None = 2.0, + ) -> None: + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: Optional resampling filter. This can be one + of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If omitted, it defaults to :py:data:`Resampling.BICUBIC`. + (was :py:data:`Resampling.NEAREST` prior to version 2.5.0). + See: :ref:`concept-filters`. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + + provided_size = tuple(map(math.floor, size)) + + def preserve_aspect_ratio() -> tuple[int, int] | None: + def round_aspect(number: float, key: Callable[[int], float]) -> int: + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + x, y = provided_size + if x >= self.width and y >= self.height: + return None + + aspect = self.width / self.height + if x / y >= aspect: + x = round_aspect(y * aspect, key=lambda n: abs(aspect - n / y)) + else: + y = round_aspect( + x / aspect, key=lambda n: 0 if n == 0 else abs(aspect - x / n) + ) + return x, y + + preserved_size = preserve_aspect_ratio() + if preserved_size is None: + return + final_size = preserved_size + + box = None + if reducing_gap is not None: + res = self.draft( + None, (int(size[0] * reducing_gap), int(size[1] * reducing_gap)) + ) + if res is not None: + box = res[1] + + if self.size != final_size: + im = self.resize(final_size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = final_size + self._mode = self.im.mode + + self.readonly = 0 + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, + size: tuple[int, int], + method: Transform | ImageTransformHandler | SupportsGetData, + data: Sequence[Any] | None = None, + resample: int = Resampling.NEAREST, + fill: int = 1, + fillcolor: float | tuple[float, ...] | str | None = None, + ) -> Image: + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size in pixels, as a 2-tuple: + (width, height). + :param method: The transformation method. This is one of + :py:data:`Transform.EXTENT` (cut out a rectangular subregion), + :py:data:`Transform.AFFINE` (affine transform), + :py:data:`Transform.PERSPECTIVE` (perspective transform), + :py:data:`Transform.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`Transform.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(self, size, data, resample, fill=1): + # Return result + + Implementations of :py:class:`~PIL.Image.ImageTransformHandler` + for some of the :py:class:`Transform` methods are provided + in :py:mod:`~PIL.ImageTransform`. + + It may also be an object with a ``method.getdata`` method + that returns a tuple supplying new ``method`` and ``data`` values:: + + class Example: + def getdata(self): + method = Image.Transform.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See: :ref:`concept-filters`. + :param fill: If ``method`` is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode in ("LA", "RGBA") and resample != Resampling.NEAREST: + return ( + self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + .transform(size, method, data, resample, fill, fillcolor) + .convert(self.mode) + ) + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + msg = "missing method data" + raise ValueError(msg) + + im = new(self.mode, size, fillcolor) + if self.mode == "P" and self.palette: + im.palette = self.palette.copy() + im.info = self.info.copy() + if method == Transform.MESH: + # list of quads + for box, quad in data: + im.__transformer( + box, self, Transform.QUAD, quad, resample, fillcolor is None + ) + else: + im.__transformer( + (0, 0) + size, self, method, data, resample, fillcolor is None + ) + + return im + + def __transformer( + self, + box: tuple[int, int, int, int], + image: Image, + method: Transform, + data: Sequence[float], + resample: int = Resampling.NEAREST, + fill: bool = True, + ) -> None: + w = box[2] - box[0] + h = box[3] - box[1] + + if method == Transform.AFFINE: + data = data[:6] + + elif method == Transform.EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = Transform.AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == Transform.PERSPECTIVE: + data = data[:8] + + elif method == Transform.QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = ( + x0, + (ne[0] - x0) * As, + (sw[0] - x0) * At, + (se[0] - sw[0] - ne[0] + x0) * As * At, + y0, + (ne[1] - y0) * As, + (sw[1] - y0) * At, + (se[1] - sw[1] - ne[1] + y0) * As * At, + ) + + else: + msg = "unknown transformation method" + raise ValueError(msg) + + if resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + ): + if resample in (Resampling.BOX, Resampling.HAMMING, Resampling.LANCZOS): + unusable: dict[int, str] = { + Resampling.BOX: "Image.Resampling.BOX", + Resampling.HAMMING: "Image.Resampling.HAMMING", + Resampling.LANCZOS: "Image.Resampling.LANCZOS", + } + msg = unusable[resample] + f" ({resample}) cannot be used." + else: + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + ) + ] + msg += f" Use {', '.join(filters[:-1])} or {filters[-1]}" + raise ValueError(msg) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = Resampling.NEAREST + + self.im.transform(box, image.im, method, data, resample, fill) + + def transpose(self, method: Transpose) -> Image: + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`Transpose.FLIP_LEFT_RIGHT`, + :py:data:`Transpose.FLIP_TOP_BOTTOM`, :py:data:`Transpose.ROTATE_90`, + :py:data:`Transpose.ROTATE_180`, :py:data:`Transpose.ROTATE_270`, + :py:data:`Transpose.TRANSPOSE` or :py:data:`Transpose.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance: int) -> Image: + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self) -> ImageQt.ImageQt: + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqimage(self) + + def toqpixmap(self) -> ImageQt.QPixmap: + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + @abc.abstractmethod + def point(self, im: Image) -> Image: + pass + + +class ImageTransformHandler: + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + @abc.abstractmethod + def transform( + self, + size: tuple[int, int], + image: Image, + **options: Any, + ) -> Image: + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge() -> Image: + """Create grayscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size: Any) -> None: + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: None, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + msg = "Size must be a list or tuple" + raise ValueError(msg) + if len(size) != 2: + msg = "Size must be a sequence of length 2" + raise ValueError(msg) + if size[0] < 0 or size[1] < 0: + msg = "Width and height must be >= 0" + raise ValueError(msg) + + +def new( + mode: str, + size: tuple[int, int] | list[int], + color: float | tuple[float, ...] | str | None = 0, +) -> Image: + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB or HSV images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isinstance(color, str): + # css3-style specifier + + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + + im = Image() + if ( + mode == "P" + and isinstance(color, (list, tuple)) + and all(isinstance(i, int) for i in color) + ): + color_ints: tuple[int, ...] = cast(tuple[int, ...], tuple(color)) + if len(color_ints) == 3 or len(color_ints) == 4: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color_ints) + return im._new(core.fill(mode, size, color)) + + +def frombytes( + mode: str, + size: tuple[int, int], + data: bytes | bytearray | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Codec `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + im = new(mode, size) + if im.width != 0 and im.height != 0: + decoder_args: Any = args + if len(decoder_args) == 1 and isinstance(decoder_args[0], tuple): + # may pass tuple instead of argument list + decoder_args = decoder_args[0] + + if decoder_name == "raw" and decoder_args == (): + decoder_args = mode + + im.frombytes(data, decoder_name, decoder_args) + return im + + +def frombuffer( + mode: str, + size: tuple[int, int], + data: bytes | SupportsArrayInterface, + decoder_name: str = "raw", + *args: Any, +) -> Image: + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load it. + + The default parameters used for the "raw" decoder differs from that used for + :py:func:`~PIL.Image.frombytes`. This is a bug, and will probably be fixed in a + future release. The current release issues a warning if you do this; to disable + the warning, you should provide the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + args = mode, 0, 1 + if args[0] in _MAPMODES: + im = new(mode, (0, 0)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + if mode == "P": + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette("RGB", im.im.getpalette("RGB")) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +class SupportsArrayInterface(Protocol): + """ + An object that has an ``__array_interface__`` dictionary. + """ + + @property + def __array_interface__(self) -> dict[str, Any]: + raise NotImplementedError() + + +def fromarray(obj: SupportsArrayInterface, mode: str | None = None) -> Image: + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol):: + + from PIL import Image + import numpy as np + a = np.zeros((5, 5)) + im = Image.fromarray(a) + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + In the case of NumPy, be aware that Pillow modes do not always correspond + to NumPy dtypes. Pillow modes only offer 1-bit pixels, 8-bit pixels, + 32-bit signed integer pixels, and 32-bit floating point pixels. + + Pillow images can also be converted to arrays:: + + from PIL import Image + import numpy as np + im = Image.open("hopper.jpg") + a = np.asarray(im) + + When converting Pillow images to arrays however, only pixel values are + transferred. This means that P and PA mode images will lose their palette. + + :param obj: Object with array interface + :param mode: Optional mode to use when reading ``obj``. Will be determined from + type if ``None``. + + This will not be used to convert the data after reading, but will be used to + change how the data is read:: + + from PIL import Image + import numpy as np + a = np.full((1, 1), 300) + im = Image.fromarray(a, mode="L") + im.getpixel((0, 0)) # 44 + im = Image.fromarray(a, mode="RGB") + im.getpixel((0, 0)) # (44, 1, 0) + + See: :ref:`concept-modes` for general information about modes. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr["shape"] + ndim = len(shape) + strides = arr.get("strides", None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr["typestr"] + except KeyError as e: + msg = "Cannot handle this data type" + raise TypeError(msg) from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + typekey_shape, typestr = typekey + msg = f"Cannot handle this data type: {typekey_shape}, {typestr}" + raise TypeError(msg) from e + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + msg = f"Too many dimensions: {ndim} > {ndmax}." + raise ValueError(msg) + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + elif hasattr(obj, "tostring"): + obj = obj.tostring() + else: + msg = "'strides' requires either tobytes() or tostring()" + raise ValueError(msg) + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im: ImageQt.QImage) -> ImageFile.ImageFile: + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqimage(im) + + +def fromqpixmap(im: ImageQt.QPixmap) -> ImageFile.ImageFile: + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), + # shortcuts: + ((1, 1), f"{_ENDIAN}i4"): ("I", "I"), + ((1, 1), f"{_ENDIAN}f4"): ("F", "F"), +} + + +def _decompression_bomb_check(size: tuple[int, int]) -> None: + if MAX_IMAGE_PIXELS is None: + return + + pixels = max(1, size[0]) * max(1, size[1]) + + if pixels > 2 * MAX_IMAGE_PIXELS: + msg = ( + f"Image size ({pixels} pixels) exceeds limit of {2 * MAX_IMAGE_PIXELS} " + "pixels, could be decompression bomb DOS attack." + ) + raise DecompressionBombError(msg) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + f"Image size ({pixels} pixels) exceeds limit of {MAX_IMAGE_PIXELS} pixels, " + "could be decompression bomb DOS attack.", + DecompressionBombWarning, + ) + + +def open( + fp: StrOrBytesPath | IO[bytes], + mode: Literal["r"] = "r", + formats: list[str] | tuple[str, ...] | None = None, +) -> ImageFile.ImageFile: + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), os.PathLike object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. The file object will also seek to zero + before reading. + :param mode: The mode. If given, this argument must be "r". + :param formats: A list or tuple of formats to attempt to load the file in. + This can be used to restrict the set of formats checked. + Pass ``None`` to try all supported formats. You can print the set of + available formats by running ``python3 -m PIL`` or using + the :py:func:`PIL.features.pilinfo` function. + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + :exception TypeError: If ``formats`` is not ``None``, a list or a tuple. + """ + + if mode != "r": + msg = f"bad mode {repr(mode)}" # type: ignore[unreachable] + raise ValueError(msg) + elif isinstance(fp, io.StringIO): + msg = ( # type: ignore[unreachable] + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + raise ValueError(msg) + + if formats is None: + formats = ID + elif not isinstance(formats, (list, tuple)): + msg = "formats must be a list or tuple" # type: ignore[unreachable] + raise TypeError(msg) + + exclusive_fp = False + filename: str | bytes = "" + if is_path(fp): + filename = os.fspath(fp) + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + else: + fp = cast(IO[bytes], fp) + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + warning_messages: list[str] = [] + + def _open_core( + fp: IO[bytes], + filename: str | bytes, + prefix: bytes, + formats: list[str] | tuple[str, ...], + ) -> ImageFile.ImageFile | None: + for i in formats: + i = i.upper() + if i not in OPEN: + init() + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if isinstance(result, str): + warning_messages.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error) as e: + if WARN_POSSIBLE_FORMATS: + warning_messages.append(i + " opening failed. " + str(e)) + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix, formats) + + if im is None and formats is ID: + checked_formats = ID.copy() + if init(): + im = _open_core( + fp, + filename, + prefix, + tuple(format for format in formats if format not in checked_formats), + ) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in warning_messages: + warnings.warn(message) + msg = "cannot identify image file %r" % (filename if filename else fp) + raise UnidentifiedImageError(msg) + + +# +# Image processing. + + +def alpha_composite(im1: Image, im2: Image) -> Image: + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1: Image, im2: Image, alpha: float) -> Image: + """ + Creates a new image by interpolating between two input images, using + a constant alpha:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1: Image, image2: Image, mask: Image) -> Image: + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image: Image, *args: Callable[[int], float]) -> Image: + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode: str, bands: Sequence[Image]) -> Image: + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + msg = "wrong number of bands" + raise ValueError(msg) + for band in bands[1:]: + if band.mode != getmodetype(mode): + msg = "mode mismatch" + raise ValueError(msg) + if band.size != bands[0].size: + msg = "size mismatch" + raise ValueError(msg) + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + + +def register_open( + id: str, + factory: ( + Callable[[IO[bytes], str | bytes], ImageFile.ImageFile] + | type[ImageFile.ImageFile] + ), + accept: Callable[[bytes], bool | str] | None = None, +) -> None: + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + if id not in ID: + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id: str, mimetype: str) -> None: + """ + Registers an image MIME type by populating ``Image.MIME``. This function + should not be used in application code. + + ``Image.MIME`` provides a mapping from image format identifiers to mime + formats, but :py:meth:`~PIL.ImageFile.ImageFile.get_format_mimetype` can + provide a different result for specific images. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save( + id: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all( + id: str, driver: Callable[[Image, IO[bytes], str | bytes], None] +) -> None: + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id: str, extension: str) -> None: + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id: str, extensions: list[str]) -> None: + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions() -> dict[str, str]: + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + init() + return EXTENSION + + +def register_decoder(name: str, decoder: type[ImageFile.PyDecoder]) -> None: + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: An ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name: str, encoder: type[ImageFile.PyEncoder]) -> None: + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: An ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image: Image, **options: Any) -> None: + from . import ImageShow + + ImageShow.show(image, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot( + size: tuple[int, int], extent: tuple[float, float, float, float], quality: int +) -> Image: + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y1). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size: tuple[int, int], sigma: float) -> Image: + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode: str) -> Image: + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode: str) -> Image: + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + + +def _apply_env_variables(env: dict[str, str] | None = None) -> None: + env_dict = env if env is not None else os.environ + + for var_name, setter in [ + ("PILLOW_ALIGNMENT", core.set_alignment), + ("PILLOW_BLOCK_SIZE", core.set_block_size), + ("PILLOW_BLOCKS_MAX", core.set_blocks_max), + ]: + if var_name not in env_dict: + continue + + var = env_dict[var_name].lower() + + units = 1 + for postfix, mul in [("k", 1024), ("m", 1024 * 1024)]: + if var.endswith(postfix): + units = mul + var = var[: -len(postfix)] + + try: + var_int = int(var) * units + except ValueError: + warnings.warn(f"{var_name} is not int") + continue + + try: + setter(var_int) + except ValueError as e: + warnings.warn(f"{var_name}: {e}") + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +if TYPE_CHECKING: + _ExifBase = MutableMapping[int, Any] +else: + _ExifBase = MutableMapping + + +class Exif(_ExifBase): + """ + This class provides read and write access to EXIF image data:: + + from PIL import Image + im = Image.open("exif.png") + exif = im.getexif() # Returns an instance of this class + + Information can be read and written, iterated over or deleted:: + + print(exif[274]) # 1 + exif[274] = 2 + for k, v in exif.items(): + print("Tag", k, "Value", v) # Tag 274 Value 2 + del exif[274] + + To access information beyond IFD0, :py:meth:`~PIL.Image.Exif.get_ifd` + returns a dictionary:: + + from PIL import ExifTags + im = Image.open("exif_gps.jpg") + exif = im.getexif() + gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) + print(gps_ifd) + + Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.MakerNote``, + ``ExifTags.IFD.Interop`` and ``ExifTags.IFD.IFD1``. + + :py:mod:`~PIL.ExifTags` also has enum classes to provide names for data:: + + print(exif[ExifTags.Base.Software]) # PIL + print(gps_ifd[ExifTags.GPS.GPSDateStamp]) # 1999:99:99 99:99:99 + """ + + endian: str | None = None + bigtiff = False + _loaded = False + + def __init__(self) -> None: + self._data: dict[int, Any] = {} + self._hidden_data: dict[int, Any] = {} + self._ifds: dict[int, dict[int, Any]] = {} + self._info: TiffImagePlugin.ImageFileDirectory_v2 | None = None + self._loaded_exif: bytes | None = None + + def _fixup(self, value: Any) -> Any: + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict: dict[int, Any]) -> dict[int, Any]: + # Helper function + # returns a dict with any single item tuples/lists as individual values + return {k: self._fixup(v) for k, v in src_dict.items()} + + def _get_ifd_dict( + self, offset: int, group: int | None = None + ) -> dict[int, Any] | None: + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(offset) + except (KeyError, TypeError): + return None + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head, group=group) + info.load(self.fp) + return self._fixup_dict(dict(info)) + + def _get_head(self) -> bytes: + version = b"\x2B" if self.bigtiff else b"\x2A" + if self.endian == "<": + head = b"II" + version + b"\x00" + o32le(8) + else: + head = b"MM\x00" + version + o32be(8) + if self.bigtiff: + head += o32le(8) if self.endian == "<" else o32be(8) + head += b"\x00\x00\x00\x00" + return head + + def load(self, data: bytes) -> None: + # Extract EXIF information. This is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + if data == self._loaded_exif: + return + self._loaded_exif = data + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + while data and data.startswith(b"Exif\x00\x00"): + data = data[6:] + if not data: + self._info = None + return + + self.fp: IO[bytes] = io.BytesIO(data) + self.head = self.fp.read(8) + # process dictionary + from . import TiffImagePlugin + + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + self.endian = self._info._endian + self.fp.seek(self._info.next) + self._info.load(self.fp) + + def load_from_fp(self, fp: IO[bytes], offset: int | None = None) -> None: + self._loaded_exif = None + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + + # process dictionary + from . import TiffImagePlugin + + self.fp = fp + if offset is not None: + self.head = self._get_head() + else: + self.head = self.fp.read(8) + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + if self.endian is None: + self.endian = self._info._endian + if offset is None: + offset = self._info.next + self.fp.tell() + self.fp.seek(offset) + self._info.load(self.fp) + + def _get_merged_dict(self) -> dict[int, Any]: + merged_dict = dict(self) + + # get EXIF extension + if ExifTags.IFD.Exif in self: + ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif], ExifTags.IFD.Exif) + if ifd: + merged_dict.update(ifd) + + # GPS + if ExifTags.IFD.GPSInfo in self: + merged_dict[ExifTags.IFD.GPSInfo] = self._get_ifd_dict( + self[ExifTags.IFD.GPSInfo], ExifTags.IFD.GPSInfo + ) + + return merged_dict + + def tobytes(self, offset: int = 8) -> bytes: + from . import TiffImagePlugin + + head = self._get_head() + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, ifd_dict in self._ifds.items(): + if tag not in self: + ifd[tag] = ifd_dict + for tag, value in self.items(): + if tag in [ + ExifTags.IFD.Exif, + ExifTags.IFD.GPSInfo, + ] and not isinstance(value, dict): + value = self.get_ifd(tag) + if ( + tag == ExifTags.IFD.Exif + and ExifTags.IFD.Interop in value + and not isinstance(value[ExifTags.IFD.Interop], dict) + ): + value = value.copy() + value[ExifTags.IFD.Interop] = self.get_ifd(ExifTags.IFD.Interop) + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag: int) -> dict[int, Any]: + if tag not in self._ifds: + if tag == ExifTags.IFD.IFD1: + if self._info is not None and self._info.next != 0: + ifd = self._get_ifd_dict(self._info.next) + if ifd is not None: + self._ifds[tag] = ifd + elif tag in [ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo]: + offset = self._hidden_data.get(tag, self.get(tag)) + if offset is not None: + ifd = self._get_ifd_dict(offset, tag) + if ifd is not None: + self._ifds[tag] = ifd + elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.MakerNote]: + if ExifTags.IFD.Exif not in self._ifds: + self.get_ifd(ExifTags.IFD.Exif) + tag_data = self._ifds[ExifTags.IFD.Exif][tag] + if tag == ExifTags.IFD.MakerNote: + from .TiffImagePlugin import ImageFileDirectory_v2 + + if tag_data[:8] == b"FUJIFILM": + ifd_offset = i32le(tag_data, 8) + ifd_data = tag_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", tag_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", tag_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo: dict[str, int | bytes] = { + "ModelID": self.fp.read(4) + } + + self.fp.read(4) + # Seconds since 2000 + camerainfo["TimeStamp"] = i32le(self.fp.read(12)) + + self.fp.read(4) + camerainfo["InternalSerialNumber"] = self.fp.read(4) + + self.fp.read(12) + parallax = self.fp.read(4) + handler = ImageFileDirectory_v2._load_dispatch[ + TiffTags.FLOAT + ][1] + camerainfo["Parallax"] = handler( + ImageFileDirectory_v2(), parallax, False + )[0] + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: camerainfo} + self._ifds[tag] = makernote + else: + # Interop + ifd = self._get_ifd_dict(tag_data, tag) + if ifd is not None: + self._ifds[tag] = ifd + ifd = self._ifds.setdefault(tag, {}) + if tag == ExifTags.IFD.Exif and self._hidden_data: + ifd = { + k: v + for (k, v) in ifd.items() + if k not in (ExifTags.IFD.Interop, ExifTags.IFD.MakerNote) + } + return ifd + + def hide_offsets(self) -> None: + for tag in (ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo): + if tag in self: + self._hidden_data[tag] = self[tag] + del self[tag] + + def __str__(self) -> str: + if self._info is not None: + # Load all keys into self._data + for tag in self._info: + self[tag] + + return str(self._data) + + def __len__(self) -> int: + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag: int) -> Any: + if self._info is not None and tag not in self._data and tag in self._info: + self._data[tag] = self._fixup(self._info[tag]) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag: object) -> bool: + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag: int, value: Any) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag: int) -> None: + if self._info is not None and tag in self._info: + del self._info[tag] + else: + del self._data[tag] + + def __iter__(self) -> Iterator[int]: + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/libs/PIL/ImageChops.py b/libs/PIL/ImageChops.py new file mode 100644 index 0000000..29a5c99 --- /dev/null +++ b/libs/PIL/ImageChops.py @@ -0,0 +1,311 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +from . import Image + + +def constant(image: Image.Image, value: int) -> Image.Image: + """Fill a channel with a given gray level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image: Image.Image) -> Image.Image: + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert an image (channel). :: + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. :: + + out = max(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + + +def darker(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. :: + + out = min(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + + +def difference(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. :: + + out = abs(image1 - image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + + +def multiply(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other. + + If you multiply an image with a solid black image, the result is black. If + you multiply with a solid white image, the image is unaffected. :: + + out = image1 * image2 / MAX + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + + +def screen(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two inverted images on top of each other. :: + + out = MAX - ((MAX - image1) * (MAX - image2) / MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + + +def soft_light(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Soft Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_soft_light(image2.im)) + + +def hard_light(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Hard Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_hard_light(image2.im)) + + +def overlay(image1: Image.Image, image2: Image.Image) -> Image.Image: + """ + Superimposes two images on top of each other using the Overlay algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_overlay(image2.im)) + + +def add( + image1: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 + image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + + +def subtract( + image1: Image.Image, image2: Image.Image, scale: float = 1.0, offset: float = 0 +) -> Image.Image: + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 - image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + + +def add_modulo(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Add two images, without clipping the result. :: + + out = ((image1 + image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + + +def subtract_modulo(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Subtract two images, without clipping the result. :: + + out = ((image1 - image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + + +def logical_and(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical AND between two images. + + Both of the images must have mode "1". If you would like to perform a + logical AND on an image with a mode other than "1", try + :py:meth:`~PIL.ImageChops.multiply` instead, using a black-and-white mask + as the second image. :: + + out = ((image1 and image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + + +def logical_or(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical OR between two images. + + Both of the images must have mode "1". :: + + out = ((image1 or image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + + +def logical_xor(image1: Image.Image, image2: Image.Image) -> Image.Image: + """Logical XOR between two images. + + Both of the images must have mode "1". :: + + out = ((bool(image1) != bool(image2)) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + + +def blend(image1: Image.Image, image2: Image.Image, alpha: float) -> Image.Image: + """Blend images using constant transparency weight. Alias for + :py:func:`PIL.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite( + image1: Image.Image, image2: Image.Image, mask: Image.Image +) -> Image.Image: + """Create composite using transparency mask. Alias for + :py:func:`PIL.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image: Image.Image, xoffset: int, yoffset: int | None = None) -> Image.Image: + """Returns a copy of the image where data has been offset by the given + distances. Data wraps around the edges. If ``yoffset`` is omitted, it + is assumed to be equal to ``xoffset``. + + :param image: Input image. + :param xoffset: The horizontal distance. + :param yoffset: The vertical distance. If omitted, both + distances are set to the same value. + :rtype: :py:class:`~PIL.Image.Image` + """ + + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/libs/PIL/ImageCms.py b/libs/PIL/ImageCms.py new file mode 100644 index 0000000..fdfbee7 --- /dev/null +++ b/libs/PIL/ImageCms.py @@ -0,0 +1,1125 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# Originally released under LGPL. Graciously donated to PIL in +# March 2009, for distribution under the standard PIL license + +# History: + +# 2009-03-08 fl Added to PIL. + +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# Copyright (c) 2013 by Eric Soroos + +# See the README file for information on usage and redistribution. See +# below for the original description. +from __future__ import annotations + +import operator +import sys +from enum import IntEnum, IntFlag +from functools import reduce +from typing import Any, Literal, SupportsFloat, SupportsInt, Union + +from . import Image, __version__ +from ._deprecate import deprecate +from ._typing import SupportsRead + +try: + from . import _imagingcms as core + + _CmsProfileCompatible = Union[ + str, SupportsRead[bytes], core.CmsProfile, "ImageCmsProfile" + ] +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import DeferredError + + core = DeferredError.new(ex) + +_DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + https://www.cazabon.com + + pyCMS home page: https://www.cazabon.com/pyCMS + littleCMS home page: https://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 1.0.0 pil Oct 2013 Port to LCMS 2. + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +_VERSION = "1.0.0 pil" + + +def __getattr__(name: str) -> Any: + if name == "DESCRIPTION": + deprecate("PIL.ImageCms.DESCRIPTION", 12) + return _DESCRIPTION + elif name == "VERSION": + deprecate("PIL.ImageCms.VERSION", 12) + return _VERSION + elif name == "FLAGS": + deprecate("PIL.ImageCms.FLAGS", 12, "PIL.ImageCms.Flags") + return _FLAGS + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# --------------------------------------------------------------------. + + +# +# intent/direction values + + +class Intent(IntEnum): + PERCEPTUAL = 0 + RELATIVE_COLORIMETRIC = 1 + SATURATION = 2 + ABSOLUTE_COLORIMETRIC = 3 + + +class Direction(IntEnum): + INPUT = 0 + OUTPUT = 1 + PROOF = 2 + + +# +# flags + + +class Flags(IntFlag): + """Flags and documentation are taken from ``lcms2.h``.""" + + NONE = 0 + NOCACHE = 0x0040 + """Inhibit 1-pixel cache""" + NOOPTIMIZE = 0x0100 + """Inhibit optimizations""" + NULLTRANSFORM = 0x0200 + """Don't transform anyway""" + GAMUTCHECK = 0x1000 + """Out of Gamut alarm""" + SOFTPROOFING = 0x4000 + """Do softproofing""" + BLACKPOINTCOMPENSATION = 0x2000 + NOWHITEONWHITEFIXUP = 0x0004 + """Don't fix scum dot""" + HIGHRESPRECALC = 0x0400 + """Use more memory to give better accuracy""" + LOWRESPRECALC = 0x0800 + """Use less memory to minimize resources""" + # this should be 8BITS_DEVICELINK, but that is not a valid name in Python: + USE_8BITS_DEVICELINK = 0x0008 + """Create 8 bits devicelinks""" + GUESSDEVICECLASS = 0x0020 + """Guess device class (for ``transform2devicelink``)""" + KEEP_SEQUENCE = 0x0080 + """Keep profile sequence for devicelink creation""" + FORCE_CLUT = 0x0002 + """Force CLUT optimization""" + CLUT_POST_LINEARIZATION = 0x0001 + """create postlinearization tables if possible""" + CLUT_PRE_LINEARIZATION = 0x0010 + """create prelinearization tables if possible""" + NONEGATIVES = 0x8000 + """Prevent negative numbers in floating point transforms""" + COPY_ALPHA = 0x04000000 + """Alpha channels are copied on ``cmsDoTransform()``""" + NODEFAULTRESOURCEDEF = 0x01000000 + + _GRIDPOINTS_1 = 1 << 16 + _GRIDPOINTS_2 = 2 << 16 + _GRIDPOINTS_4 = 4 << 16 + _GRIDPOINTS_8 = 8 << 16 + _GRIDPOINTS_16 = 16 << 16 + _GRIDPOINTS_32 = 32 << 16 + _GRIDPOINTS_64 = 64 << 16 + _GRIDPOINTS_128 = 128 << 16 + + @staticmethod + def GRIDPOINTS(n: int) -> Flags: + """ + Fine-tune control over number of gridpoints + + :param n: :py:class:`int` in range ``0 <= n <= 255`` + """ + return Flags.NONE | ((n & 0xFF) << 16) + + +_MAX_FLAG = reduce(operator.or_, Flags) + + +_FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: (n & 0xFF) << 16, # Gridpoints +} + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile: str | SupportsRead[bytes] | core.CmsProfile) -> None: + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + if isinstance(profile, str): + if sys.platform == "win32": + profile_bytes_path = profile.encode() + try: + profile_bytes_path.decode("ascii") + except UnicodeDecodeError: + with open(profile, "rb") as f: + self._set(core.profile_frombytes(f.read())) + return + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, core.CmsProfile): + self._set(profile) + else: + msg = "Invalid type for Profile" # type: ignore[unreachable] + raise TypeError(msg) + + def _set(self, profile: core.CmsProfile, filename: str | None = None) -> None: + self.profile = profile + self.filename = filename + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + + def tobytes(self) -> bytes: + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + """ + Transform. This can be used with the procedural API, or with the standard + :py:func:`~PIL.Image.Image.point` method. + + Will return the output profile in the ``output.info['icc_profile']``. + """ + + def __init__( + self, + input: ImageCmsProfile, + output: ImageCmsProfile, + input_mode: str, + output_mode: str, + intent: Intent = Intent.PERCEPTUAL, + proof: ImageCmsProfile | None = None, + proof_intent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.NONE, + ): + supported_modes = ( + "RGB", + "RGBA", + "RGBX", + "CMYK", + "I;16", + "I;16L", + "I;16B", + "YCbCr", + "LAB", + "L", + "1", + ) + for mode in (input_mode, output_mode): + if mode not in supported_modes: + deprecate( + mode, + 12, + { + "L;16": "I;16 or I;16L", + "L:16B": "I;16B", + "YCCA": "YCbCr", + "YCC": "YCbCr", + }.get(mode), + ) + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, input_mode, output_mode, intent, flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, + output.profile, + proof.profile, + input_mode, + output_mode, + intent, + proof_intent, + flags, + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im: Image.Image) -> Image.Image: + return self.apply(im) + + def apply(self, im: Image.Image, imOut: Image.Image | None = None) -> Image.Image: + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.getim(), imOut.getim()) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im: Image.Image) -> Image.Image: + if im.mode != self.output_mode: + msg = "mode mismatch" + raise ValueError(msg) # wrong output mode + self.transform.apply(im.getim(), im.getim()) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle: SupportsInt | None = None) -> ImageCmsProfile | None: + """ + (experimental) Fetches the profile for the current display device. + + :returns: ``None`` if the profile is not known. + """ + + if sys.platform != "win32": + return None + + from . import ImageWin # type: ignore[unused-ignore, unreachable] + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(int(handle), 1) + else: + profile = core.get_display_profile_win32(int(handle or 0)) + if profile is None: + return None + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + + +class PyCMSError(Exception): + """(pyCMS) Exception class. + This is used for all errors in the pyCMS API.""" + + pass + + +def profileToProfile( + im: Image.Image, + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + renderingIntent: Intent = Intent.PERCEPTUAL, + outputMode: str | None = None, + inPlace: bool = False, + flags: Flags = Flags.NONE, +) -> Image.Image | None: + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + ``inputProfile`` to ``outputProfile``. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If ``inPlace`` is ``True`` and + ``outputMode != im.mode``, a :exc:`PyCMSError` will be raised. + If an error occurs during application of the profiles, + a :exc:`PyCMSError` will be raised. + If ``outputMode`` is not a mode supported by the ``outputProfile`` (or by pyCMS), + a :exc:`PyCMSError` will be raised. + + This function applies an ICC transformation to im from ``inputProfile``'s + color space to ``outputProfile``'s color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + ``outputMode`` can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open :py:class:`~PIL.Image.Image` object (i.e. Image.new(...) + or Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean. If ``True``, the original image is modified in-place, + and ``None`` is returned. If ``False`` (default), a new + :py:class:`~PIL.Image.Image` object is returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new :py:class:`~PIL.Image.Image` object, depending on + the value of ``inPlace`` + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, + outputProfile, + im.mode, + outputMode, + renderingIntent, + flags=flags, + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def getOpenProfile( + profileFilename: str | SupportsRead[bytes] | core.CmsProfile, +) -> ImageCmsProfile: + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If ``profileFilename`` is not a valid filename for an ICC profile, + a :exc:`PyCMSError` will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildTransform( + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + flags: Flags = Flags.NONE, +) -> ImageCmsTransform: + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If an error occurs during creation + of the transform, a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile`` using the ``renderingIntent`` to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in ``inMode`` to images that are in ``outMode`` color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the ``inMode`` and ``outMode`` attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildProofTransform( + inputProfile: _CmsProfileCompatible, + outputProfile: _CmsProfileCompatible, + proofProfile: _CmsProfileCompatible, + inMode: str, + outMode: str, + renderingIntent: Intent = Intent.PERCEPTUAL, + proofRenderingIntent: Intent = Intent.ABSOLUTE_COLORIMETRIC, + flags: Flags = Flags.SOFTPROOFING, +) -> ImageCmsTransform: + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device. + + If the input, output, or proof profiles specified are not valid + filenames, a :exc:`PyCMSError` will be raised. + + If an error occurs during creation of the transform, + a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device using ``renderingIntent`` and + ``proofRenderingIntent`` to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in ``inMode`` to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the ``proofProfile`` device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent, + proofProfile, + proofRenderingIntent, + flags, + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform( + im: Image.Image, transform: ImageCmsTransform, inPlace: bool = False +) -> Image.Image | None: + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.input_mode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.input_mode != transform.output_mode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.input_mode`` or ``transform.output_mode`` is not + supported by pyCMSdll or the profiles you used for the transform, a + :exc:`PyCMSError` is raised. + + If an error occurs while the transform is being applied, + a :exc:`PyCMSError` is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set ``inPlace`` to ``True``. This can only be done if + ``transform.input_mode`` and ``transform.output_mode`` are the same, because we + can't change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new :py:class:`~PIL.Image.Image` + object of the same dimensions in mode ``transform.output_mode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and ``im.mode`` must be the same + as the ``input_mode`` supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool. If ``True``, ``im`` is modified in place and ``None`` is + returned, if ``False``, a new :py:class:`~PIL.Image.Image` object with the + transform applied is returned (and ``im`` is not changed). The default is + ``False``. + :returns: Either ``None``, or a new :py:class:`~PIL.Image.Image` object, + depending on the value of ``inPlace``. The profile will be returned in + the image's ``info['icc_profile']``. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def createProfile( + colorSpace: Literal["LAB", "XYZ", "sRGB"], colorTemp: SupportsFloat = 0 +) -> core.CmsProfile: + """ + (pyCMS) Creates a profile. + + If colorSpace not in ``["LAB", "XYZ", "sRGB"]``, + a :exc:`PyCMSError` is raised. + + If using LAB and ``colorTemp`` is not a positive integer, + a :exc:`PyCMSError` is raised. + + If an error occurs while creating the profile, + a :exc:`PyCMSError` is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive number for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + msg = ( + f"Color space not supported for on-the-fly profile creation ({colorSpace})" + ) + raise PyCMSError(msg) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + msg = f'Color temperature must be numeric, "{colorTemp}" not valid' + raise PyCMSError(msg) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile: _CmsProfileCompatible) -> str: + """ + + (pyCMS) Gets the internal product name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised If an error occurs while trying + to obtain the name tag, a :exc:`PyCMSError` is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.model + manufacturer = profile.profile.manufacturer + + if not (model or manufacturer): + return (profile.profile.profile_description or "") + "\n" + if not manufacturer or (model and len(model) > 30): + return f"{model}\n" + return f"{model} - {manufacturer}\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the internal product information for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the info tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.profile_description + cpright = profile.profile.copyright + elements = [element for element in (description, cpright) if element] + return "\r\n\r\n".join(elements) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the copyright for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the copyright tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.copyright or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileManufacturer(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the manufacturer for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.manufacturer or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileModel(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the model for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the model tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.model or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileDescription(profile: _CmsProfileCompatible) -> str: + """ + (pyCMS) Gets the description for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the description tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.profile_description or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getDefaultIntent(profile: _CmsProfileCompatible) -> int: + """ + (pyCMS) Gets the default intent name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the default intent, a + :exc:`PyCMSError` is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def isIntentSupported( + profile: _CmsProfileCompatible, intent: Intent, direction: Direction +) -> Literal[-1, 1]: + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + ``intent`` with ``profile``, and that ``profile`` can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents, so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential :exc:`PyCMSError` that will occur if they don't + support the modes you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for + input, output, or proof + + INPUT = 0 (or use ImageCms.Direction.INPUT) + OUTPUT = 1 (or use ImageCms.Direction.OUTPUT) + PROOF = 2 (or use ImageCms.Direction.PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def versions() -> tuple[str, str | None, str, str]: + """ + (pyCMS) Fetches versions. + """ + + deprecate( + "PIL.ImageCms.versions()", + 12, + '(PIL.features.version("littlecms2"), sys.version, PIL.__version__)', + ) + return _VERSION, core.littlecms_version, sys.version.split()[0], __version__ diff --git a/libs/PIL/ImageColor.py b/libs/PIL/ImageColor.py new file mode 100644 index 0000000..9a15a8e --- /dev/null +++ b/libs/PIL/ImageColor.py @@ -0,0 +1,320 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from functools import lru_cache + +from . import Image + + +@lru_cache +def getrgb(color: str) -> tuple[int, int, int] | tuple[int, int, int, int]: + """ + Convert a color string to an RGB or RGBA tuple. If the string cannot be + parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + if len(color) > 100: + msg = "color specifier is too long" + raise ValueError(msg) + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + rgb_tuple = getrgb(rgb) + assert len(rgb_tuple) == 3 + colormap[color] = rgb_tuple + return rgb_tuple + + # check for known string formats + if re.match("#[a-f0-9]{3}$", color): + return int(color[1] * 2, 16), int(color[2] * 2, 16), int(color[3] * 2, 16) + + if re.match("#[a-f0-9]{4}$", color): + return ( + int(color[1] * 2, 16), + int(color[2] * 2, 16), + int(color[3] * 2, 16), + int(color[4] * 2, 16), + ) + + if re.match("#[a-f0-9]{6}$", color): + return int(color[1:3], 16), int(color[3:5], 16), int(color[5:7], 16) + + if re.match("#[a-f0-9]{8}$", color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5), + ) + + m = re.match( + r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hls_to_rgb + + rgb_floats = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[2] * 255 + 0.5), + ) + + m = re.match( + r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hsv_to_rgb + + rgb_floats = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb_floats[0] * 255 + 0.5), + int(rgb_floats[1] * 255 + 0.5), + int(rgb_floats[2] * 255 + 0.5), + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4)) + msg = f"unknown color specifier: {repr(color)}" + raise ValueError(msg) + + +@lru_cache +def getcolor(color: str, mode: str) -> int | tuple[int, ...]: + """ + Same as :py:func:`~PIL.ImageColor.getrgb` for most modes. However, if + ``mode`` is HSV, converts the RGB value to a HSV value, or if ``mode`` is + not color or a palette image, converts the RGB value to a grayscale value. + If the string cannot be parsed, this function raises a :py:exc:`ValueError` + exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :param mode: Convert result to this mode + :return: ``graylevel, (graylevel, alpha) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + rgb, alpha = getrgb(color), 255 + if len(rgb) == 4: + alpha = rgb[3] + rgb = rgb[:3] + + if mode == "HSV": + from colorsys import rgb_to_hsv + + r, g, b = rgb + h, s, v = rgb_to_hsv(r / 255, g / 255, b / 255) + return int(h * 255), int(s * 255), int(v * 255) + elif Image.getmodebase(mode) == "L": + r, g, b = rgb + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + graylevel = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return graylevel, alpha + return graylevel + elif mode[-1] == "A": + return rgb + (alpha,) + return rgb + + +colormap: dict[str, str | tuple[int, int, int]] = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/libs/PIL/ImageDraw.py b/libs/PIL/ImageDraw.py new file mode 100644 index 0000000..d8e4c0c --- /dev/null +++ b/libs/PIL/ImageDraw.py @@ -0,0 +1,1218 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +import struct +from collections.abc import Sequence +from types import ModuleType +from typing import TYPE_CHECKING, Any, AnyStr, Callable, Union, cast + +from . import Image, ImageColor +from ._deprecate import deprecate +from ._typing import Coords + +# experimental access to the outline API +Outline: Callable[[], Image.core._Outline] | None +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + +if TYPE_CHECKING: + from . import ImageDraw2, ImageFont + +_Ink = Union[float, tuple[int, ...], str] + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + font: ( + ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont | None + ) = None + + def __init__(self, im: Image.Image, mode: str | None = None) -> None: + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + msg = "mode mismatch" + raise ValueError(msg) + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self._image = im + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1) + else: + self.ink = self.draw.draw_ink(-1) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = False + + def getfont( + self, + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + """ + Get the current default font. + + To set the default font for this ImageDraw instance:: + + from PIL import ImageDraw, ImageFont + draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + To set the default font for all future ImageDraw instances:: + + from PIL import ImageDraw, ImageFont + ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + If the current default font is ``None``, + it is initialized with ``ImageFont.load_default()``. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + + self.font = ImageFont.load_default() + return self.font + + def _getfont( + self, font_size: float | None + ) -> ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont: + if font_size is not None: + from . import ImageFont + + return ImageFont.load_default(font_size) + else: + return self.getfont() + + def _getink( + self, ink: _Ink | None, fill: _Ink | None = None + ) -> tuple[int | None, int | None]: + result_ink = None + result_fill = None + if ink is None and fill is None: + if self.fill: + result_fill = self.ink + else: + result_ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and isinstance(ink, tuple): + ink = self.palette.getcolor(ink, self._image) + result_ink = self.draw.draw_ink(ink) + if fill is not None: + if isinstance(fill, str): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and isinstance(fill, tuple): + fill = self.palette.getcolor(fill, self._image) + result_fill = self.draw.draw_ink(fill) + return result_ink, result_fill + + def arc( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink, width) + + def bitmap( + self, xy: Sequence[int], bitmap: Image.Image, fill: _Ink | None = None + ) -> None: + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a chord.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_chord(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw an ellipse.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_ellipse(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def circle( + self, + xy: Sequence[float], + radius: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a circle given center coordinates and a radius.""" + ellipse_xy = (xy[0] - radius, xy[1] - radius, xy[0] + radius, xy[1] + radius) + self.ellipse(ellipse_xy, fill, outline, width) + + def line( + self, + xy: Coords, + fill: _Ink | None = None, + width: int = 0, + joint: str | None = None, + ) -> None: + """Draw a line, or a connected sequence of line segments.""" + ink = self._getink(fill)[0] + if ink is not None: + self.draw.draw_lines(xy, ink, width) + if joint == "curve" and width > 4: + points: Sequence[Sequence[float]] + if isinstance(xy[0], (list, tuple)): + points = cast(Sequence[Sequence[float]], xy) + else: + points = [ + cast(Sequence[float], tuple(xy[i : i + 2])) + for i in range(0, len(xy), 2) + ] + for i in range(1, len(points) - 1): + point = points[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ( + (points[i - 1], point), + (point, points[i + 1]), + ) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle( + coord: Sequence[float], angle: float + ) -> tuple[float, ...]: + x, y = coord + angle -= 90 + distance = width / 2 - 1 + return tuple( + p + (math.floor(p_d) if p_d > 0 else math.ceil(p_d)) + for p, p_d in ( + (x, distance * math.cos(math.radians(angle))), + (y, distance * math.sin(math.radians(angle))), + ) + ) + + flipped = ( + angles[1] > angles[0] and angles[1] - 180 > angles[0] + ) or (angles[1] < angles[0] and angles[1] + 180 > angles[0]) + coords = [ + (point[0] - width / 2 + 1, point[1] - width / 2 + 1), + (point[0] + width / 2 - 1, point[1] + width / 2 - 1), + ] + if flipped: + start, end = (angles[1] + 90, angles[0] + 90) + else: + start, end = (angles[0] - 90, angles[1] - 90) + self.pieslice(coords, start - 90, end - 90, fill) + + if width > 8: + # Cover potential gaps between the line and the joint + if flipped: + gap_coords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gap_coords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gap_coords, fill, width=3) + + def shape( + self, + shape: Image.core._Outline, + fill: _Ink | None = None, + outline: _Ink | None = None, + ) -> None: + """(Experimental) Draw a shape.""" + shape.close() + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_outline(shape, fill_ink, 1) + if ink is not None and ink != fill_ink: + self.draw.draw_outline(shape, ink, 0) + + def pieslice( + self, + xy: Coords, + start: float, + end: float, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a pieslice.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_pieslice(xy, start, end, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy: Coords, fill: _Ink | None = None) -> None: + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a polygon.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_polygon(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + if width == 1: + self.draw.draw_polygon(xy, ink, 0, width) + elif self.im is not None: + # To avoid expanding the polygon outwards, + # use the fill as a mask + mask = Image.new("1", self.im.size) + mask_ink = self._getink(1)[0] + + fill_im = mask.copy() + draw = Draw(fill_im) + draw.draw.draw_polygon(xy, mask_ink, 1) + + ink_im = mask.copy() + draw = Draw(ink_im) + width = width * 2 - 1 + draw.draw.draw_polygon(xy, mask_ink, 0, width) + + mask.paste(ink_im, mask=fill_im) + + im = Image.new(self.mode, self.im.size) + draw = Draw(im) + draw.draw.draw_polygon(xy, ink, 0, width) + self.im.paste(im.im, (0, 0) + im.size, mask.im) + + def regular_polygon( + self, + bounding_circle: Sequence[Sequence[float] | float], + n_sides: int, + rotation: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a regular polygon.""" + xy = _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation) + self.polygon(xy, fill, outline, width) + + def rectangle( + self, + xy: Coords, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + ) -> None: + """Draw a rectangle.""" + ink, fill_ink = self._getink(outline, fill) + if fill_ink is not None: + self.draw.draw_rectangle(xy, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def rounded_rectangle( + self, + xy: Coords, + radius: float = 0, + fill: _Ink | None = None, + outline: _Ink | None = None, + width: int = 1, + *, + corners: tuple[bool, bool, bool, bool] | None = None, + ) -> None: + """Draw a rounded rectangle.""" + if isinstance(xy[0], (list, tuple)): + (x0, y0), (x1, y1) = cast(Sequence[Sequence[float]], xy) + else: + x0, y0, x1, y1 = cast(Sequence[float], xy) + if x1 < x0: + msg = "x1 must be greater than or equal to x0" + raise ValueError(msg) + if y1 < y0: + msg = "y1 must be greater than or equal to y0" + raise ValueError(msg) + if corners is None: + corners = (True, True, True, True) + + d = radius * 2 + + x0 = round(x0) + y0 = round(y0) + x1 = round(x1) + y1 = round(y1) + full_x, full_y = False, False + if all(corners): + full_x = d >= x1 - x0 - 1 + if full_x: + # The two left and two right corners are joined + d = x1 - x0 + full_y = d >= y1 - y0 - 1 + if full_y: + # The two top and two bottom corners are joined + d = y1 - y0 + if full_x and full_y: + # If all corners are joined, that is a circle + return self.ellipse(xy, fill, outline, width) + + if d == 0 or not any(corners): + # If the corners have no curve, + # or there are no corners, + # that is a rectangle + return self.rectangle(xy, fill, outline, width) + + r = int(d // 2) + ink, fill_ink = self._getink(outline, fill) + + def draw_corners(pieslice: bool) -> None: + parts: tuple[tuple[tuple[float, float, float, float], int, int], ...] + if full_x: + # Draw top and bottom halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 180, 360), + ((x0, y1 - d, x0 + d, y1), 0, 180), + ) + elif full_y: + # Draw left and right halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 90, 270), + ((x1 - d, y0, x1, y0 + d), 270, 90), + ) + else: + # Draw four separate corners + parts = tuple( + part + for i, part in enumerate( + ( + ((x0, y0, x0 + d, y0 + d), 180, 270), + ((x1 - d, y0, x1, y0 + d), 270, 360), + ((x1 - d, y1 - d, x1, y1), 0, 90), + ((x0, y1 - d, x0 + d, y1), 90, 180), + ) + ) + if corners[i] + ) + for part in parts: + if pieslice: + self.draw.draw_pieslice(*(part + (fill_ink, 1))) + else: + self.draw.draw_arc(*(part + (ink, width))) + + if fill_ink is not None: + draw_corners(True) + + if full_x: + self.draw.draw_rectangle((x0, y0 + r + 1, x1, y1 - r - 1), fill_ink, 1) + elif x1 - r - 1 > x0 + r + 1: + self.draw.draw_rectangle((x0 + r + 1, y0, x1 - r - 1, y1), fill_ink, 1) + if not full_x and not full_y: + left = [x0, y0, x0 + r, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, fill_ink, 1) + + right = [x1 - r, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, fill_ink, 1) + if ink is not None and ink != fill_ink and width != 0: + draw_corners(False) + + if not full_x: + top = [x0, y0, x1, y0 + width - 1] + if corners[0]: + top[0] += r + 1 + if corners[1]: + top[2] -= r + 1 + self.draw.draw_rectangle(top, ink, 1) + + bottom = [x0, y1 - width + 1, x1, y1] + if corners[3]: + bottom[0] += r + 1 + if corners[2]: + bottom[2] -= r + 1 + self.draw.draw_rectangle(bottom, ink, 1) + if not full_y: + left = [x0, y0, x0 + width - 1, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, ink, 1) + + right = [x1 - width + 1, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, ink, 1) + + def _multiline_check(self, text: AnyStr) -> bool: + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text: AnyStr) -> list[AnyStr]: + return text.split("\n" if isinstance(text, str) else b"\n") + + def _multiline_spacing( + self, + font: ImageFont.ImageFont | ImageFont.FreeTypeFont | ImageFont.TransposedFont, + spacing: float, + stroke_width: float, + ) -> float: + return ( + self.textbbox((0, 0), "A", font, stroke_width=stroke_width)[3] + + stroke_width + + spacing + ) + + def text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *args: Any, + **kwargs: Any, + ) -> None: + """Draw text.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(kwargs.get("font_size")) + + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + embedded_color, + ) + + def getink(fill: _Ink | None) -> int: + ink, fill_ink = self._getink(fill) + if ink is None: + assert fill_ink is not None + return fill_ink + return ink + + def draw_text(ink: int, stroke_width: float = 0) -> None: + mode = self.fontmode + if stroke_width == 0 and embedded_color: + mode = "RGBA" + coord = [] + for i in range(2): + coord.append(int(xy[i])) + start = (math.modf(xy[0])[0], math.modf(xy[1])[0]) + try: + mask, offset = font.getmask2( # type: ignore[union-attr,misc] + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + *args, + **kwargs, + ) + coord = [coord[0] + offset[0], coord[1] + offset[1]] + except AttributeError: + try: + mask = font.getmask( # type: ignore[misc] + text, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start=start, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if mode == "RGBA": + # font.getmask2(mode="RGBA") returns color in RGB bands and mask in A + # extract mask and set text alpha + color, mask = mask, mask.getband(3) + ink_alpha = struct.pack("i", ink)[3] + color.fillband(3, ink_alpha) + x, y = coord + if self.im is not None: + self.im.paste( + color, (x, y, x + mask.size[0], y + mask.size[1]), mask + ) + else: + self.draw.draw_bitmap(coord, mask, ink) + + ink = getink(fill) + if ink is not None: + stroke_ink = None + if stroke_width: + stroke_ink = getink(stroke_fill) if stroke_fill is not None else ink + + if stroke_ink is not None: + # Draw stroked text + draw_text(stroke_ink, stroke_width) + + # Draw normal text + draw_text(ink, 0) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy: tuple[float, float], + text: AnyStr, + fill: _Ink | None = None, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + stroke_fill: _Ink | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> None: + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + widths = [] + max_width: float = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, font, direction=direction, features=features, language=language + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + embedded_color=embedded_color, + ) + top += line_spacing + + def textlength( + self, + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> float: + """Get the length of a given string, in pixels with 1/64 precision.""" + if self._multiline_check(text): + msg = "can't measure length of multiline text" + raise ValueError(msg) + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + mode = "RGBA" if embedded_color else self.fontmode + return font.getlength(text, mode, direction, features, language) + + def textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + """Get the bounding box of a given string, in pixels.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + if self._multiline_check(text): + return self.multiline_textbbox( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + ) + + mode = "RGBA" if embedded_color else self.fontmode + bbox = font.getbbox( + text, mode, direction, features, language, stroke_width, anchor + ) + return bbox[0] + xy[0], bbox[1] + xy[1], bbox[2] + xy[0], bbox[3] + xy[1] + + def multiline_textbbox( + self, + xy: tuple[float, float], + text: AnyStr, + font: ( + ImageFont.ImageFont + | ImageFont.FreeTypeFont + | ImageFont.TransposedFont + | None + ) = None, + anchor: str | None = None, + spacing: float = 4, + align: str = "left", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + embedded_color: bool = False, + *, + font_size: float | None = None, + ) -> tuple[float, float, float, float]: + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + if font is None: + font = self._getfont(font_size) + + widths = [] + max_width: float = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, + font, + direction=direction, + features=features, + language=language, + embedded_color=embedded_color, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + bbox: tuple[float, float, float, float] | None = None + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + bbox_line = self.textbbox( + (left, top), + line, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + embedded_color=embedded_color, + ) + if bbox is None: + bbox = bbox_line + else: + bbox = ( + min(bbox[0], bbox_line[0]), + min(bbox[1], bbox_line[1]), + max(bbox[2], bbox_line[2]), + max(bbox[3], bbox_line[3]), + ) + + top += line_spacing + + if bbox is None: + return xy[0], xy[1], xy[0], xy[1] + return bbox + + +def Draw(im: Image.Image, mode: str | None = None) -> ImageDraw: + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return getattr(im, "getdraw")(mode) + except AttributeError: + return ImageDraw(im, mode) + + +def getdraw( + im: Image.Image | None = None, hints: list[str] | None = None +) -> tuple[ImageDraw2.Draw | None, ModuleType]: + """ + :param im: The image to draw in. + :param hints: An optional list of hints. Deprecated. + :returns: A (drawing context, drawing resource factory) tuple. + """ + if hints is not None: + deprecate("'hints' parameter", 12) + from . import ImageDraw2 + + draw = ImageDraw2.Draw(im) if im is not None else None + return draw, ImageDraw2 + + +def floodfill( + image: Image.Image, + xy: tuple[int, int], + value: float | tuple[int, ...], + border: float | tuple[int, ...] | None = None, + thresh: float = 0, +) -> None: + """ + .. warning:: This method is experimental. + + Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of + non-homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + # amended by yo1995 @20180806 + pixel = image.load() + assert pixel is not None + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = {(x, y)} + # use a set to keep record of current and previous edge pixels + # to reduce memory consumption + full_edge = set() + while edge: + new_edge = set() + for x, y in edge: # 4 adjacent method + for s, t in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + # If already processed, or if a coordinate is negative, skip + if (s, t) in full_edge or s < 0 or t < 0: + continue + try: + p = pixel[s, t] + except (ValueError, IndexError): + pass + else: + full_edge.add((s, t)) + if border is None: + fill = _color_diff(p, background) <= thresh + else: + fill = p not in (value, border) + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _compute_regular_polygon_vertices( + bounding_circle: Sequence[Sequence[float] | float], n_sides: int, rotation: float +) -> list[tuple[float, float]]: + """ + Generate a list of vertices for a 2D regular polygon. + + :param bounding_circle: The bounding circle is a sequence defined + by a point and radius. The polygon is inscribed in this circle. + (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``) + :param n_sides: Number of sides + (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon) + :param rotation: Apply an arbitrary rotation to the polygon + (e.g. ``rotation=90``, applies a 90 degree rotation) + :return: List of regular polygon vertices + (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``) + + How are the vertices computed? + 1. Compute the following variables + - theta: Angle between the apothem & the nearest polygon vertex + - side_length: Length of each polygon edge + - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle) + - polygon_radius: Polygon radius (last element of bounding_circle) + - angles: Location of each polygon vertex in polar grid + (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0]) + + 2. For each angle in angles, get the polygon vertex at that angle + The vertex is computed using the equation below. + X= xcos(φ) + ysin(φ) + Y= −xsin(φ) + ycos(φ) + + Note: + φ = angle in degrees + x = 0 + y = polygon_radius + + The formula above assumes rotation around the origin. + In our case, we are rotating around the centroid. + To account for this, we use the formula below + X = xcos(φ) + ysin(φ) + centroid_x + Y = −xsin(φ) + ycos(φ) + centroid_y + """ + # 1. Error Handling + # 1.1 Check `n_sides` has an appropriate value + if not isinstance(n_sides, int): + msg = "n_sides should be an int" # type: ignore[unreachable] + raise TypeError(msg) + if n_sides < 3: + msg = "n_sides should be an int > 2" + raise ValueError(msg) + + # 1.2 Check `bounding_circle` has an appropriate value + if not isinstance(bounding_circle, (list, tuple)): + msg = "bounding_circle should be a sequence" + raise TypeError(msg) + + if len(bounding_circle) == 3: + if not all(isinstance(i, (int, float)) for i in bounding_circle): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + *centroid, polygon_radius = cast(list[float], list(bounding_circle)) + elif len(bounding_circle) == 2 and isinstance(bounding_circle[0], (list, tuple)): + if not all( + isinstance(i, (int, float)) for i in bounding_circle[0] + ) or not isinstance(bounding_circle[1], (int, float)): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + if len(bounding_circle[0]) != 2: + msg = "bounding_circle centre should contain 2D coordinates (e.g. (x, y))" + raise ValueError(msg) + + centroid = cast(list[float], list(bounding_circle[0])) + polygon_radius = cast(float, bounding_circle[1]) + else: + msg = ( + "bounding_circle should contain 2D coordinates " + "and a radius (e.g. (x, y, r) or ((x, y), r) )" + ) + raise ValueError(msg) + + if polygon_radius <= 0: + msg = "bounding_circle radius should be > 0" + raise ValueError(msg) + + # 1.3 Check `rotation` has an appropriate value + if not isinstance(rotation, (int, float)): + msg = "rotation should be an int or float" # type: ignore[unreachable] + raise ValueError(msg) + + # 2. Define Helper Functions + def _apply_rotation(point: list[float], degrees: float) -> tuple[float, float]: + return ( + round( + point[0] * math.cos(math.radians(360 - degrees)) + - point[1] * math.sin(math.radians(360 - degrees)) + + centroid[0], + 2, + ), + round( + point[1] * math.cos(math.radians(360 - degrees)) + + point[0] * math.sin(math.radians(360 - degrees)) + + centroid[1], + 2, + ), + ) + + def _compute_polygon_vertex(angle: float) -> tuple[float, float]: + start_point = [polygon_radius, 0] + return _apply_rotation(start_point, angle) + + def _get_angles(n_sides: int, rotation: float) -> list[float]: + angles = [] + degrees = 360 / n_sides + # Start with the bottom left polygon vertex + current_angle = (270 - 0.5 * degrees) + rotation + for _ in range(0, n_sides): + angles.append(current_angle) + current_angle += degrees + if current_angle > 360: + current_angle -= 360 + return angles + + # 3. Variable Declarations + angles = _get_angles(n_sides, rotation) + + # 4. Compute Vertices + return [_compute_polygon_vertex(angle) for angle in angles] + + +def _color_diff( + color1: float | tuple[int, ...], color2: float | tuple[int, ...] +) -> float: + """ + Uses 1-norm distance to calculate difference between two values. + """ + first = color1 if isinstance(color1, tuple) else (color1,) + second = color2 if isinstance(color2, tuple) else (color2,) + + return sum(abs(first[i] - second[i]) for i in range(0, len(second))) diff --git a/libs/PIL/ImageDraw2.py b/libs/PIL/ImageDraw2.py new file mode 100644 index 0000000..3d68658 --- /dev/null +++ b/libs/PIL/ImageDraw2.py @@ -0,0 +1,243 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +""" +(Experimental) WCK-style drawing interface operations + +.. seealso:: :py:mod:`PIL.ImageDraw` +""" +from __future__ import annotations + +from typing import Any, AnyStr, BinaryIO + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath +from ._typing import Coords, StrOrBytesPath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color: str, width: int = 1, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color: str, opacity: int = 255) -> None: + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__( + self, color: str, file: StrOrBytesPath | BinaryIO, size: float = 12 + ) -> None: + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + + +class Draw: + """ + (Experimental) WCK-style drawing interface + """ + + def __init__( + self, + image: Image.Image | str, + size: tuple[int, int] | list[int] | None = None, + color: float | tuple[float, ...] | str | None = None, + ) -> None: + if isinstance(image, str): + if size is None: + msg = "If image argument is mode string, size must be a list or tuple" + raise ValueError(msg) + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform: tuple[float, float, float, float, float, float] | None = None + + def flush(self) -> Image.Image: + return self.image + + def render( + self, + op: str, + xy: Coords, + pen: Pen | Brush | None, + brush: Brush | Pen | None = None, + **kwargs: Any, + ) -> None: + # handle color arguments + outline = fill = None + width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + # render the item + if op in ("arc", "line"): + kwargs.setdefault("fill", outline) + else: + kwargs.setdefault("fill", fill) + kwargs.setdefault("outline", outline) + if op == "line": + kwargs.setdefault("width", width) + getattr(self.draw, op)(xy, **kwargs) + + def settransform(self, offset: tuple[float, float]) -> None: + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Draws an arc (a portion of a circle outline) between the start and end + angles, inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc` + """ + self.render("arc", xy, pen, *options, start=start, end=end) + + def chord( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points + with a straight line. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord` + """ + self.render("chord", xy, pen, *options, start=start, end=end) + + def ellipse(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, pen, *options) + + def line(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, pen, *options) + + def pieslice( + self, + xy: Coords, + pen: Pen | Brush | None, + start: float, + end: float, + *options: Any, + ) -> None: + """ + Same as arc, but also draws straight lines between the end points and the + center of the bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice` + """ + self.render("pieslice", xy, pen, *options, start=start, end=end) + + def polygon(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a polygon. + + The polygon outline consists of straight lines between the given + coordinates, plus a straight line between the last and the first + coordinate. + + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.polygon` + """ + self.render("polygon", xy, pen, *options) + + def rectangle(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None: + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, pen, *options) + + def text(self, xy: tuple[float, float], text: AnyStr, font: Font) -> None: + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textbbox( + self, xy: tuple[float, float], text: AnyStr, font: Font + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text. + + :return: ``(left, top, right, bottom)`` bounding box + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox` + """ + if self.transform: + path = ImagePath.Path(xy) + path.transform(self.transform) + xy = path + return self.draw.textbbox(xy, text, font=font.font) + + def textlength(self, text: AnyStr, font: Font) -> float: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textlength` + """ + return self.draw.textlength(text, font=font.font) diff --git a/libs/PIL/ImageEnhance.py b/libs/PIL/ImageEnhance.py new file mode 100644 index 0000000..0e7e6dd --- /dev/null +++ b/libs/PIL/ImageEnhance.py @@ -0,0 +1,113 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + image: Image.Image + degenerate: Image.Image + + def enhance(self, factor: float) -> Image.Image: + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + if self.intermediate_mode != image.mode: + image = image.convert(self.intermediate_mode).convert(image.mode) + self.degenerate = image + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid gray image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + if image.mode != "L": + image = image.convert("L") + mean = int(ImageStat.Stat(image).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean) + if self.degenerate.mode != self.image.mode: + self.degenerate = self.degenerate.convert(self.image.mode) + + if "A" in self.image.getbands(): + self.degenerate.putalpha(self.image.getchannel("A")) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + + def __init__(self, image: Image.Image) -> None: + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/libs/PIL/ImageFile.py b/libs/PIL/ImageFile.py new file mode 100644 index 0000000..5d0f87a --- /dev/null +++ b/libs/PIL/ImageFile.py @@ -0,0 +1,832 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import io +import itertools +import os +import struct +import sys +from typing import IO, TYPE_CHECKING, Any, NamedTuple, cast + +from . import Image +from ._deprecate import deprecate +from ._util import is_path + +if TYPE_CHECKING: + from ._typing import StrOrBytesPath + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False +"""Whether or not to load truncated image files. User code may change this.""" + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} +""" +Dict of known error codes returned from :meth:`.PyDecoder.decode`, +:meth:`.PyEncoder.encode` :meth:`.PyEncoder.encode_to_pyfd` and +:meth:`.PyEncoder.encode_to_file`. +""" + + +# +# -------------------------------------------------------------------- +# Helpers + + +def _get_oserror(error: int, *, encoder: bool) -> OSError: + try: + msg = Image.core.getcodecstatus(error) + except AttributeError: + msg = ERRORS.get(error) + if not msg: + msg = f"{'encoder' if encoder else 'decoder'} error {error}" + msg += f" when {'writing' if encoder else 'reading'} image file" + return OSError(msg) + + +def raise_oserror(error: int) -> OSError: + deprecate( + "raise_oserror", + 12, + action="It is only useful for translating error codes returned by a codec's " + "decode() method, which ImageFile already does automatically.", + ) + raise _get_oserror(error, encoder=False) + + +def _tilesort(t: _Tile) -> int: + # sort on offset + return t[2] + + +class _Tile(NamedTuple): + codec_name: str + extents: tuple[int, int, int, int] | None + offset: int = 0 + args: tuple[Any, ...] | str | None = None + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__( + self, fp: StrOrBytesPath | IO[bytes], filename: str | bytes | None = None + ) -> None: + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype: str | None = None + + self.tile: list[_Tile] = [] + """ A list of tile descriptors """ + + self.readonly = 1 # until we know better + + self.decoderconfig: tuple[Any, ...] = () + self.decodermaxblock = MAXBLOCK + + if is_path(fp): + # filename + self.fp = open(fp, "rb") + self.filename = os.fspath(fp) + self._exclusive_fp = True + else: + # stream + self.fp = cast(IO[bytes], fp) + self.filename = filename if filename is not None else "" + # can be overridden + self._exclusive_fp = False + + try: + try: + self._open() + except ( + IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error, + ) as v: + raise SyntaxError(v) from v + + if not self.mode or self.size[0] <= 0 or self.size[1] <= 0: + msg = "not identified by this driver" + raise SyntaxError(msg) + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def _open(self) -> None: + pass + + def get_format_mimetype(self) -> str | None: + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + return None + + def __setstate__(self, state: list[Any]) -> None: + self.tile = [] + super().__setstate__(state) + + def verify(self) -> None: + """Check file integrity""" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self) -> Image.core.PixelAccess | None: + """Load image data based on tile list""" + + if not self.tile and self._im is None: + msg = "cannot load this image" + raise OSError(msg) + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map: mmap.mmap | None = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, "pypy_version_info") + + readonly = 0 + + # look for read/seek overrides + if hasattr(self, "load_read"): + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + else: + read = self.fp.read + + if hasattr(self, "load_seek"): + seek = self.load_seek + use_mmap = False + else: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if isinstance(args, str): + args = (args, 0, 1) + if ( + decoder_name == "raw" + and isinstance(args, tuple) + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + # use mmap, if possible + import mmap + + with open(self.filename) as fp: + self.map = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + if offset + self.size[1] * args[1] > self.map.size(): + msg = "buffer is not large enough" + raise OSError(msg) + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, offset, args + ) + readonly = 1 + # After trashing self.im, + # we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, OSError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = getattr(self, "tile_prefix", b"") + + # Remove consecutive duplicates that only differ by their offset + self.tile = [ + list(tiles)[-1] + for _, tiles in itertools.groupby( + self.tile, lambda tile: (tile[0], tile[1], tile[3]) + ) + ] + for decoder_name, extents, offset, args in self.tile: + seek(offset) + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + err_code = decoder.decode(b"")[1] + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error) as e: + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = "image file is truncated" + raise OSError(msg) from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = ( + "image file is truncated " + f"({len(b)} bytes not processed)" + ) + raise OSError(msg) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise _get_oserror(err_code, encoder=False) + + return Image.Image.load(self) + + def load_prepare(self) -> None: + # create image memory if necessary + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self) -> None: + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos: int) -> None: + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, read_bytes: int) -> bytes: + # pass + + def _seek_check(self, frame: int) -> bool: + if ( + frame < self._min_frame + # Only check upper limit on frames if additional seek operations + # are not required to do so + or ( + not (hasattr(self, "_n_frames") and self._n_frames is None) + and frame >= getattr(self, "n_frames") + self._min_frame + ) + ): + msg = "attempt to seek outside sequence" + raise EOFError(msg) + + return self.tell() != frame + + +class StubHandler: + def open(self, im: StubImageFile) -> None: + pass + + @abc.abstractmethod + def load(self, im: StubImageFile) -> Image.Image: + pass + + +class StubImageFile(ImageFile): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + def _open(self) -> None: + msg = "StubImageFile subclass must implement _open" + raise NotImplementedError(msg) + + def load(self) -> Image.core.PixelAccess | None: + loader = self._load() + if loader is None: + msg = f"cannot find loader for this {self.format} file" + raise OSError(msg) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ # type: ignore[assignment] + self.__dict__ = image.__dict__ + return image.load() + + def _load(self) -> StubHandler | None: + """(Hook) Find actual image loader.""" + msg = "StubImageFile subclass must implement _load" + raise NotImplementedError(msg) + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image: Image.Image | None = None + data: bytes | None = None + decoder: Image.core.ImagingDecoder | PyDecoder | None = None + offset = 0 + finished = 0 + + def reset(self) -> None: + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data: bytes) -> None: + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception OSError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise _get_oserror(e, encoder=False) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except OSError: + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder(im.mode, d, a, im.decoderconfig) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset :] + self.offset = 0 + + self.image = im + + def __enter__(self) -> Parser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> Image.Image: + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception OSError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + msg = "image was incomplete" + raise OSError(msg) + if not self.image: + msg = "cannot parse this image" + raise OSError(msg) + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], tile: list[_Tile], bufsize: int = 0) -> None: + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + try: + fh = fp.fileno() + fp.flush() + _encode_tile(im, fp, tile, bufsize, fh) + except (AttributeError, io.UnsupportedOperation) as exc: + _encode_tile(im, fp, tile, bufsize, None, exc) + if hasattr(fp, "flush"): + fp.flush() + + +def _encode_tile( + im: Image.Image, + fp: IO[bytes], + tile: list[_Tile], + bufsize: int, + fh: int | None, + exc: BaseException | None = None, +) -> None: + for encoder_name, extents, offset, args in tile: + if offset > 0: + fp.seek(offset) + encoder = Image._getencoder(im.mode, encoder_name, args, im.encoderconfig) + try: + encoder.setimage(im.im, extents) + if encoder.pushes_fd: + encoder.setfd(fp) + errcode = encoder.encode_to_pyfd()[1] + else: + if exc: + # compress to Python file-compatible object + while True: + errcode, data = encoder.encode(bufsize)[1:] + fp.write(data) + if errcode: + break + else: + # slight speedup: compress to real file object + assert fh is not None + errcode = encoder.encode_to_file(fh, bufsize) + if errcode < 0: + raise _get_oserror(errcode, encoder=True) from exc + finally: + encoder.cleanup() + + +def _safe_read(fp: IO[bytes], size: int) -> bytes: + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing size bytes of data. + + Raises an OSError if the file is truncated and the read cannot be completed + + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + data = fp.read(size) + if len(data) < size: + msg = "Truncated File Read" + raise OSError(msg) + return data + blocks: list[bytes] = [] + remaining_size = size + while remaining_size > 0: + block = fp.read(min(remaining_size, SAFEBLOCK)) + if not block: + break + blocks.append(block) + remaining_size -= len(block) + if sum(len(block) for block in blocks) < size: + msg = "Truncated File Read" + raise OSError(msg) + return b"".join(blocks) + + +class PyCodecState: + def __init__(self) -> None: + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self) -> tuple[int, int, int, int]: + return self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize + + +class PyCodec: + fd: IO[bytes] | None + + def __init__(self, mode: str, *args: Any) -> None: + self.im: Image.core.ImagingCore | None = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args: tuple[Any, ...]) -> None: + """ + Override to perform codec specific initialization + + :param args: Tuple of arg items from the tile entry + :returns: None + """ + self.args = args + + def cleanup(self) -> None: + """ + Override to perform codec specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd: IO[bytes]) -> None: + """ + Called from ImageFile to set the Python file-like object + + :param fd: A Python file-like object + :returns: None + """ + self.fd = fd + + def setimage( + self, + im: Image.core.ImagingCore, + extents: tuple[int, int, int, int] | None = None, + ) -> None: + """ + Called from ImageFile to set the core output image for the codec + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + msg = "Size cannot be negative" + raise ValueError(msg) + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + msg = "Tile cannot extend outside image" + raise ValueError(msg) + + +class PyDecoder(PyCodec): + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the :meth:`decode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pulls_fd = False + + @property + def pulls_fd(self) -> bool: + return self._pulls_fd + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. + :returns: A tuple of ``(bytes consumed, errcode)``. + If finished with decoding return -1 for the bytes consumed. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base decoder" + raise NotImplementedError(msg) + + def set_as_raw( + self, data: bytes, rawmode: str | None = None, extra: tuple[Any, ...] = () + ) -> None: + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. + If not specified, it will default to the mode of the image + :param extra: Extra arguments for the decoder. + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", rawmode, extra) + assert self.im is not None + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + +class PyEncoder(PyCodec): + """ + Python implementation of a format encoder. Override this class and + add the decoding logic in the :meth:`encode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pushes_fd = False + + @property + def pushes_fd(self) -> bool: + return self._pushes_fd + + def encode(self, bufsize: int) -> tuple[int, int, bytes]: + """ + Override to perform the encoding process. + + :param bufsize: Buffer size. + :returns: A tuple of ``(bytes encoded, errcode, bytes)``. + If finished with encoding return 1 for the error code. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + msg = "unavailable in base encoder" + raise NotImplementedError(msg) + + def encode_to_pyfd(self) -> tuple[int, int]: + """ + If ``pushes_fd`` is ``True``, then this method will be used, + and ``encode()`` will only be called once. + + :returns: A tuple of ``(bytes consumed, errcode)``. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + if not self.pushes_fd: + return 0, -8 # bad configuration + bytes_consumed, errcode, data = self.encode(0) + if data: + assert self.fd is not None + self.fd.write(data) + return bytes_consumed, errcode + + def encode_to_file(self, fh: int, bufsize: int) -> int: + """ + :param fh: File handle. + :param bufsize: Buffer size. + + :returns: If finished successfully, return 0. + Otherwise, return an error code. Err codes are from + :data:`.ImageFile.ERRORS`. + """ + errcode = 0 + while errcode == 0: + status, errcode, buf = self.encode(bufsize) + if status > 0: + os.write(fh, buf[status:]) + return errcode diff --git a/libs/PIL/ImageFilter.py b/libs/PIL/ImageFilter.py new file mode 100644 index 0000000..b350e56 --- /dev/null +++ b/libs/PIL/ImageFilter.py @@ -0,0 +1,605 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import functools +from collections.abc import Sequence +from types import ModuleType +from typing import TYPE_CHECKING, Any, Callable, cast + +if TYPE_CHECKING: + from . import _imaging + from ._typing import NumpyArray + + +class Filter: + @abc.abstractmethod + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + filterargs: tuple[Any, ...] + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. This only supports 3x3 and 5x5 integer and floating + point kernels. + + Kernels can only be applied to "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). This must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. The kernel will be flipped + vertically before being applied to the image. + :param scale: Scale factor. If given, the result for each pixel is divided by this + value. The default is the sum of the kernel weights. + :param offset: Offset. If given, this value is added to the result, after it has + been divided by the scale factor. + """ + + name = "Kernel" + + def __init__( + self, + size: tuple[int, int], + kernel: Sequence[float], + scale: float | None = None, + offset: float = 0, + ) -> None: + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a + b, kernel) + if size[0] * size[1] != len(kernel): + msg = "not enough coefficients in kernel" + raise ValueError(msg) + self.filterargs = size, scale, offset, kernel + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the ``rank``'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + + name = "Rank" + + def __init__(self, size: int, rank: int) -> None: + self.size = size + self.rank = rank + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + image = image.expand(self.size // 2, self.size // 2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Median" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = size * size // 2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Min" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Max" + + def __init__(self, size: int = 3) -> None: + self.size = size + self.rank = size * size - 1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + + name = "Mode" + + def __init__(self, size: int = 3) -> None: + self.size = size + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Blurs the image with a sequence of extended box filters, which + approximates a Gaussian kernel. For details on accuracy see + + + :param radius: Standard deviation of the Gaussian kernel. Either a sequence of two + numbers for x and y, or a single number for both. + """ + + name = "GaussianBlur" + + def __init__(self, radius: float | Sequence[float] = 2) -> None: + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.gaussian_blur(xy) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in a direction. Either a sequence of two numbers for + x and y, or a single number for both. + + Radius 0 does not blur, returns an identical image. + Radius 1 takes 1 pixel in each direction, i.e. 9 pixels in total. + """ + + name = "BoxBlur" + + def __init__(self, radius: float | Sequence[float]) -> None: + xy = radius if isinstance(radius, (tuple, list)) else (radius, radius) + if xy[0] < 0 or xy[1] < 0: + msg = "radius must be >= 0" + raise ValueError(msg) + self.radius = radius + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + xy = self.radius + if isinstance(xy, (int, float)): + xy = (xy, xy) + if xy == (0, 0): + return image.copy() + return image.box_blur(xy) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ + + name = "UnsharpMask" + + def __init__( + self, radius: float = 2, percent: int = 150, threshold: int = 3 + ) -> None: + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + # fmt: off + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class CONTOUR(BuiltinFilter): + name = "Contour" + # fmt: off + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class DETAIL(BuiltinFilter): + name = "Detail" + # fmt: off + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0, + ) + # fmt: on + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + # fmt: off + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1, + ) + # fmt: on + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1, + ) + # fmt: on + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + # fmt: off + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0, + ) + # fmt: on + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + # fmt: off + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2, + ) + # fmt: on + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + # fmt: off + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1, + ) + # fmt: on + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + # fmt: off + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + + name = "Color 3D LUT" + + def __init__( + self, + size: int | tuple[int, int, int], + table: Sequence[float] | Sequence[Sequence[int]] | NumpyArray, + channels: int = 3, + target_mode: str | None = None, + **kwargs: bool, + ) -> None: + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get("_copy_table", True) + items = size[0] * size[1] * size[2] + wrong_size = False + + numpy: ModuleType | None = None + if hasattr(table, "shape"): + try: + import numpy + except ImportError: + pass + + if numpy and isinstance(table, numpy.ndarray): + numpy_table: NumpyArray = table + if copy_table: + numpy_table = numpy_table.copy() + + if numpy_table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = numpy_table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + raw_table = cast(Sequence[Sequence[int]], table) + flat_table: list[int] = [] + for pixel in raw_table: + if len(pixel) != channels: + msg = ( + "The elements of the table should " + f"have a length of {channels}." + ) + raise ValueError(msg) + flat_table.extend(pixel) + table = flat_table + + if wrong_size or len(table) != items * channels: + msg = ( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + f"Table should be: {channels}x{size[0]}x{size[1]}x{size[2]}. " + f"Actual length: {len(table)}" + ) + raise ValueError(msg) + self.table = table + + @staticmethod + def _check_size(size: Any) -> tuple[int, int, int]: + try: + _, _, _ = size + except ValueError as e: + msg = "Size should be either an integer or a tuple of three integers." + raise ValueError(msg) from e + except TypeError: + size = (size, size, size) + size = tuple(int(x) for x in size) + for size_1d in size: + if not 2 <= size_1d <= 65: + msg = "Size should be in [2, 65] range." + raise ValueError(msg) + return size + + @classmethod + def generate( + cls, + size: int | tuple[int, int, int], + callback: Callable[[float, float, float], tuple[float, ...]], + channels: int = 3, + target_mode: str | None = None, + ) -> Color3DLUT: + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size_1d, size_2d, size_3d = cls._check_size(size) + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + + table: list[float] = [0] * (size_1d * size_2d * size_3d * channels) + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + table[idx_out : idx_out + channels] = callback( + r / (size_1d - 1), g / (size_2d - 1), b / (size_3d - 1) + ) + idx_out += channels + + return cls( + (size_1d, size_2d, size_3d), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform( + self, + callback: Callable[..., tuple[float, ...]], + with_normals: bool = False, + channels: int | None = None, + target_mode: str | None = None, + ) -> Color3DLUT: + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + ch_in = self.channels + ch_out = channels or ch_in + size_1d, size_2d, size_3d = self.size + + table: list[float] = [0] * (size_1d * size_2d * size_3d * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size_1d - 1), + g / (size_2d - 1), + b / (size_3d - 1), + *values, + ) + else: + values = callback(*values) + table[idx_out : idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)( + self.size, + table, + channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False, + ) + + def __repr__(self) -> str: + r = [ + f"{self.__class__.__name__} from {self.table.__class__.__name__}", + "size={:d}x{:d}x{:d}".format(*self.size), + f"channels={self.channels:d}", + ] + if self.mode: + r.append(f"target_mode={self.mode}") + return "<{}>".format(" ".join(r)) + + def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore: + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.Resampling.BILINEAR, + self.channels, + self.size[0], + self.size[1], + self.size[2], + self.table, + ) diff --git a/libs/PIL/ImageFont.py b/libs/PIL/ImageFont.py new file mode 100644 index 0000000..d8c2655 --- /dev/null +++ b/libs/PIL/ImageFont.py @@ -0,0 +1,1338 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from __future__ import annotations + +import base64 +import os +import sys +import warnings +from enum import IntEnum +from io import BytesIO +from types import ModuleType +from typing import IO, TYPE_CHECKING, Any, BinaryIO, TypedDict, cast + +from . import Image, features +from ._typing import StrOrBytesPath +from ._util import DeferredError, is_path + +if TYPE_CHECKING: + from . import ImageFile + from ._imaging import ImagingFont + from ._imagingft import Font + + +class Axis(TypedDict): + minimum: int | None + default: int | None + maximum: int | None + name: bytes | None + + +class Layout(IntEnum): + BASIC = 0 + RAQM = 1 + + +MAX_STRING_LENGTH = 1_000_000 + + +core: ModuleType | DeferredError +try: + from . import _imagingft as core +except ImportError as ex: + core = DeferredError.new(ex) + + +def _string_length_check(text: str | bytes | bytearray) -> None: + if MAX_STRING_LENGTH is not None and len(text) > MAX_STRING_LENGTH: + msg = "too many characters in string" + raise ValueError(msg) + + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + + +class ImageFont: + """PIL font wrapper""" + + font: ImagingFont + + def _load_pilfont(self, filename: str) -> None: + with open(filename, "rb") as fp: + image: ImageFile.ImageFile | None = None + root = os.path.splitext(filename)[0] + + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = root + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + + msg = f"cannot find glyph data file {root}.{{gif|pbm|png}}" + raise OSError(msg) + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file: IO[bytes], image: Image.Image) -> None: + # read PILfont header + if file.readline() != b"PILfont\n": + msg = "Not a PILfont file" + raise SyntaxError(msg) + file.readline().split(b";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == b"DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256 * 20) + + # check image + if image.mode not in ("1", "L"): + msg = "invalid font image mode" + raise TypeError(msg) + + image.load() + + self.font = Image.core.font(image.im, data) + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + _string_length_check(text) + Image._decompression_bomb_check(self.font.getsize(text)) + return self.font.getmask(text, mode) + + def getbbox( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> tuple[int, int, int, int]: + """ + Returns bounding box (in pixels) of given text. + + .. versionadded:: 9.2.0 + + :param text: Text to render. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return 0, 0, width, height + + def getlength( + self, text: str | bytes | bytearray, *args: Any, **kwargs: Any + ) -> int: + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. versionadded:: 9.2.0 + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return width + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + """FreeType font wrapper (requires _imagingft service)""" + + font: Font + font_bytes: bytes + + def __init__( + self, + font: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, + ) -> None: + # FIXME: use service provider instead + + if isinstance(core, DeferredError): + raise core.ex + + if size <= 0: + msg = f"font size must be greater than 0, not {size}" + raise ValueError(msg) + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + try: + from packaging.version import parse as parse_version + except ImportError: + pass + else: + if freetype_version := features.version_module("freetype2"): + if parse_version(freetype_version) < parse_version("2.9.1"): + warnings.warn( + "Support for FreeType 2.9.0 is deprecated and will be removed " + "in Pillow 12 (2025-10-15). Please upgrade to FreeType 2.9.1 " + "or newer, preferably FreeType 2.10.4 which fixes " + "CVE-2020-15999.", + DeprecationWarning, + ) + + if layout_engine not in (Layout.BASIC, Layout.RAQM): + layout_engine = Layout.BASIC + if core.HAVE_RAQM: + layout_engine = Layout.RAQM + elif layout_engine == Layout.RAQM and not core.HAVE_RAQM: + warnings.warn( + "Raqm layout was requested, but Raqm is not available. " + "Falling back to basic layout." + ) + layout_engine = Layout.BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f: IO[bytes]) -> None: + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if is_path(font): + font = os.fspath(font) + if sys.platform == "win32": + font_bytes_path = font if isinstance(font, bytes) else font.encode() + try: + font_bytes_path.decode("ascii") + except UnicodeDecodeError: + # FreeType cannot load fonts with non-ASCII characters on Windows + # So load it into memory first + with open(font, "rb") as f: + load_from_bytes(f) + return + self.font = core.getfont( + font, size, index, encoding, layout_engine=layout_engine + ) + else: + load_from_bytes(cast(IO[bytes], font)) + + def __getstate__(self) -> list[Any]: + return [self.path, self.size, self.index, self.encoding, self.layout_engine] + + def __setstate__(self, state: list[Any]) -> None: + path, size, index, encoding, layout_engine = state + FreeTypeFont.__init__(self, path, size, index, encoding, layout_engine) + + def getname(self) -> tuple[str | None, str | None]: + """ + :return: A tuple of the font family (e.g. Helvetica) and the font style + (e.g. Bold) + """ + return self.font.family, self.font.style + + def getmetrics(self) -> tuple[int, int]: + """ + :return: A tuple of the font ascent (the distance from the baseline to + the highest outline point) and descent (the distance from the + baseline to the lowest outline point, a negative value) + """ + return self.font.ascent, self.font.descent + + def getlength( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + ) -> float: + """ + Returns length (in pixels with 1/64 precision) of given text when rendered + in font with provided direction, features, and language. + + This is the amount by which following text should be offset. + Text bounding box may extend past the length in some fonts, + e.g. when using italics or accents. + + The result is returned as a float; it is a whole number if using basic layout. + + Note that the sum of two lengths may not equal the length of a concatenated + string due to kerning. If you need to adjust for kerning, include the following + character and subtract its length. + + For example, instead of :: + + hello = font.getlength("Hello") + world = font.getlength("World") + hello_world = hello + world # not adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # may fail + + use :: + + hello = font.getlength("HelloW") - font.getlength("W") # adjusted for kerning + world = font.getlength("World") + hello_world = hello + world # adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # True + + or disable kerning with (requires libraqm) :: + + hello = draw.textlength("Hello", font, features=["-kern"]) + world = draw.textlength("World", font, features=["-kern"]) + hello_world = hello + world # kerning is disabled, no need to adjust + assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) + + .. versionadded:: 8.0.0 + + :param text: Text to measure. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :return: Either width for horizontal text, or height for vertical text. + """ + _string_length_check(text) + return self.font.getlength(text, mode, direction, features, language) / 64 + + def getbbox( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ) -> tuple[float, float, float, float]: + """ + Returns bounding box (in pixels) of given text relative to given anchor + when rendered in font with provided direction, features, and language. + + Use :py:meth:`getlength()` to get the offset of following text with + 1/64 pixel precision. The bounding box includes extra margins for + some fonts, e.g. italics or accents. + + .. versionadded:: 8.0.0 + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :param stroke_width: The width of the text stroke. + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + size, offset = self.font.getsize( + text, mode, direction, features, language, anchor + ) + left, top = offset[0] - stroke_width, offset[1] - stroke_width + width, height = size[0] + 2 * stroke_width, size[1] + 2 * stroke_width + return left, top, left + width, top + height + + def getmask( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + ) -> Image.core.ImagingCore: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + )[0] + + def getmask2( + self, + text: str | bytes, + mode: str = "", + direction: str | None = None, + features: list[str] | None = None, + language: str | None = None, + stroke_width: float = 0, + anchor: str | None = None, + ink: int = 0, + start: tuple[float, float] | None = None, + *args: Any, + **kwargs: Any, + ) -> tuple[Image.core.ImagingCore, tuple[int, int]]: + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left, + specifically ``la`` for horizontal text and ``lt`` for + vertical text. See :ref:`text-anchors` for details. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: A tuple of an internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module, and the text offset, the + gap between the starting coordinate and the first marking + """ + _string_length_check(text) + if start is None: + start = (0, 0) + + def fill(width: int, height: int) -> Image.core.ImagingCore: + size = (width, height) + Image._decompression_bomb_check(size) + return Image.core.fill("RGBA" if mode == "RGBA" else "L", size) + + return self.font.render( + text, + fill, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start[0], + start[1], + ) + + def font_variant( + self, + font: StrOrBytesPath | BinaryIO | None = None, + size: float | None = None, + index: int | None = None, + encoding: str | None = None, + layout_engine: Layout | None = None, + ) -> FreeTypeFont: + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + if font is None: + try: + font = BytesIO(self.font_bytes) + except AttributeError: + font = self.path + return FreeTypeFont( + font=font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=layout_engine or self.layout_engine, + ) + + def get_variation_names(self) -> list[bytes]: + """ + :returns: A list of the named styles in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + names = self.font.getvarnames() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name: str | bytes) -> None: + """ + :param name: The name of the style. + :exception OSError: If the font is not a variation font. + """ + names = self.get_variation_names() + if not isinstance(name, bytes): + name = name.encode() + index = names.index(name) + 1 + + if index == getattr(self, "_last_variation_index", None): + # When the same name is set twice in a row, + # there is an 'unknown freetype error' + # https://savannah.nongnu.org/bugs/?56186 + return + self._last_variation_index = index + + self.font.setvarname(index) + + def get_variation_axes(self) -> list[Axis]: + """ + :returns: A list of the axes in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + axes = self.font.getvaraxes() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + for axis in axes: + if axis["name"]: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes: list[float]) -> None: + """ + :param axes: A list of values for each axis. + :exception OSError: If the font is not a variation font. + """ + try: + self.font.setvaraxes(axes) + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + + +class TransposedFont: + """Wrapper for writing rotated or mirrored text""" + + def __init__( + self, font: ImageFont | FreeTypeFont, orientation: Image.Transpose | None = None + ): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM, + Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or + Image.Transpose.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getmask( + self, text: str | bytes, mode: str = "", *args: Any, **kwargs: Any + ) -> Image.core.ImagingCore: + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + def getbbox( + self, text: str | bytes, *args: Any, **kwargs: Any + ) -> tuple[int, int, float, float]: + # TransposedFont doesn't support getmask2, move top-left point to (0, 0) + # this has no effect on ImageFont and simulates anchor="lt" for FreeTypeFont + left, top, right, bottom = self.font.getbbox(text, *args, **kwargs) + width = right - left + height = bottom - top + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + return 0, 0, height, width + return 0, 0, width, height + + def getlength(self, text: str | bytes, *args: Any, **kwargs: Any) -> float: + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + msg = "text length is undefined for text rotated by 90 or 270 degrees" + raise ValueError(msg) + return self.font.getlength(text, *args, **kwargs) + + +def load(filename: str) -> ImageFont: + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. For loading TrueType + or OpenType fonts instead, see :py:func:`~PIL.ImageFont.truetype`. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype( + font: StrOrBytesPath | BinaryIO, + size: float = 10, + index: int = 0, + encoding: str = "", + layout_engine: Layout | None = None, +) -> FreeTypeFont: + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. This function loads a font object from the given + file or file-like object, and creates a font object for a font of the given + size. For loading bitmap fonts instead, see :py:func:`~PIL.ImageFont.load` + and :py:func:`~PIL.ImageFont.load_path`. + + Pillow uses FreeType to open font files. On Windows, be aware that FreeType + will keep the file open as long as the FreeTypeFont object exists. Windows + limits the number of files that can be open in C at once to 512, so if many + fonts are opened simultaneously and that limit is approached, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + A workaround would be to copy the file(s) into memory, and open that instead. + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + If the file is not found in this filename, the loader may also + search in other directories, such as: + + * The :file:`fonts/` directory on Windows, + * :file:`/Library/Fonts/`, :file:`/System/Library/Fonts/` + and :file:`~/Library/Fonts/` on macOS. + * :file:`~/.local/share/fonts`, :file:`/usr/local/share/fonts`, + and :file:`/usr/share/fonts` on Linux; or those specified by + the ``XDG_DATA_HOME`` and ``XDG_DATA_DIRS`` environment variables + for user-installed and system-wide fonts, respectively. + + :param size: The requested size, in pixels. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Possible + encodings include (see the FreeType documentation for more + information): + + * "unic" (Unicode) + * "symb" (Microsoft Symbol) + * "ADOB" (Adobe Standard) + * "ADBE" (Adobe Expert) + * "ADBC" (Adobe Custom) + * "armn" (Apple Roman) + * "sjis" (Shift JIS) + * "gb " (PRC) + * "big5" + * "wans" (Extended Wansung) + * "joha" (Johab) + * "lat1" (Latin-1) + + This specifies the character set to use. It does not alter the + encoding of any text provided in subsequent operations. + :param layout_engine: Which layout engine to use, if available: + :attr:`.ImageFont.Layout.BASIC` or :attr:`.ImageFont.Layout.RAQM`. + If it is available, Raqm layout will be used by default. + Otherwise, basic layout will be used. + + Raqm layout is recommended for all non-English text. If Raqm layout + is not required, basic layout will have better performance. + + You can check support for Raqm layout using + :py:func:`PIL.features.check_feature` with ``feature="raqm"``. + + .. versionadded:: 4.2.0 + :return: A font object. + :exception OSError: If the file could not be read. + :exception ValueError: If the font size is not greater than zero. + """ + + def freetype(font: StrOrBytesPath | BinaryIO) -> FreeTypeFont: + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not is_path(font): + raise + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ("linux", "linux2"): + data_home = os.environ.get("XDG_DATA_HOME") + if not data_home: + # The freedesktop spec defines the following default directory for + # when XDG_DATA_HOME is unset or empty. This user-level directory + # takes precedence over system-level directories. + data_home = os.path.expanduser("~/.local/share") + xdg_dirs = [data_home] + + data_dirs = os.environ.get("XDG_DATA_DIRS") + if not data_dirs: + # Similarly, defaults are defined for the system-level directories + data_dirs = "/usr/local/share:/usr/share" + xdg_dirs += data_dirs.split(":") + + dirs += [os.path.join(xdg_dir, "fonts") for xdg_dir in xdg_dirs] + elif sys.platform == "darwin": + dirs += [ + "/Library/Fonts", + "/System/Library/Fonts", + os.path.expanduser("~/Library/Fonts"), + ] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + return freetype(os.path.join(walkroot, walkfilename)) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == ".ttf": + return freetype(fontpath) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return freetype(first_font_with_a_different_extension) + raise + + +def load_path(filename: str | bytes) -> ImageFont: + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + if not isinstance(filename, str): + filename = filename.decode("utf-8") + for directory in sys.path: + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + msg = f'cannot find font file "{filename}" in sys.path' + if os.path.exists(filename): + msg += f', did you mean ImageFont.load("{filename}") instead?' + + raise OSError(msg) + + +def load_default_imagefont() -> ImageFont: + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO( + base64.b64decode( + b""" +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +""" + ) + ), + Image.open( + BytesIO( + base64.b64decode( + b""" +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +""" + ) + ) + ), + ) + return f + + +def load_default(size: float | None = None) -> FreeTypeFont | ImageFont: + """If FreeType support is available, load a version of Aileron Regular, + https://dotcolon.net/font/aileron, with a more limited character set. + + Otherwise, load a "better than nothing" font. + + .. versionadded:: 1.1.4 + + :param size: The font size of Aileron Regular. + + .. versionadded:: 10.1.0 + + :return: A font object. + """ + if isinstance(core, ModuleType) or size is not None: + return truetype( + BytesIO( + base64.b64decode( + b""" +AAEAAAAPAIAAAwBwRkZUTYwDlUAAADFoAAAAHEdERUYAqADnAAAo8AAAACRHUE9ThhmITwAAKfgAA +AduR1NVQnHxefoAACkUAAAA4k9TLzJovoHLAAABeAAAAGBjbWFw5lFQMQAAA6gAAAGqZ2FzcP//AA +MAACjoAAAACGdseWYmRXoPAAAGQAAAHfhoZWFkE18ayQAAAPwAAAA2aGhlYQboArEAAAE0AAAAJGh +tdHjjERZ8AAAB2AAAAdBsb2NhuOexrgAABVQAAADqbWF4cAC7AEYAAAFYAAAAIG5hbWUr+h5lAAAk +OAAAA6Jwb3N0D3oPTQAAJ9wAAAEKAAEAAAABGhxJDqIhXw889QALA+gAAAAA0Bqf2QAAAADhCh2h/ +2r/LgOxAyAAAAAIAAIAAAAAAAAAAQAAA8r/GgAAA7j/av9qA7EAAQAAAAAAAAAAAAAAAAAAAHQAAQ +AAAHQAQwAFAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAfoBkAAFAAgCigJYAAAASwKKAlgAAAFeADI +BPgAAAAAFAAAAAAAAAAAAAAcAAAAAAAAAAAAAAABVS1dOAEAAIPsCAwL/GgDIA8oA5iAAAJMAAAAA +AhICsgAAACAAAwH0AAAAAAAAAU0AAADYAAAA8gA5AVMAVgJEAEYCRAA1AuQAKQKOAEAAsAArATsAZ +AE7AB4CMABVAkQAUADc/+EBEgAgANwAJQEv//sCRAApAkQAggJEADwCRAAtAkQAIQJEADkCRAArAk +QAMgJEACwCRAAxANwAJQDc/+ECRABnAkQAUAJEAEQB8wAjA1QANgJ/AB0CcwBkArsALwLFAGQCSwB +kAjcAZALGAC8C2gBkAQgAZAIgADcCYQBkAj8AZANiAGQCzgBkAuEALwJWAGQC3QAvAmsAZAJJADQC +ZAAiAqoAXgJuACADuAAaAnEAGQJFABMCTwAuATMAYgEv//sBJwAiAkQAUAH0ADIBLAApAhMAJAJjA +EoCEQAeAmcAHgIlAB4BIgAVAmcAHgJRAEoA7gA+AOn/8wIKAEoA9wBGA1cASgJRAEoCSgAeAmMASg +JnAB4BSgBKAcsAGAE5ABQCUABCAgIAAQMRAAEB4v/6AgEAAQHOABQBLwBAAPoAYAEvACECRABNA0Y +AJAItAHgBKgAcAkQAUAEsAHQAygAgAi0AOQD3ADYA9wAWAaEANgGhABYCbAAlAYMAeAGDADkA6/9q +AhsAFAIKABUB/QAVAAAAAwAAAAMAAAAcAAEAAAAAAKQAAwABAAAAHAAEAIgAAAAeABAAAwAOAH4Aq +QCrALEAtAC3ALsgGSAdICYgOiBEISL7Av//AAAAIACpAKsAsAC0ALcAuyAYIBwgJiA5IEQhIvsB// +//4/+5/7j/tP+y/7D/reBR4E/gR+A14CzfTwVxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAMEBQYHCAkKCwwNDg8QERIT +FBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMT +U5PUFFSU1RVVldYWVpbXF1eX2BhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAA +AAAAAAYnFmAAAAAABlAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2htAAAAAAAAAABrbGlqAAAAAHAAbm9 +ycwBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmACYAJgAmAD4AUgCCAMoBCgFO +AVwBcgGIAaYBvAHKAdYB6AH2AgwCIAJKAogCpgLWAw4DIgNkA5wDugPUA+gD/AQQBEYEogS8BPoFJ +gVSBWoFgAWwBcoF1gX6BhQGJAZMBmgGiga0BuIHGgdUB2YHkAeiB8AH3AfyCAoIHAgqCDoITghcCG +oIogjSCPoJKglYCXwJwgnqCgIKKApACl4Klgq8CtwLDAs8C1YLjAuyC9oL7gwMDCYMSAxgDKAMrAz +qDQoNTA1mDYQNoA2uDcAN2g3oDfYODA4iDkoOXA5sDnoOnA7EDvwAAAAFAAAAAAH0ArwAAwAGAAkA +DAAPAAAxESERAxMhExcRASELARETAfT6qv6syKr+jgFUqsiqArz9RAGLAP/+1P8B/v3VAP8BLP4CA +P8AAgA5//IAuQKyAAMACwAANyMDMwIyFhQGIiY0oE4MZk84JCQ4JLQB/v3AJDgkJDgAAgBWAeUBPA +LfAAMABwAAEyMnMxcjJzOmRgpagkYKWgHl+vr6AAAAAAIARgAAAf4CsgAbAB8AAAEHMxUjByM3Iwc +jNyM1MzcjNTM3MwczNzMHMxUrAQczAZgdZXEvOi9bLzovWmYdZXEvOi9bLzovWp9bHlsBn4w429vb +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 +EQQ/BCQvEjQCFQZWFSEWQv40AcxCDiUblhP9uSEAAAAAAAAWAQ4AAQAAAAAAAAATACgAAQAAAAAAA +QAHAEwAAQAAAAAAAgAHAGQAAQAAAAAAAwAaAKIAAQAAAAAABAAHAM0AAQAAAAAABQA8AU8AAQAAAA +AABgAPAawAAQAAAAAACAALAdQAAQAAAAAACQALAfgAAQAAAAAACwAXAjQAAQAAAAAADAAXAnwAAwA +BBAkAAAAmAAAAAwABBAkAAQAOADwAAwABBAkAAgAOAFQAAwABBAkAAwA0AGwAAwABBAkABAAOAL0A +AwABBAkABQB4ANUAAwABBAkABgAeAYwAAwABBAkACAAWAbwAAwABBAkACQAWAeAAAwABBAkACwAuA +gQAAwABBAkADAAuAkwATgBvACAAUgBpAGcAaAB0AHMAIABSAGUAcwBlAHIAdgBlAGQALgAATm8gUm +lnaHRzIFJlc2VydmVkLgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAUgBlAGcAdQBsAGEAcgAAUmV +ndWxhcgAAMQAuADEAMAAyADsAVQBLAFcATgA7AEEAaQBsAGUAcgBvAG4ALQBSAGUAZwB1AGwAYQBy +AAAxLjEwMjtVS1dOO0FpbGVyb24tUmVndWxhcgAAQQBpAGwAZQByAG8AbgAAQWlsZXJvbgAAVgBlA +HIAcwBpAG8AbgAgADEALgAxADAAMgA7AFAAUwAgADAAMAAxAC4AMQAwADIAOwBoAG8AdABjAG8Abg +B2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADk +AAFZlcnNpb24gMS4xMDI7UFMgMDAxLjEwMjtob3Rjb252IDEuMC43MDttYWtlb3RmLmxpYjIuNS41 +ODMyOQAAQQBpAGwAZQByAG8AbgAtAFIAZQBnAHUAbABhAHIAAEFpbGVyb24tUmVndWxhcgAAUwBvA +HIAYQAgAFMAYQBnAGEAbgBvAABTb3JhIFNhZ2FubwAAUwBvAHIAYQAgAFMAYQBnAGEAbgBvAABTb3 +JhIFNhZ2FubwAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBsAG8AbgAuAG4AZQB0AAB +odHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGQAbwB0AGMAbwBs +AG8AbgAuAG4AZQB0AABodHRwOi8vd3d3LmRvdGNvbG9uLm5ldAAAAAACAAAAAAAA/4MAMgAAAAAAA +AAAAAAAAAAAAAAAAAAAAHQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATAB +QAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAA +xADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0A +TgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAIsAqQCDAJMAjQDDAKoAtgC3A +LQAtQCrAL4AvwC8AIwAwADBAAAAAAAB//8AAgABAAAADAAAABwAAAACAAIAAwBxAAEAcgBzAAIABA +AAAAIAAAABAAAACgBMAGYAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAWAANDQVQgAB5NT0wgABZ +ST00gABYAAP//AAEAAAAA//8AAgAAAAEAAmxpZ2EADmxvY2wAFAAAAAEAAQAAAAEAAAACAAYAEAAG +AAAAAgASADQABAAAAAEATAADAAAAAgAQABYAAQAcAAAAAQABAE8AAQABAGcAAQABAE8AAwAAAAIAE +AAWAAEAHAAAAAEAAQAvAAEAAQBnAAEAAQAvAAEAGgABAAgAAgAGAAwAcwACAE8AcgACAEwAAQABAE +kAAAABAAAACgBGAGAAAkRGTFQADmxhdG4AHAAEAAAAAP//AAIAAAABABYAA0NBVCAAFk1PTCAAFlJ +PTSAAFgAA//8AAgAAAAEAAmNwc3AADmtlcm4AFAAAAAEAAAAAAAEAAQACAAYADgABAAAAAQASAAIA +AAACAB4ANgABAAoABQAFAAoAAgABACQAPQAAAAEAEgAEAAAAAQAMAAEAOP/nAAEAAQAkAAIGigAEA +AAFJAXKABoAGQAA//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAD/sv+4/+z/7v/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9T/6AAAAAD/8QAA +ABD/vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7gAAAAAAAAAAAAAAAAAA//MAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAP/5AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAAD/4AAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//L/9AAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAA/+gAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/mAAAAAAAAAAAAAAAAAAD +/4gAA//AAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAAAAAP/OAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/zv/qAAAAAP/0AAAACAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/ZAAD/egAA/1kAAAAA/5D/rgAAAAAAAAAAAA +AAAAAAAAAAAAAAAAD/9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAD/8AAA/7b/8P+wAAD/8P/E/98AAAAA/8P/+P/0//oAAAAAAAAAAAAA//gA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/w//C/9MAAP/SAAD/9wAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAD/yAAA/+kAAAAA//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9wAAAAD//QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAP/cAAAAAAAAAAAAAAAA/7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6AAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAkAFAAEAAAAAQACwAAABcA +BgAAAAAAAAAIAA4AAAAAAAsAEgAAAAAAAAATABkAAwANAAAAAQAJAAAAAAAAAAAAAAAAAAAAGAAAA +AAABwAAAAAAAAAAAAAAFQAFAAAAAAAYABgAAAAUAAAACgAAAAwAAgAPABEAFgAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAEAEQBdAAYAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAABwAAAAAACAAAAAAAAAAAAAcAAAAHAAAAEwAJ +ABUADgAPAAAACwAQAAAAAAAAAAAAAAAAAAUAGAACAAIAAgAAAAIAGAAXAAAAGAAAABYAFgACABYAA +gAWAAAAEQADAAoAFAAMAA0ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEgAGAAEAHgAkAC +YAJwApACoALQAuAC8AMgAzADcAOAA5ADoAPAA9AEUASABOAE8AUgBTAFUAVwBZAFoAWwBcAF0AcwA +AAAAAAQAAAADa3tfFAAAAANAan9kAAAAA4QodoQ== +""" + ) + ), + 10 if size is None else size, + layout_engine=Layout.BASIC, + ) + return load_default_imagefont() diff --git a/libs/PIL/ImageGrab.py b/libs/PIL/ImageGrab.py new file mode 100644 index 0000000..fe27bfa --- /dev/null +++ b/libs/PIL/ImageGrab.py @@ -0,0 +1,183 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import shutil +import subprocess +import sys +import tempfile + +from . import Image + + +def grab( + bbox: tuple[int, int, int, int] | None = None, + include_layered_windows: bool = False, + all_screens: bool = False, + xdisplay: str | None = None, +) -> Image.Image: + im: Image.Image + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + args = ["screencapture"] + if bbox: + left, top, right, bottom = bbox + args += ["-R", f"{left},{top},{right-left},{bottom-top}"] + subprocess.call(args + ["-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_resized = im.resize((right - left, bottom - top)) + im.close() + return im_resized + return im + elif sys.platform == "win32": + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, all_screens + ) + im = Image.frombytes( + "RGB", + size, + data, + # RGB, 32-bit line padding, origin lower left corner + "raw", + "BGR", + (size[0] * 3 + 3) & -4, + -1, + ) + if bbox: + x0, y0 = offset + left, top, right, bottom = bbox + im = im.crop((left - x0, top - y0, right - x0, bottom - y0)) + return im + # Cast to Optional[str] needed for Windows and macOS. + display_name: str | None = xdisplay + try: + if not Image.core.HAVE_XCB: + msg = "Pillow was built without XCB support" + raise OSError(msg) + size, data = Image.core.grabscreen_x11(display_name) + except OSError: + if ( + display_name is None + and sys.platform not in ("darwin", "win32") + and shutil.which("gnome-screenshot") + ): + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["gnome-screenshot", "-f", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + else: + raise + else: + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard() -> Image.Image | list[str] | None: + if sys.platform == "darwin": + p = subprocess.run( + ["osascript", "-e", "get the clipboard as «class PNGf»"], + capture_output=True, + ) + if p.returncode != 0: + return None + + import binascii + + data = io.BytesIO(binascii.unhexlify(p.stdout[11:-3])) + return Image.open(data) + elif sys.platform == "win32": + fmt, data = Image.core.grabclipboard_win32() + if fmt == "file": # CF_HDROP + import struct + + o = struct.unpack_from("I", data)[0] + if data[16] != 0: + files = data[o:].decode("utf-16le").split("\0") + else: + files = data[o:].decode("mbcs").split("\0") + return files[: files.index("")] + if isinstance(data, bytes): + data = io.BytesIO(data) + if fmt == "png": + from . import PngImagePlugin + + return PngImagePlugin.PngImageFile(data) + elif fmt == "DIB": + from . import BmpImagePlugin + + return BmpImagePlugin.DibImageFile(data) + return None + else: + if os.getenv("WAYLAND_DISPLAY"): + session_type = "wayland" + elif os.getenv("DISPLAY"): + session_type = "x11" + else: # Session type check failed + session_type = None + + if shutil.which("wl-paste") and session_type in ("wayland", None): + args = ["wl-paste", "-t", "image"] + elif shutil.which("xclip") and session_type in ("x11", None): + args = ["xclip", "-selection", "clipboard", "-t", "image/png", "-o"] + else: + msg = "wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux" + raise NotImplementedError(msg) + + p = subprocess.run(args, capture_output=True) + if p.returncode != 0: + err = p.stderr + for silent_error in [ + # wl-paste, when the clipboard is empty + b"Nothing is copied", + # Ubuntu/Debian wl-paste, when the clipboard is empty + b"No selection", + # Ubuntu/Debian wl-paste, when an image isn't available + b"No suitable type of content copied", + # wl-paste or Ubuntu/Debian xclip, when an image isn't available + b" not available", + # xclip, when an image isn't available + b"cannot convert ", + # xclip, when the clipboard isn't initialized + b"xclip: Error: There is no owner for the ", + ]: + if silent_error in err: + return None + msg = f"{args[0]} error" + if err: + msg += f": {err.strip().decode()}" + raise ChildProcessError(msg) + + data = io.BytesIO(p.stdout) + im = Image.open(data) + im.load() + return im diff --git a/libs/PIL/ImageMath.py b/libs/PIL/ImageMath.py new file mode 100644 index 0000000..484797f --- /dev/null +++ b/libs/PIL/ImageMath.py @@ -0,0 +1,368 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import builtins +from types import CodeType +from typing import Any, Callable + +from . import Image, _imagingmath +from ._deprecate import deprecate + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im: Image.Image): + self.im = im + + def __fixup(self, im1: _Operand | float) -> Image.Image: + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + msg = f"unsupported mode: {im1.im.mode}" + raise ValueError(msg) + else: + # argument was a constant + if isinstance(im1, (int, float)) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply( + self, + op: str, + im1: _Operand | float, + im2: _Operand | float | None = None, + mode: str | None = None, + ) -> _Operand: + im_1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.unop(op, out.getim(), im_1.getim()) + else: + # binary operation + im_2 = self.__fixup(im2) + if im_1.mode != im_2.mode: + # convert both arguments to floating point + if im_1.mode != "F": + im_1 = im_1.convert("F") + if im_2.mode != "F": + im_2 = im_2.convert("F") + if im_1.size != im_2.size: + # crop both arguments to a common size + size = ( + min(im_1.size[0], im_2.size[0]), + min(im_1.size[1], im_2.size[1]), + ) + if im_1.size != size: + im_1 = im_1.crop((0, 0) + size) + if im_2.size != size: + im_2 = im_2.crop((0, 0) + size) + out = Image.new(mode or im_1.mode, im_1.size, None) + try: + op = getattr(_imagingmath, f"{op}_{im_1.mode}") + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.binop(op, out.getim(), im_1.getim(), im_2.getim()) + return _Operand(out) + + # unary operators + def __bool__(self) -> bool: + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self) -> _Operand: + return self.apply("abs", self) + + def __pos__(self) -> _Operand: + return self + + def __neg__(self) -> _Operand: + return self.apply("neg", self) + + # binary operators + def __add__(self, other: _Operand | float) -> _Operand: + return self.apply("add", self, other) + + def __radd__(self, other: _Operand | float) -> _Operand: + return self.apply("add", other, self) + + def __sub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", self, other) + + def __rsub__(self, other: _Operand | float) -> _Operand: + return self.apply("sub", other, self) + + def __mul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", self, other) + + def __rmul__(self, other: _Operand | float) -> _Operand: + return self.apply("mul", other, self) + + def __truediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", self, other) + + def __rtruediv__(self, other: _Operand | float) -> _Operand: + return self.apply("div", other, self) + + def __mod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", self, other) + + def __rmod__(self, other: _Operand | float) -> _Operand: + return self.apply("mod", other, self) + + def __pow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", self, other) + + def __rpow__(self, other: _Operand | float) -> _Operand: + return self.apply("pow", other, self) + + # bitwise + def __invert__(self) -> _Operand: + return self.apply("invert", self) + + def __and__(self, other: _Operand | float) -> _Operand: + return self.apply("and", self, other) + + def __rand__(self, other: _Operand | float) -> _Operand: + return self.apply("and", other, self) + + def __or__(self, other: _Operand | float) -> _Operand: + return self.apply("or", self, other) + + def __ror__(self, other: _Operand | float) -> _Operand: + return self.apply("or", other, self) + + def __xor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", self, other) + + def __rxor__(self, other: _Operand | float) -> _Operand: + return self.apply("xor", other, self) + + def __lshift__(self, other: _Operand | float) -> _Operand: + return self.apply("lshift", self, other) + + def __rshift__(self, other: _Operand | float) -> _Operand: + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("eq", self, other) + + def __ne__(self, other: _Operand | float) -> _Operand: # type: ignore[override] + return self.apply("ne", self, other) + + def __lt__(self, other: _Operand | float) -> _Operand: + return self.apply("lt", self, other) + + def __le__(self, other: _Operand | float) -> _Operand: + return self.apply("le", self, other) + + def __gt__(self, other: _Operand | float) -> _Operand: + return self.apply("gt", self, other) + + def __ge__(self, other: _Operand | float) -> _Operand: + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self: _Operand) -> _Operand: + return _Operand(self.im.convert("I")) + + +def imagemath_float(self: _Operand) -> _Operand: + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("min", self, other) + + +def imagemath_max(self: _Operand, other: _Operand | float | None) -> _Operand: + return self.apply("max", self, other) + + +def imagemath_convert(self: _Operand, mode: str) -> _Operand: + return _Operand(self.im.convert(mode)) + + +ops = { + "int": imagemath_int, + "float": imagemath_float, + "equal": imagemath_equal, + "notequal": imagemath_notequal, + "min": imagemath_min, + "max": imagemath_max, + "convert": imagemath_convert, +} + + +def lambda_eval( + expression: Callable[[dict[str, Any]], Any], + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Returns the result of an image function. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A function that receives a dictionary. + :param options: Values to add to the function's dictionary. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the function's dictionary. + :return: The expression result. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + if options: + deprecate( + "ImageMath.lambda_eval options", + 12, + "ImageMath.lambda_eval keyword arguments", + ) + + args: dict[str, Any] = ops.copy() + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + out = expression(args) + try: + return out.im + except AttributeError: + return out + + +def unsafe_eval( + expression: str, + options: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. This uses Python's ``eval()`` function to process + the expression string, and carries the security risks of doing so. It is not + recommended to process expressions without considering this. + :py:meth:`~lambda_eval` is a more secure alternative. + + :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band + images, use the :py:meth:`~PIL.Image.Image.split` method or + :py:func:`~PIL.Image.merge` function. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. Deprecated. + You can instead use one or more keyword arguments. + :param **kw: Values to add to the evaluation context. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + if options: + deprecate( + "ImageMath.unsafe_eval options", + 12, + "ImageMath.unsafe_eval keyword arguments", + ) + + # build execution namespace + args: dict[str, Any] = ops.copy() + for k in list(options.keys()) + list(kw.keys()): + if "__" in k or hasattr(builtins, k): + msg = f"'{k}' not allowed" + raise ValueError(msg) + + args.update(options) + args.update(kw) + for k, v in args.items(): + if isinstance(v, Image.Image): + args[k] = _Operand(v) + + compiled_code = compile(expression, "", "eval") + + def scan(code: CodeType) -> None: + for const in code.co_consts: + if type(const) is type(compiled_code): + scan(const) + + for name in code.co_names: + if name not in args and name != "abs": + msg = f"'{name}' not allowed" + raise ValueError(msg) + + scan(compiled_code) + out = builtins.eval(expression, {"__builtins": {"abs": abs}}, args) + try: + return out.im + except AttributeError: + return out + + +def eval( + expression: str, + _dict: dict[str, Any] = {}, + **kw: Any, +) -> Any: + """ + Evaluates an image expression. + + Deprecated. Use lambda_eval() or unsafe_eval() instead. + + :param expression: A string containing a Python-style expression. + :param _dict: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + + .. deprecated:: 10.3.0 + """ + + deprecate( + "ImageMath.eval", + 12, + "ImageMath.lambda_eval or ImageMath.unsafe_eval", + ) + return unsafe_eval(expression, _dict, **kw) diff --git a/libs/PIL/ImageMode.py b/libs/PIL/ImageMode.py new file mode 100644 index 0000000..92a08d2 --- /dev/null +++ b/libs/PIL/ImageMode.py @@ -0,0 +1,92 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from functools import lru_cache +from typing import NamedTuple + +from ._deprecate import deprecate + + +class ModeDescriptor(NamedTuple): + """Wrapper for mode strings.""" + + mode: str + bands: tuple[str, ...] + basemode: str + basetype: str + typestr: str + + def __str__(self) -> str: + return self.mode + + +@lru_cache +def getmode(mode: str) -> ModeDescriptor: + """Gets a mode descriptor for the given mode.""" + endian = "<" if sys.byteorder == "little" else ">" + + modes = { + # core modes + # Bits need to be extended to bytes + "1": ("L", "L", ("1",), "|b1"), + "L": ("L", "L", ("L",), "|u1"), + "I": ("L", "I", ("I",), f"{endian}i4"), + "F": ("L", "F", ("F",), f"{endian}f4"), + "P": ("P", "L", ("P",), "|u1"), + "RGB": ("RGB", "L", ("R", "G", "B"), "|u1"), + "RGBX": ("RGB", "L", ("R", "G", "B", "X"), "|u1"), + "RGBA": ("RGB", "L", ("R", "G", "B", "A"), "|u1"), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K"), "|u1"), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr"), "|u1"), + # UNDONE - unsigned |u1i1i1 + "LAB": ("RGB", "L", ("L", "A", "B"), "|u1"), + "HSV": ("RGB", "L", ("H", "S", "V"), "|u1"), + # extra experimental modes + "RGBa": ("RGB", "L", ("R", "G", "B", "a"), "|u1"), + "BGR;15": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;16": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;24": ("RGB", "L", ("B", "G", "R"), "|u1"), + "LA": ("L", "L", ("L", "A"), "|u1"), + "La": ("L", "L", ("L", "a"), "|u1"), + "PA": ("RGB", "L", ("P", "A"), "|u1"), + } + if mode in modes: + if mode in ("BGR;15", "BGR;16", "BGR;24"): + deprecate(mode, 12) + base_mode, base_type, bands, type_str = modes[mode] + return ModeDescriptor(mode, bands, base_mode, base_type, type_str) + + mapping_modes = { + # I;16 == I;16L, and I;32 == I;32L + "I;16": "u2", + "I;16BS": ">i2", + "I;16N": f"{endian}u2", + "I;16NS": f"{endian}i2", + "I;32": "u4", + "I;32L": "i4", + "I;32LS": " +from __future__ import annotations + +import re + +from . import Image, _imagingmorph + +LUT_SIZE = 1 << 9 + +# fmt: off +ROTATION_MATRIX = [ + 6, 3, 0, + 7, 4, 1, + 8, 5, 2, +] +MIRROR_MATRIX = [ + 2, 1, 0, + 5, 4, 3, + 8, 7, 6, +] +# fmt: on + + +class LutBuilder: + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + + def __init__( + self, patterns: list[str] | None = None, op_name: str | None = None + ) -> None: + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut: bytearray | None = None + if op_name is not None: + known_patterns = { + "corner": ["1:(... ... ...)->0", "4:(00. 01. ...)->1"], + "dilation4": ["4:(... .0. .1.)->1"], + "dilation8": ["4:(... .0. .1.)->1", "4:(... .0. ..1)->1"], + "erosion4": ["4:(... .1. .0.)->0"], + "erosion8": ["4:(... .1. .0.)->0", "4:(... .1. ..0)->0"], + "edge": [ + "1:(... ... ...)->0", + "4:(.0. .1. ...)->1", + "4:(01. .1. ...)->1", + ], + } + if op_name not in known_patterns: + msg = f"Unknown pattern {op_name}!" + raise Exception(msg) + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns: list[str]) -> None: + self.patterns += patterns + + def build_default_lut(self) -> None: + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self) -> bytearray | None: + return self.lut + + def _string_permute(self, pattern: str, permutation: list[int]) -> str: + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert len(permutation) == 9 + return "".join(pattern[p] for p in permutation) + + def _pattern_permute( + self, basic_pattern: str, options: str, basic_result: int + ) -> list[tuple[str, int]]: + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if "4" in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], ROTATION_MATRIX), res) + ) + # mirror + if "M" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + # Swap 0 and 1 + pattern = pattern.replace("0", "Z").replace("1", "0").replace("Z", "1") + res = 1 - int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self) -> bytearray: + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + assert self.lut is not None + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", "")) + if not m: + msg = 'Syntax error in pattern "' + p + '"' + raise Exception(msg) + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(" ", "").replace("\n", "") + + patterns += self._pattern_permute(pattern, options, result) + + # compile the patterns into regular expressions for speed + compiled_patterns = [] + for pattern in patterns: + p = pattern[0].replace(".", "X").replace("X", "[01]") + compiled_patterns.append((re.compile(p), pattern[1])) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ("0" * (9 - len(bitpattern)) + bitpattern)[::-1] + + for pattern, r in compiled_patterns: + if pattern.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__( + self, + lut: bytearray | None = None, + op_name: str | None = None, + patterns: list[str] | None = None, + ) -> None: + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image: Image.Image) -> tuple[int, Image.Image]: + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.getim(), outimage.getim()) + return count, outimage + + def match(self, image: Image.Image) -> list[tuple[int, int]]: + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.match(bytes(self.lut), image.getim()) + + def get_on_pixels(self, image: Image.Image) -> list[tuple[int, int]]: + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.get_on_pixels(image.getim()) + + def load_lut(self, filename: str) -> None: + """Load an operator from an mrl file""" + with open(filename, "rb") as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + msg = "Wrong size operator file!" + raise Exception(msg) + + def save_lut(self, filename: str) -> None: + """Save an operator to an mrl file""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut: bytearray | None) -> None: + """Set the lut from an external source""" + self.lut = lut diff --git a/libs/PIL/ImageOps.py b/libs/PIL/ImageOps.py new file mode 100644 index 0000000..bb29cc0 --- /dev/null +++ b/libs/PIL/ImageOps.py @@ -0,0 +1,731 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import functools +import operator +import re +from collections.abc import Sequence +from typing import Protocol, cast + +from . import ExifTags, Image, ImagePalette + +# +# helpers + + +def _border(border: int | tuple[int, ...]) -> tuple[int, int, int, int]: + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color: str | int | tuple[int, ...], mode: str) -> int | tuple[int, ...]: + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image: Image.Image, lut: list[int]) -> Image.Image: + if image.mode == "P": + # FIXME: apply to lookup table, not image data + msg = "mode P support coming soon" + raise NotImplementedError(msg) + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + msg = f"not supported for mode {image.mode}" + raise OSError(msg) + + +# +# actions + + +def autocontrast( + image: Image.Image, + cutoff: float | tuple[float, float] = 0, + ignore: int | Sequence[int] | None = None, + mask: Image.Image | None = None, + preserve_tone: bool = False, +) -> Image.Image: + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image (or mask region), removes ``cutoff`` percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: The percent to cut off from the histogram on the low and + high ends. Either a tuple of (low, high), or a single + number for both. + :param ignore: The background pixel value (use None for no background). + :param mask: Histogram used in contrast operation is computed using pixels + within the mask. If no mask is given the entire image is used + for histogram computation. + :param preserve_tone: Preserve image tone in Photoshop-like style autocontrast. + + .. versionadded:: 8.2.0 + + :return: An image. + """ + if preserve_tone: + histogram = image.convert("L").histogram(mask) + else: + histogram = image.histogram(mask) + + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + if isinstance(ignore, int): + h[ignore] = 0 + else: + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + if not isinstance(cutoff, tuple): + cutoff = (cutoff, cutoff) + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = int(n * cutoff[0] // 100) + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the high end + cut = int(n * cutoff[1] // 100) + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize( + image: Image.Image, + black: str | tuple[int, ...], + white: str | tuple[int, ...], + mid: str | int | tuple[int, ...] | None = None, + blackpoint: int = 0, + whitepoint: int = 255, + midpoint: int = 127, +) -> Image.Image: + """ + Colorize grayscale image. + This function calculates a color wedge which maps all black pixels in + the source image to the first color and all white pixels to the + second color. If ``mid`` is specified, it uses three-color mapping. + The ``black`` and ``white`` arguments should be RGB tuples or color names; + optionally you can use three-color mapping by also specifying ``mid``. + Mapping positions for any of the colors can be specified + (e.g. ``blackpoint``), where these parameters are the integer + value corresponding to where the corresponding color should be mapped. + These parameters must have logical order, such that + ``blackpoint <= midpoint <= whitepoint`` (if ``mid`` is specified). + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :param mid: The color to use for midtone input pixels. + :param blackpoint: an int value [0, 255] for the black mapping. + :param whitepoint: an int value [0, 255] for the white mapping. + :param midpoint: an int value [0, 255] for the midtone mapping. + :return: An image. + """ + + # Initial asserts + assert image.mode == "L" + if mid is None: + assert 0 <= blackpoint <= whitepoint <= 255 + else: + assert 0 <= blackpoint <= midpoint <= whitepoint <= 255 + + # Define colors from arguments + rgb_black = cast(Sequence[int], _color(black, "RGB")) + rgb_white = cast(Sequence[int], _color(white, "RGB")) + rgb_mid = cast(Sequence[int], _color(mid, "RGB")) if mid is not None else None + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(rgb_black[0]) + green.append(rgb_black[1]) + blue.append(rgb_black[2]) + + # Create the mapping (2-color) + if rgb_mid is None: + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append( + rgb_black[0] + i * (rgb_white[0] - rgb_black[0]) // len(range_map) + ) + green.append( + rgb_black[1] + i * (rgb_white[1] - rgb_black[1]) // len(range_map) + ) + blue.append( + rgb_black[2] + i * (rgb_white[2] - rgb_black[2]) // len(range_map) + ) + + # Create the mapping (3-color) + else: + range_map1 = range(0, midpoint - blackpoint) + range_map2 = range(0, whitepoint - midpoint) + + for i in range_map1: + red.append( + rgb_black[0] + i * (rgb_mid[0] - rgb_black[0]) // len(range_map1) + ) + green.append( + rgb_black[1] + i * (rgb_mid[1] - rgb_black[1]) // len(range_map1) + ) + blue.append( + rgb_black[2] + i * (rgb_mid[2] - rgb_black[2]) // len(range_map1) + ) + for i in range_map2: + red.append(rgb_mid[0] + i * (rgb_white[0] - rgb_mid[0]) // len(range_map2)) + green.append( + rgb_mid[1] + i * (rgb_white[1] - rgb_mid[1]) // len(range_map2) + ) + blue.append(rgb_mid[2] + i * (rgb_white[2] - rgb_mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(rgb_white[0]) + green.append(rgb_white[1]) + blue.append(rgb_white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def contain( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, set to the maximum width and height + within the requested size, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio > dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def cover( + image: Image.Image, size: tuple[int, int], method: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a resized version of the image, so that the requested size is + covered, while maintaining the original aspect ratio. + + :param image: The image to resize. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio < dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def pad( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + color: str | int | tuple[int, ...] | None = None, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param color: The background color of the padded image. + :param centering: Control the position of the original image within the + padded version. + + (0.5, 0.5) will keep the image centered + (0, 0) will keep the image aligned to the top left + (1, 1) will keep the image aligned to the bottom + right + :return: An image. + """ + + resized = contain(image, size, method) + if resized.size == size: + out = resized + else: + out = Image.new(image.mode, size, color) + if resized.palette: + palette = resized.getpalette() + if palette is not None: + out.putpalette(palette) + if resized.width != size[0]: + x = round((size[0] - resized.width) * max(0, min(centering[0], 1))) + out.paste(resized, (x, 0)) + else: + y = round((size[1] - resized.height) * max(0, min(centering[1], 1))) + out.paste(resized, (0, y)) + return out + + +def crop(image: Image.Image, border: int = 0) -> Image.Image: + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) + + +def scale( + image: Image.Image, factor: float, resample: int = Image.Resampling.BICUBIC +) -> Image.Image: + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + msg = "the factor must be greater than 0" + raise ValueError(msg) + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +class SupportsGetMesh(Protocol): + """ + An object that supports the ``getmesh`` method, taking an image as an + argument, and returning a list of tuples. Each tuple contains two tuples, + the source box as a tuple of 4 integers, and a tuple of 8 integers for the + final quadrilateral, in order of top left, bottom left, bottom right, top + right. + """ + + def getmesh( + self, image: Image.Image + ) -> list[ + tuple[tuple[int, int, int, int], tuple[int, int, int, int, int, int, int, int]] + ]: ... + + +def deform( + image: Image.Image, + deformer: SupportsGetMesh, + resample: int = Image.Resampling.BILINEAR, +) -> Image.Image: + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + ``getmesh`` method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform( + image.size, Image.Transform.MESH, deformer.getmesh(image), resample + ) + + +def equalize(image: Image.Image, mask: Image.Image | None = None) -> Image.Image: + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b : b + 256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i + b] + return _lut(image, lut) + + +def expand( + image: Image.Image, + border: int | tuple[int, ...] = 0, + fill: str | int | tuple[int, ...] = 0, +) -> Image.Image: + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + color = _color(fill, image.mode) + if image.palette: + palette = ImagePalette.ImagePalette(palette=image.getpalette()) + if isinstance(color, tuple) and (len(color) == 3 or len(color) == 4): + color = palette.getcolor(color) + else: + palette = None + out = Image.new(image.mode, (width, height), color) + if palette: + out.putpalette(palette.palette) + out.paste(image, (left, top)) + return out + + +def fit( + image: Image.Image, + size: tuple[int, int], + method: int = Image.Resampling.BICUBIC, + bleed: float = 0.0, + centering: tuple[float, float] = (0.5, 0.5), +) -> Image.Image: + """ + Returns a resized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param bleed: Remove a border around the outside of the image from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + Cannot be greater than or equal to 0.5. + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # https://www.cazabon.com + + centering_x, centering_y = centering + + if not 0.0 <= centering_x <= 1.0: + centering_x = 0.5 + if not 0.0 <= centering_y <= 1.0: + centering_y = 0.5 + + if not 0.0 <= bleed < 0.5: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleed_pixels = (bleed * image.size[0], bleed * image.size[1]) + + live_size = ( + image.size[0] - bleed_pixels[0] * 2, + image.size[1] - bleed_pixels[1] * 2, + ) + + # calculate the aspect ratio of the live_size + live_size_ratio = live_size[0] / live_size[1] + + # calculate the aspect ratio of the output image + output_ratio = size[0] / size[1] + + # figure out if the sides or top/bottom will be cropped off + if live_size_ratio == output_ratio: + # live_size is already the needed ratio + crop_width = live_size[0] + crop_height = live_size[1] + elif live_size_ratio >= output_ratio: + # live_size is wider than what's needed, crop the sides + crop_width = output_ratio * live_size[1] + crop_height = live_size[1] + else: + # live_size is taller than what's needed, crop the top and bottom + crop_width = live_size[0] + crop_height = live_size[0] / output_ratio + + # make the crop + crop_left = bleed_pixels[0] + (live_size[0] - crop_width) * centering_x + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering_y + + crop = (crop_left, crop_top, crop_left + crop_width, crop_top + crop_height) + + # resize the image and return it + return image.resize(size, method, box=crop) + + +def flip(image: Image.Image) -> Image.Image: + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_TOP_BOTTOM) + + +def grayscale(image: Image.Image) -> Image.Image: + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image: Image.Image) -> Image.Image: + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = list(range(255, -1, -1)) + return image.point(lut) if image.mode == "1" else _lut(image, lut) + + +def mirror(image: Image.Image) -> Image.Image: + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +def posterize(image: Image.Image, bits: int) -> Image.Image: + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + mask = ~(2 ** (8 - bits) - 1) + lut = [i & mask for i in range(256)] + return _lut(image, lut) + + +def solarize(image: Image.Image, threshold: int = 128) -> Image.Image: + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this grayscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255 - i) + return _lut(image, lut) + + +def exif_transpose(image: Image.Image, *, in_place: bool = False) -> Image.Image | None: + """ + If an image has an EXIF Orientation tag, other than 1, transpose the image + accordingly, and remove the orientation data. + + :param image: The image to transpose. + :param in_place: Boolean. Keyword-only argument. + If ``True``, the original image is modified in-place, and ``None`` is returned. + If ``False`` (default), a new :py:class:`~PIL.Image.Image` object is returned + with the transposition applied. If there is no transposition, a copy of the + image will be returned. + """ + image.load() + image_exif = image.getexif() + orientation = image_exif.get(ExifTags.Base.Orientation, 1) + method = { + 2: Image.Transpose.FLIP_LEFT_RIGHT, + 3: Image.Transpose.ROTATE_180, + 4: Image.Transpose.FLIP_TOP_BOTTOM, + 5: Image.Transpose.TRANSPOSE, + 6: Image.Transpose.ROTATE_270, + 7: Image.Transpose.TRANSVERSE, + 8: Image.Transpose.ROTATE_90, + }.get(orientation) + if method is not None: + if in_place: + image.im = image.im.transpose(method) + image._size = image.im.size + else: + transposed_image = image.transpose(method) + exif_image = image if in_place else transposed_image + + exif = exif_image.getexif() + if ExifTags.Base.Orientation in exif: + del exif[ExifTags.Base.Orientation] + if "exif" in exif_image.info: + exif_image.info["exif"] = exif.tobytes() + elif "Raw profile type exif" in exif_image.info: + exif_image.info["Raw profile type exif"] = exif.tobytes().hex() + for key in ("XML:com.adobe.xmp", "xmp"): + if key in exif_image.info: + for pattern in ( + r'tiff:Orientation="([0-9])"', + r"([0-9])", + ): + value = exif_image.info[key] + exif_image.info[key] = ( + re.sub(pattern, "", value) + if isinstance(value, str) + else re.sub(pattern.encode(), b"", value) + ) + if not in_place: + return transposed_image + elif not in_place: + return image.copy() + return None diff --git a/libs/PIL/ImagePalette.py b/libs/PIL/ImagePalette.py new file mode 100644 index 0000000..183f855 --- /dev/null +++ b/libs/PIL/ImagePalette.py @@ -0,0 +1,285 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import array +from collections.abc import Sequence +from typing import IO, TYPE_CHECKING + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + +if TYPE_CHECKING: + from . import Image + + +class ImagePalette: + """ + Color palette for palette mapped images + + :param mode: The mode to use for the palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255. The list must consist of + all channels for one color followed by the next color (e.g. RGBRGBRGB). + Defaults to an empty palette. + """ + + def __init__( + self, + mode: str = "RGB", + palette: Sequence[int] | bytes | bytearray | None = None, + ) -> None: + self.mode = mode + self.rawmode: str | None = None # if set, palette contains raw data + self.palette = palette or bytearray() + self.dirty: int | None = None + + @property + def palette(self) -> Sequence[int] | bytes | bytearray: + return self._palette + + @palette.setter + def palette(self, palette: Sequence[int] | bytes | bytearray) -> None: + self._colors: dict[tuple[int, ...], int] | None = None + self._palette = palette + + @property + def colors(self) -> dict[tuple[int, ...], int]: + if self._colors is None: + mode_len = len(self.mode) + self._colors = {} + for i in range(0, len(self.palette), mode_len): + color = tuple(self.palette[i : i + mode_len]) + if color in self._colors: + continue + self._colors[color] = i // mode_len + return self._colors + + @colors.setter + def colors(self, colors: dict[tuple[int, ...], int]) -> None: + self._colors = colors + + def copy(self) -> ImagePalette: + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.dirty = self.dirty + + return new + + def getdata(self) -> tuple[str, Sequence[int] | bytes | bytearray]: + """ + Get palette contents in format suitable for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode, self.tobytes() + + def tobytes(self) -> bytes: + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + return arr.tobytes() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def _new_color_index( + self, image: Image.Image | None = None, e: Exception | None = None + ) -> int: + if not isinstance(self.palette, bytearray): + self._palette = bytearray(self.palette) + index = len(self.palette) // 3 + special_colors: tuple[int | tuple[int, ...] | None, ...] = () + if image: + special_colors = ( + image.info.get("background"), + image.info.get("transparency"), + ) + while index in special_colors: + index += 1 + if index >= 256: + if image: + # Search for an unused index + for i, count in reversed(list(enumerate(image.histogram()))): + if count == 0 and i not in special_colors: + index = i + break + if index >= 256: + msg = "cannot allocate more than 256 colors" + raise ValueError(msg) from e + return index + + def getcolor( + self, + color: tuple[int, ...], + image: Image.Image | None = None, + ) -> int: + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(color, tuple): + if self.mode == "RGB": + if len(color) == 4: + if color[3] != 255: + msg = "cannot add non-opaque RGBA color to RGB palette" + raise ValueError(msg) + color = color[:3] + elif self.mode == "RGBA": + if len(color) == 3: + color += (255,) + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + index = self._new_color_index(image, e) + assert isinstance(self._palette, bytearray) + self.colors[color] = index + if index * 3 < len(self.palette): + self._palette = ( + self._palette[: index * 3] + + bytes(color) + + self._palette[index * 3 + 3 :] + ) + else: + self._palette += bytes(color) + self.dirty = 1 + return index + else: + msg = f"unknown color specifier: {repr(color)}" # type: ignore[unreachable] + raise ValueError(msg) + + def save(self, fp: str | IO[str]) -> None: + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write(f"# Mode: {self.mode}\n") + for i in range(256): + fp.write(f"{i}") + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(f" {self.palette[j]}") + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode: str, data: Sequence[int] | bytes | bytearray) -> ImagePalette: + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black: int, white: float) -> list[int]: + if black == 0: + return [int(white * i // 255) for i in range(256)] + + msg = "unavailable when black is non-zero" + raise NotImplementedError(msg) # FIXME + + +def make_gamma_lut(exp: float) -> list[int]: + return [int(((i / 255.0) ** exp) * 255.0 + 0.5) for i in range(256)] + + +def negative(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + palette.reverse() + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def random(mode: str = "RGB") -> ImagePalette: + from random import randint + + palette = [randint(0, 255) for _ in range(256 * len(mode))] + return ImagePalette(mode, palette) + + +def sepia(white: str = "#fff0c0") -> ImagePalette: + bands = [make_linear_lut(0, band) for band in ImageColor.getrgb(white)] + return ImagePalette("RGB", [bands[i % 3][i // 3] for i in range(256 * 3)]) + + +def wedge(mode: str = "RGB") -> ImagePalette: + palette = list(range(256 * len(mode))) + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def load(filename: str) -> tuple[bytes, str]: + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + paletteHandlers: list[ + type[ + GimpPaletteFile.GimpPaletteFile + | GimpGradientFile.GimpGradientFile + | PaletteFile.PaletteFile + ] + ] = [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ] + for paletteHandler in paletteHandlers: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + pass + else: + msg = "cannot load palette" + raise OSError(msg) + + return lut # data, rawmode diff --git a/libs/PIL/ImagePath.py b/libs/PIL/ImagePath.py new file mode 100644 index 0000000..77e8a60 --- /dev/null +++ b/libs/PIL/ImagePath.py @@ -0,0 +1,20 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image + +Path = Image.core.path diff --git a/libs/PIL/ImageQt.py b/libs/PIL/ImageQt.py new file mode 100644 index 0000000..2cc40f8 --- /dev/null +++ b/libs/PIL/ImageQt.py @@ -0,0 +1,219 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# 2013-11-13 fl: add support for Qt5 (aurelien.ballier@cyclonit.com) +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from io import BytesIO +from typing import TYPE_CHECKING, Any, Callable, Union + +from . import Image +from ._util import is_path + +if TYPE_CHECKING: + import PyQt6 + import PySide6 + + from . import ImageFile + + QBuffer: type + QByteArray = Union[PyQt6.QtCore.QByteArray, PySide6.QtCore.QByteArray] + QIODevice = Union[PyQt6.QtCore.QIODevice, PySide6.QtCore.QIODevice] + QImage = Union[PyQt6.QtGui.QImage, PySide6.QtGui.QImage] + QPixmap = Union[PyQt6.QtGui.QPixmap, PySide6.QtGui.QPixmap] + +qt_version: str | None +qt_versions = [ + ["6", "PyQt6"], + ["side6", "PySide6"], +] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda version: version[1] in sys.modules, reverse=True) +for version, qt_module in qt_versions: + try: + qRgba: Callable[[int, int, int, int], int] + if qt_module == "PyQt6": + from PyQt6.QtCore import QBuffer, QIODevice + from PyQt6.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PySide6": + from PySide6.QtCore import QBuffer, QIODevice + from PySide6.QtGui import QImage, QPixmap, qRgba + except (ImportError, RuntimeError): + continue + qt_is_installed = True + qt_version = version + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r: int, g: int, b: int, a: int = 255) -> int: + """(Internal) Turns an RGB color into a Qt compatible color integer.""" + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return qRgba(r, g, b, a) & 0xFFFFFFFF + + +def fromqimage(im: QImage | QPixmap) -> ImageFile.ImageFile: + """ + :param im: QImage or PIL ImageQt object + """ + buffer = QBuffer() + qt_openmode: object + if qt_version == "6": + try: + qt_openmode = getattr(QIODevice, "OpenModeFlag") + except AttributeError: + qt_openmode = getattr(QIODevice, "OpenMode") + else: + qt_openmode = QIODevice + buffer.open(getattr(qt_openmode, "ReadWrite")) + # preserve alpha channel with png + # otherwise ppm is more friendly with Image.open + if im.hasAlphaChannel(): + im.save(buffer, "png") + else: + im.save(buffer, "ppm") + + b = BytesIO() + b.write(buffer.data()) + buffer.close() + b.seek(0) + + return Image.open(b) + + +def fromqpixmap(im: QPixmap) -> ImageFile.ImageFile: + return fromqimage(im) + + +def align8to32(bytes: bytes, width: int, mode: str) -> bytes: + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8, "I;16": 16}[mode] + + # calculate bytes per line and the extra padding if needed + bits_per_line = bits_per_pixel * width + full_bytes_per_line, remaining_bits_per_line = divmod(bits_per_line, 8) + bytes_per_line = full_bytes_per_line + (1 if remaining_bits_per_line else 0) + + extra_padding = -bytes_per_line % 4 + + # already 32 bit aligned by luck + if not extra_padding: + return bytes + + new_data = [ + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + b"\x00" * extra_padding + for i in range(len(bytes) // bytes_per_line) + ] + + return b"".join(new_data) + + +def _toqclass_helper(im: Image.Image | str | QByteArray) -> dict[str, Any]: + data = None + colortable = None + exclusive_fp = False + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = str(im.toUtf8(), "utf-8") + if is_path(im): + im = Image.open(im) + exclusive_fp = True + assert isinstance(im, Image.Image) + + qt_format = getattr(QImage, "Format") if qt_version == "6" else QImage + if im.mode == "1": + format = getattr(qt_format, "Format_Mono") + elif im.mode == "L": + format = getattr(qt_format, "Format_Indexed8") + colortable = [rgb(i, i, i) for i in range(256)] + elif im.mode == "P": + format = getattr(qt_format, "Format_Indexed8") + palette = im.getpalette() + assert palette is not None + colortable = [rgb(*palette[i : i + 3]) for i in range(0, len(palette), 3)] + elif im.mode == "RGB": + # Populate the 4th channel with 255 + im = im.convert("RGBA") + + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_RGB32") + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = getattr(qt_format, "Format_ARGB32") + elif im.mode == "I;16": + im = im.point(lambda i: i * 256) + + format = getattr(qt_format, "Format_Grayscale16") + else: + if exclusive_fp: + im.close() + msg = f"unsupported image mode {repr(im.mode)}" + raise ValueError(msg) + + size = im.size + __data = data or align8to32(im.tobytes(), size[0], im.mode) + if exclusive_fp: + im.close() + return {"data": __data, "size": size, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): # type: ignore[misc] + def __init__(self, im: Image.Image | str | QByteArray) -> None: + """ + An PIL image wrapper for Qt. This is a subclass of PyQt's QImage + class. + + :param im: A PIL Image object, or a file name (given either as + Python string or a PyQt string object). + """ + im_data = _toqclass_helper(im) + # must keep a reference, or Qt will crash! + # All QImage constructors that take data operate on an existing + # buffer, so this buffer has to hang on for the life of the image. + # Fixes https://github.com/python-pillow/Pillow/issues/1370 + self.__data = im_data["data"] + super().__init__( + self.__data, + im_data["size"][0], + im_data["size"][1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im: Image.Image | str | QByteArray) -> ImageQt: + return ImageQt(im) + + +def toqpixmap(im: Image.Image | str | QByteArray) -> QPixmap: + qimage = toqimage(im) + pixmap = getattr(QPixmap, "fromImage")(qimage) + if qt_version == "6": + pixmap.detach() + return pixmap diff --git a/libs/PIL/ImageSequence.py b/libs/PIL/ImageSequence.py new file mode 100644 index 0000000..a6fc340 --- /dev/null +++ b/libs/PIL/ImageSequence.py @@ -0,0 +1,86 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +from __future__ import annotations + +from typing import Callable + +from . import Image + + +class Iterator: + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im: Image.Image) -> None: + if not hasattr(im, "seek"): + msg = "im must have seek method" + raise AttributeError(msg) + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix: int) -> Image.Image: + try: + self.im.seek(ix) + return self.im + except EOFError as e: + msg = "end of sequence" + raise IndexError(msg) from e + + def __iter__(self) -> Iterator: + return self + + def __next__(self) -> Image.Image: + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + msg = "end of sequence" + raise StopIteration(msg) from e + + +def all_frames( + im: Image.Image | list[Image.Image], + func: Callable[[Image.Image], Image.Image] | None = None, +) -> list[Image.Image]: + """ + Applies a given function to all frames in an image or a list of images. + The frames are returned as a list of separate images. + + :param im: An image, or a list of images. + :param func: The function to apply to all of the image frames. + :returns: A list of images. + """ + if not isinstance(im, list): + im = [im] + + ims = [] + for imSequence in im: + current = imSequence.tell() + + ims += [im_frame.copy() for im_frame in Iterator(imSequence)] + + imSequence.seek(current) + return [func(im) for im in ims] if func else ims diff --git a/libs/PIL/ImageShow.py b/libs/PIL/ImageShow.py new file mode 100644 index 0000000..d62893d --- /dev/null +++ b/libs/PIL/ImageShow.py @@ -0,0 +1,360 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import abc +import os +import shutil +import subprocess +import sys +from shlex import quote +from typing import Any + +from . import Image + +_viewers = [] + + +def register(viewer: type[Viewer] | Viewer, order: int = 1) -> None: + """ + The :py:func:`register` function is used to register additional viewers:: + + from PIL import ImageShow + ImageShow.register(MyViewer()) # MyViewer will be used as a last resort + ImageShow.register(MySecondViewer(), 0) # MySecondViewer will be prioritised + ImageShow.register(ImageShow.XVViewer(), 0) # XVViewer will be prioritised + + :param viewer: The viewer to be registered. + :param order: + Zero or a negative integer to prepend this viewer to the list, + a positive integer to append it. + """ + if isinstance(viewer, type) and issubclass(viewer, Viewer): + viewer = viewer() + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image: Image.Image, title: str | None = None, **options: Any) -> bool: + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: ``True`` if a suitable viewer was found, ``False`` otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return True + return False + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image: Image.Image, **options: Any) -> int: + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + if not ( + image.mode in ("1", "RGBA") + or (self.format == "PNG" and image.mode in ("I;16", "LA")) + ): + base = Image.getmodebase(image.mode) + if image.mode != base: + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format: str | None = None + """The format to convert the image into.""" + options: dict[str, Any] = {} + """Additional options used to convert the image.""" + + def get_format(self, image: Image.Image) -> str | None: + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file: str, **options: Any) -> str: + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + msg = "unavailable in base viewer" + raise NotImplementedError(msg) + + def save_image(self, image: Image.Image) -> str: + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image: Image.Image, **options: Any) -> int: + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + os.system(self.get_command(path, **options)) # nosec + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + return ( + f'start "Pillow" /WAIT "{file}" ' + "&& ping -n 4 127.0.0.1 >NUL " + f'&& del /f "{file}"' + ) + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen( + self.get_command(path, **options), + shell=True, + creationflags=getattr(subprocess, "CREATE_NO_WINDOW"), + ) # nosec + return 1 + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on macOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file: str, **options: Any) -> str: + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = f"({command} {quote(file)}; sleep 20; rm -f {quote(file)})&" + return command + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.call(["open", "-a", "Preview.app", path]) + executable = sys.executable or shutil.which("python3") + if executable: + subprocess.Popen( + [ + executable, + "-c", + "import os, sys, time; time.sleep(20); os.remove(sys.argv[1])", + path, + ] + ) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + @abc.abstractmethod + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + pass + + def get_command(self, file: str, **options: Any) -> str: + command = self.get_command_ex(file, **options)[0] + return f"{command} {quote(file)}" + + +class XDGViewer(UnixViewer): + """ + The freedesktop.org ``xdg-open`` command. + """ + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + command = executable = "xdg-open" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["xdg-open", path]) + return 1 + + +class DisplayViewer(UnixViewer): + """ + The ImageMagick ``display`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + command = executable = "display" + if title: + command += f" -title {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["display"] + title = options.get("title") + if title: + args += ["-title", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +class GmDisplayViewer(UnixViewer): + """The GraphicsMagick ``gm display`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "gm" + command = "gm display" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["gm", "display", path]) + return 1 + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file: str, **options: Any) -> tuple[str, str]: + executable = "eog" + command = "eog -n" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + subprocess.Popen(["eog", "-n", path]) + return 1 + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex( + self, file: str, title: str | None = None, **options: Any + ) -> tuple[str, str]: + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += f" -name {quote(title)}" + return command, executable + + def show_file(self, path: str, **options: Any) -> int: + """ + Display given file. + """ + if not os.path.exists(path): + raise FileNotFoundError + args = ["xv"] + title = options.get("title") + if title: + args += ["-name", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("xdg-open"): + register(XDGViewer) + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("gm"): + register(GmDisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + + +class IPythonViewer(Viewer): + """The viewer for IPython frontends.""" + + def show_image(self, image: Image.Image, **options: Any) -> int: + ipython_display(image) + return 1 + + +try: + from IPython.display import display as ipython_display +except ImportError: + pass +else: + register(IPythonViewer) + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/libs/PIL/ImageStat.py b/libs/PIL/ImageStat.py new file mode 100644 index 0000000..8bc5045 --- /dev/null +++ b/libs/PIL/ImageStat.py @@ -0,0 +1,160 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +from functools import cached_property + +from . import Image + + +class Stat: + def __init__( + self, image_or_list: Image.Image | list[int], mask: Image.Image | None = None + ) -> None: + """ + Calculate statistics for the given image. If a mask is included, + only the regions covered by that mask are included in the + statistics. You can also pass in a previously calculated histogram. + + :param image: A PIL image, or a precalculated histogram. + + .. note:: + + For a PIL image, calculations rely on the + :py:meth:`~PIL.Image.Image.histogram` method. The pixel counts are + grouped into 256 bins, even if the image has more than 8 bits per + channel. So ``I`` and ``F`` mode images have a maximum ``mean``, + ``median`` and ``rms`` of 255, and cannot have an ``extrema`` maximum + of more than 255. + + :param mask: An optional mask. + """ + if isinstance(image_or_list, Image.Image): + self.h = image_or_list.histogram(mask) + elif isinstance(image_or_list, list): + self.h = image_or_list + else: + msg = "first argument must be image or list" # type: ignore[unreachable] + raise TypeError(msg) + self.bands = list(range(len(self.h) // 256)) + + @cached_property + def extrema(self) -> list[tuple[int, int]]: + """ + Min/max values for each band in the image. + + .. note:: + This relies on the :py:meth:`~PIL.Image.Image.histogram` method, and + simply returns the low and high bins used. This is correct for + images with 8 bits per channel, but fails for other modes such as + ``I`` or ``F``. Instead, use :py:meth:`~PIL.Image.Image.getextrema` to + return per-band extrema for the image. This is more correct and + efficient because, for non-8-bit modes, the histogram method uses + :py:meth:`~PIL.Image.Image.getextrema` to determine the bins used. + """ + + def minmax(histogram: list[int]) -> tuple[int, int]: + res_min, res_max = 255, 0 + for i in range(256): + if histogram[i]: + res_min = i + break + for i in range(255, -1, -1): + if histogram[i]: + res_max = i + break + return res_min, res_max + + return [minmax(self.h[i:]) for i in range(0, len(self.h), 256)] + + @cached_property + def count(self) -> list[int]: + """Total number of pixels for each band in the image.""" + return [sum(self.h[i : i + 256]) for i in range(0, len(self.h), 256)] + + @cached_property + def sum(self) -> list[float]: + """Sum of all pixels for each band in the image.""" + + v = [] + for i in range(0, len(self.h), 256): + layer_sum = 0.0 + for j in range(256): + layer_sum += j * self.h[i + j] + v.append(layer_sum) + return v + + @cached_property + def sum2(self) -> list[float]: + """Squared sum of all pixels for each band in the image.""" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j**2) * float(self.h[i + j]) + v.append(sum2) + return v + + @cached_property + def mean(self) -> list[float]: + """Average (arithmetic mean) pixel level for each band in the image.""" + return [self.sum[i] / self.count[i] for i in self.bands] + + @cached_property + def median(self) -> list[int]: + """Median pixel level for each band in the image.""" + + v = [] + for i in self.bands: + s = 0 + half = self.count[i] // 2 + b = i * 256 + for j in range(256): + s = s + self.h[b + j] + if s > half: + break + v.append(j) + return v + + @cached_property + def rms(self) -> list[float]: + """RMS (root-mean-square) for each band in the image.""" + return [math.sqrt(self.sum2[i] / self.count[i]) for i in self.bands] + + @cached_property + def var(self) -> list[float]: + """Variance for each band in the image.""" + return [ + (self.sum2[i] - (self.sum[i] ** 2.0) / self.count[i]) / self.count[i] + for i in self.bands + ] + + @cached_property + def stddev(self) -> list[float]: + """Standard deviation for each band in the image.""" + return [math.sqrt(self.var[i]) for i in self.bands] + + +Global = Stat # compatibility diff --git a/libs/PIL/ImageTk.py b/libs/PIL/ImageTk.py new file mode 100644 index 0000000..bf29fdb --- /dev/null +++ b/libs/PIL/ImageTk.py @@ -0,0 +1,290 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import tkinter +from io import BytesIO +from typing import TYPE_CHECKING, Any, cast + +from . import Image, ImageFile + +if TYPE_CHECKING: + from ._typing import CapsuleType + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + + +def _get_image_from_kw(kw: dict[str, Any]) -> ImageFile.ImageFile | None: + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if not source: + return None + return Image.open(source) + + +def _pyimagingtkcall( + command: str, photo: PhotoImage | tkinter.PhotoImage, ptr: CapsuleType +) -> None: + tk = photo.tk + try: + tk.call(command, photo, repr(ptr)) + except tkinter.TclError: + # activate Tkinter hook + # may raise an error if it cannot attach to Tkinter + from . import _imagingtk + + _imagingtk.tkinit(tk.interpaddr()) + tk.call(command, photo, repr(ptr)) + + +# -------------------------------------------------------------------- +# PhotoImage + + +class PhotoImage: + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the ``file`` or ``data`` options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__( + self, + image: Image.Image | str | None = None, + size: tuple[int, int] | None = None, + **kw: Any, + ) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + elif isinstance(image, str): + mode = image + image = None + + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.apply_transparency() + image.load() + mode = image.palette.mode if image.palette else "RGB" + size = image.size + kw["width"], kw["height"] = size + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self) -> str: + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im: Image.Image) -> None: + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + """ + # convert to blittable + ptr = im.getim() + image = im.im + if not image.isblock() or im.mode != self.__mode: + block = Image.core.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + ptr = block.ptr + + _pyimagingtkcall("PyImagingPhoto", self.__photo, ptr) + + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage: + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is ``foreground``, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image: Image.Image | None = None, **kw: Any) -> None: + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if image is None: + msg = "Image is required" + raise ValueError(msg) + self.__mode = image.mode + self.__size = image.size + + self.__photo = tkinter.BitmapImage(data=image.tobitmap(), **kw) + + def __del__(self) -> None: + try: + name = self.__photo.name + except AttributeError: + return + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self) -> int: + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self) -> int: + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self) -> str: + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo: PhotoImage) -> Image.Image: + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + + _pyimagingtkcall("PyImagingPhotoGet", photo, im.getim()) + + return im + + +def _show(image: Image.Image, title: str | None) -> None: + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master: tkinter.Toplevel, im: Image.Image) -> None: + self.image: BitmapImage | PhotoImage + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + if TYPE_CHECKING: + image = cast(tkinter._Image, self.image) + else: + image = self.image + super().__init__(master, image=image, bg="black", bd=0) + + if not getattr(tkinter, "_default_root"): + msg = "tkinter not initialized" + raise OSError(msg) + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/libs/PIL/ImageTransform.py b/libs/PIL/ImageTransform.py new file mode 100644 index 0000000..a3d8f44 --- /dev/null +++ b/libs/PIL/ImageTransform.py @@ -0,0 +1,136 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from collections.abc import Sequence +from typing import Any + +from . import Image + + +class Transform(Image.ImageTransformHandler): + """Base class for other transforms defined in :py:mod:`~PIL.ImageTransform`.""" + + method: Image.Transform + + def __init__(self, data: Sequence[Any]) -> None: + self.data = data + + def getdata(self) -> tuple[Image.Transform, Sequence[int]]: + return self.method, self.data + + def transform( + self, + size: tuple[int, int], + image: Image.Image, + **options: Any, + ) -> Image.Image: + """Perform the transform. Called from :py:meth:`.Image.transform`.""" + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + + +class AffineTransform(Transform): + """ + Define an affine image transform. + + This function takes a 6-tuple (a, b, c, d, e, f) which contain the first + two rows from an affine transform matrix. For each pixel (x, y) in the + output image, the new value is taken from a position (a x + b y + c, + d x + e y + f) in the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from an affine transform matrix. + """ + + method = Image.Transform.AFFINE + + +class PerspectiveTransform(Transform): + """ + Define a perspective image transform. + + This function takes an 8-tuple (a, b, c, d, e, f, g, h). For each pixel + (x, y) in the output image, the new value is taken from a position + ((a x + b y + c) / (g x + h y + 1), (d x + e y + f) / (g x + h y + 1)) in + the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`.Image.transform` + + :param matrix: An 8-tuple (a, b, c, d, e, f, g, h). + """ + + method = Image.Transform.PERSPECTIVE + + +class ExtentTransform(Transform): + """ + Define a transform to extract a subregion from an image. + + Maps a rectangle (defined by two corners) from the image to a rectangle of + the given size. The resulting image will contain data sampled from between + the corners, such that (x0, y0) in the input image will end up at (0,0) in + the output image, and (x1, y1) at size. + + This method can be used to crop, stretch, shrink, or mirror an arbitrary + rectangle in the current image. It is slightly slower than crop, but about + as fast as a corresponding resize operation. + + See :py:meth:`.Image.transform` + + :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the + input image's coordinate system. See :ref:`coordinate-system`. + """ + + method = Image.Transform.EXTENT + + +class QuadTransform(Transform): + """ + Define a quad image transform. + + Maps a quadrilateral (a region defined by four corners) from the image to a + rectangle of the given size. + + See :py:meth:`.Image.transform` + + :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the + upper left, lower left, lower right, and upper right corner of the + source quadrilateral. + """ + + method = Image.Transform.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.Transform.MESH diff --git a/libs/PIL/ImageWin.py b/libs/PIL/ImageWin.py new file mode 100644 index 0000000..98c28f2 --- /dev/null +++ b/libs/PIL/ImageWin.py @@ -0,0 +1,247 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image + + +class HDC: + """ + Wraps an HDC integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods. + """ + + def __init__(self, dc: int) -> None: + self.dc = dc + + def __int__(self) -> int: + return self.dc + + +class HWND: + """ + Wraps an HWND integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods, instead of a DC. + """ + + def __init__(self, wnd: int) -> None: + self.wnd = wnd + + def __int__(self) -> int: + return self.wnd + + +class Dib: + """ + A Windows bitmap with the given mode and size. The mode can be one of "1", + "L", "P", or "RGB". + + If the display requires a palette, this constructor creates a suitable + palette and associates it with the image. For an "L" image, 128 graylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 graylevels. + + To make sure that palettes work properly under Windows, you must call the + ``palette`` method upon certain events from Windows. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. The mode can be one of "1", + "L", "P", or "RGB". + :param size: If the first argument is a mode string, this + defines the size of the image. + """ + + def __init__( + self, image: Image.Image | str, size: tuple[int, int] | None = None + ) -> None: + if isinstance(image, str): + mode = image + image = "" + if size is None: + msg = "If first argument is mode, size is required" + raise ValueError(msg) + else: + mode = image.mode + size = image.size + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + assert not isinstance(image, str) + self.paste(image) + + def expose(self, handle: int | HDC | HWND) -> None: + """ + Copy the bitmap contents to a device context. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. In PythonWin, you can use + ``CDC.GetHandleAttrib()`` to get a suitable handle. + """ + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.expose(dc) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.expose(handle_int) + + def draw( + self, + handle: int | HDC | HWND, + dst: tuple[int, int, int, int], + src: tuple[int, int, int, int] | None = None, + ) -> None: + """ + Same as expose, but allows you to specify where to draw the image, and + what part of it to draw. + + The destination and source areas are given as 4-tuple rectangles. If + the source is omitted, the entire image is copied. If the source and + the destination have different sizes, the image is resized as + necessary. + """ + if src is None: + src = (0, 0) + self.size + handle_int = int(handle) + if isinstance(handle, HWND): + dc = self.image.getdc(handle_int) + try: + self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle_int, dc) + else: + self.image.draw(handle_int, dst, src) + + def query_palette(self, handle: int | HDC | HWND) -> int: + """ + Installs the palette associated with the image in the given device + context. + + This method should be called upon **QUERYNEWPALETTE** and + **PALETTECHANGED** events from Windows. If this method returns a + non-zero value, one or more display palette entries were changed, and + the image should be redrawn. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. + :return: The number of entries that were changed (if one or more entries, + this indicates that the image should be redrawn). + """ + handle_int = int(handle) + if isinstance(handle, HWND): + handle = self.image.getdc(handle_int) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle_int) + return result + + def paste( + self, im: Image.Image, box: tuple[int, int, int, int] | None = None + ) -> None: + """ + Paste a PIL image into the bitmap image. + + :param im: A PIL image. The size must match the target region. + If the mode does not match, the image is converted to the + mode of the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and + lower pixel coordinate. See :ref:`coordinate-system`. If + None is given instead of a tuple, all of the image is + assumed. + """ + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + def frombytes(self, buffer: bytes) -> None: + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + self.image.frombytes(buffer) + + def tobytes(self) -> bytes: + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window: + """Create a Window with the given title size.""" + + def __init__( + self, title: str = "PIL", width: int | None = None, height: int | None = None + ) -> None: + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action: str, *args: int) -> None: + getattr(self, f"ui_handle_{action}")(*args) + + def ui_handle_clear(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_damage(self, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_destroy(self) -> None: + pass + + def ui_handle_repair(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + pass + + def ui_handle_resize(self, width: int, height: int) -> None: + pass + + def mainloop(self) -> None: + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image: Image.Image | Dib, title: str = "PIL") -> None: + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + super().__init__(title, width=width, height=height) + + def ui_handle_repair(self, dc: int, x0: int, y0: int, x1: int, y1: int) -> None: + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/libs/PIL/ImtImagePlugin.py b/libs/PIL/ImtImagePlugin.py new file mode 100644 index 0000000..068cd5c --- /dev/null +++ b/libs/PIL/ImtImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(rb"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + format = "IMT" + format_description = "IM Tools" + + def _open(self) -> None: + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + assert self.fp is not None + + buffer = self.fp.read(100) + if b"\n" not in buffer: + msg = "not an IM file" + raise SyntaxError(msg) + + xsize = ysize = 0 + + while True: + if buffer: + s = buffer[:1] + buffer = buffer[1:] + else: + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + # image data begins + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell() - len(buffer), + self.mode, + ) + ] + + break + + else: + # read key/value pair + if b"\n" not in buffer: + buffer += self.fp.read(100) + lines = buffer.split(b"\n") + s += lines.pop(0) + buffer = b"\n".join(lines) + if len(s) == 1 or len(s) > 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == b"width": + xsize = int(v) + self._size = xsize, ysize + elif k == b"height": + ysize = int(v) + self._size = xsize, ysize + elif k == b"pixel" and v == b"n8": + self._mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/libs/PIL/IptcImagePlugin.py b/libs/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..60ab7c8 --- /dev/null +++ b/libs/PIL/IptcImagePlugin.py @@ -0,0 +1,249 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from collections.abc import Sequence +from io import BytesIO +from typing import cast + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._deprecate import deprecate + +COMPRESSION = {1: "raw", 5: "jpeg"} + + +def __getattr__(name: str) -> bytes: + if name == "PAD": + deprecate("IptcImagePlugin.PAD", 12) + return b"\0\0\0\0" + msg = f"module '{__name__}' has no attribute '{name}'" + raise AttributeError(msg) + + +# +# Helpers + + +def _i(c: bytes) -> int: + return i32((b"\0\0\0\0" + c)[-4:]) + + +def _i8(c: int | bytes) -> int: + return c if isinstance(c, int) else c[0] + + +def i(c: bytes) -> int: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.i", 12) + return _i(c) + + +def dump(c: Sequence[int | bytes]) -> None: + """.. deprecated:: 10.2.0""" + deprecate("IptcImagePlugin.dump", 12) + for i in c: + print(f"{_i8(i):02x}", end=" ") + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + + +class IptcImageFile(ImageFile.ImageFile): + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key: tuple[int, int]) -> int: + return _i(self.info[key]) + + def field(self) -> tuple[tuple[int, int] | None, int]: + # + # get a IPTC field header + s = self.fp.read(5) + if not s.strip(b"\x00"): + return None, 0 + + tag = s[1], s[2] + + # syntax + if s[0] != 0x1C or tag[0] not in [1, 2, 3, 4, 5, 6, 7, 8, 9, 240]: + msg = "invalid IPTC/NAA file" + raise SyntaxError(msg) + + # field size + size = s[3] + if size > 132: + msg = "illegal field length in IPTC/NAA file" + raise OSError(msg) + elif size == 128: + size = 0 + elif size > 128: + size = _i(self.fp.read(size - 128)) + else: + size = i16(s, 3) + + return tag, size + + def _open(self) -> None: + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # mode + layers = self.info[(3, 60)][0] + component = self.info[(3, 60)][1] + if (3, 65) in self.info: + id = self.info[(3, 65)][0] - 1 + else: + id = 0 + if layers == 1 and not component: + self._mode = "L" + elif layers == 3 and component: + self._mode = "RGB"[id] + elif layers == 4 and component: + self._mode = "CMYK"[id] + + # size + self._size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError as e: + msg = "Unknown IPTC image compression" + raise OSError(msg) from e + + # tile + if tag == (8, 10): + self.tile = [ + ImageFile._Tile("iptc", (0, 0) + self.size, offset, compression) + ] + + def load(self) -> Image.core.PixelAccess | None: + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + offset, compression = self.tile[0][2:] + + self.fp.seek(offset) + + # Copy image data to temporary file + o = BytesIO() + if compression == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write(b"P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + + with Image.open(o) as _im: + _im.load() + self.im = _im.im + return None + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo( + im: ImageFile.ImageFile, +) -> dict[tuple[int, int], bytes | list[bytes]] | None: + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + from . import JpegImagePlugin, TiffImagePlugin + + data = None + + info: dict[tuple[int, int], bytes | list[bytes]] = {} + if isinstance(im, IptcImageFile): + # return info dictionary right away + for k, v in im.info.items(): + if isinstance(k, tuple): + info[k] = v + return info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + photoshop = im.info.get("photoshop") + if photoshop: + data = photoshop.get(0x0404) + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag_v2[TiffImagePlugin.IPTC_NAA_CHUNK] + except KeyError: + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + fake_im = FakeImage() + fake_im.__class__ = IptcImageFile # type: ignore[assignment] + iptc_im = cast(IptcImageFile, fake_im) + + # parse the IPTC information chunk + iptc_im.info = {} + iptc_im.fp = BytesIO(data) + + try: + iptc_im._open() + except (IndexError, KeyError): + pass # expected failure + + for k, v in iptc_im.info.items(): + if isinstance(k, tuple): + info[k] = v + return info diff --git a/libs/PIL/Jpeg2KImagePlugin.py b/libs/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..6782835 --- /dev/null +++ b/libs/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,443 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# 2021-06-30 rogermb Extract dpi information from the 'resc' header box +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import os +import struct +from collections.abc import Callable +from typing import IO, cast + +from . import Image, ImageFile, ImagePalette, _binary + + +class BoxReader: + """ + A small helper class to read fields stored in JPEG2000 header boxes + and to easily step into and read sub-boxes. + """ + + def __init__(self, fp: IO[bytes], length: int = -1) -> None: + self.fp = fp + self.has_length = length >= 0 + self.length = length + self.remaining_in_box = -1 + + def _can_read(self, num_bytes: int) -> bool: + if self.has_length and self.fp.tell() + num_bytes > self.length: + # Outside box: ensure we don't read past the known file length + return False + if self.remaining_in_box >= 0: + # Inside box contents: ensure read does not go past box boundaries + return num_bytes <= self.remaining_in_box + else: + return True # No length known, just read + + def _read_bytes(self, num_bytes: int) -> bytes: + if not self._can_read(num_bytes): + msg = "Not enough data in header" + raise SyntaxError(msg) + + data = self.fp.read(num_bytes) + if len(data) < num_bytes: + msg = f"Expected to read {num_bytes} bytes but only got {len(data)}." + raise OSError(msg) + + if self.remaining_in_box > 0: + self.remaining_in_box -= num_bytes + return data + + def read_fields(self, field_format: str) -> tuple[int | bytes, ...]: + size = struct.calcsize(field_format) + data = self._read_bytes(size) + return struct.unpack(field_format, data) + + def read_boxes(self) -> BoxReader: + size = self.remaining_in_box + data = self._read_bytes(size) + return BoxReader(io.BytesIO(data), size) + + def has_next_box(self) -> bool: + if self.has_length: + return self.fp.tell() + self.remaining_in_box < self.length + else: + return True + + def next_box_type(self) -> bytes: + # Skip the rest of the box if it has not been read + if self.remaining_in_box > 0: + self.fp.seek(self.remaining_in_box, os.SEEK_CUR) + self.remaining_in_box = -1 + + # Read the length and type of the next box + lbox, tbox = cast(tuple[int, bytes], self.read_fields(">I4s")) + if lbox == 1: + lbox = cast(int, self.read_fields(">Q")[0]) + hlen = 16 + else: + hlen = 8 + + if lbox < hlen or not self._can_read(lbox - hlen): + msg = "Invalid header length" + raise SyntaxError(msg) + + self.remaining_in_box = lbox - hlen + return tbox + + +def _parse_codestream(fp: IO[bytes]) -> tuple[tuple[int, int], str]: + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = _binary.i16be(hdr) + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + ssiz = struct.unpack_from(">B", siz, 38) + if (ssiz[0] & 0x7F) + 1 > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + msg = "unable to determine J2K image mode" + raise SyntaxError(msg) + + return size, mode + + +def _res_to_dpi(num: int, denom: int, exp: int) -> float | None: + """Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution, + calculated as (num / denom) * 10^exp and stored in dots per meter, + to floating-point dots per inch.""" + if denom == 0: + return None + return (254 * num * (10**exp)) / (10000 * denom) + + +def _parse_jp2_header( + fp: IO[bytes], +) -> tuple[ + tuple[int, int], + str, + str | None, + tuple[float, float] | None, + ImagePalette.ImagePalette | None, +]: + """Parse the JP2 header box to extract size, component count, + color space information, and optionally DPI information, + returning a (size, mode, mimetype, dpi) tuple.""" + + # Find the JP2 header box + reader = BoxReader(fp) + header = None + mimetype = None + while reader.has_next_box(): + tbox = reader.next_box_type() + + if tbox == b"jp2h": + header = reader.read_boxes() + break + elif tbox == b"ftyp": + if reader.read_fields(">4s")[0] == b"jpx ": + mimetype = "image/jpx" + assert header is not None + + size = None + mode = None + bpc = None + nc = None + dpi = None # 2-tuple of DPI info, or None + palette = None + + while header.has_next_box(): + tbox = header.next_box_type() + + if tbox == b"ihdr": + height, width, nc, bpc = header.read_fields(">IIHB") + assert isinstance(height, int) + assert isinstance(width, int) + assert isinstance(bpc, int) + size = (width, height) + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + elif tbox == b"colr" and nc == 4: + meth, _, _, enumcs = header.read_fields(">BBBI") + if meth == 1 and enumcs == 12: + mode = "CMYK" + elif tbox == b"pclr" and mode in ("L", "LA"): + ne, npc = header.read_fields(">HB") + assert isinstance(ne, int) + assert isinstance(npc, int) + max_bitdepth = 0 + for bitdepth in header.read_fields(">" + ("B" * npc)): + assert isinstance(bitdepth, int) + if bitdepth > max_bitdepth: + max_bitdepth = bitdepth + if max_bitdepth <= 8: + palette = ImagePalette.ImagePalette("RGBA" if npc == 4 else "RGB") + for i in range(ne): + color: list[int] = [] + for value in header.read_fields(">" + ("B" * npc)): + assert isinstance(value, int) + color.append(value) + palette.getcolor(tuple(color)) + mode = "P" if mode == "L" else "PA" + elif tbox == b"res ": + res = header.read_boxes() + while res.has_next_box(): + tres = res.next_box_type() + if tres == b"resc": + vrcn, vrcd, hrcn, hrcd, vrce, hrce = res.read_fields(">HHHHBB") + assert isinstance(vrcn, int) + assert isinstance(vrcd, int) + assert isinstance(hrcn, int) + assert isinstance(hrcd, int) + assert isinstance(vrce, int) + assert isinstance(hrce, int) + hres = _res_to_dpi(hrcn, hrcd, hrce) + vres = _res_to_dpi(vrcn, vrcd, vrce) + if hres is not None and vres is not None: + dpi = (hres, vres) + break + + if size is None or mode is None: + msg = "Malformed JP2 header" + raise SyntaxError(msg) + + return size, mode, mimetype, dpi, palette + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self) -> None: + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self._mode = _parse_codestream(self.fp) + self._parse_comment() + else: + sig = sig + self.fp.read(8) + + if sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a": + self.codec = "jp2" + header = _parse_jp2_header(self.fp) + self._size, self._mode, self.custom_mimetype, dpi, self.palette = header + if dpi is not None: + self.info["dpi"] = dpi + if self.fp.read(12).endswith(b"jp2c\xff\x4f\xff\x51"): + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + self.fp.seek(length - 2, os.SEEK_CUR) + self._parse_comment() + else: + msg = "not a JPEG 2000 file" + raise SyntaxError(msg) + + self._reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except Exception: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, io.SEEK_END) + length = self.fp.tell() + self.fp.seek(pos) + except Exception: + length = -1 + + self.tile = [ + ImageFile._Tile( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + def _parse_comment(self) -> None: + while True: + marker = self.fp.read(2) + if not marker: + break + typ = marker[1] + if typ in (0x90, 0xD9): + # Start of tile or end of codestream + break + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + if typ == 0x64: + # Comment + self.info["comment"] = self.fp.read(length - 2)[2:] + break + else: + self.fp.seek(length - 2, os.SEEK_CUR) + + @property # type: ignore[override] + def reduce( + self, + ) -> ( + Callable[[int | tuple[int, int], tuple[int, int, int, int] | None], Image.Image] + | int + ): + # https://github.com/python-pillow/Pillow/issues/4343 found that the + # new Image 'reduce' method was shadowed by this plugin's 'reduce' + # property. This attempts to allow for both scenarios + return self._reduce or super().reduce + + @reduce.setter + def reduce(self, value: int) -> None: + self._reduce = value + + def load(self) -> Image.core.PixelAccess | None: + if self.tile and self._reduce: + power = 1 << self._reduce + adjust = power >> 1 + self._size = ( + int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power), + ) + + # Update the reduce and layers settings + t = self.tile[0] + assert isinstance(t[3], tuple) + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [ImageFile._Tile(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix: bytes) -> bool: + return ( + prefix[:4] == b"\xff\x4f\xff\x51" + or prefix[:12] == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # Get the keyword arguments + info = im.encoderinfo + + if isinstance(filename, str): + filename = filename.encode() + if filename.endswith(b".j2k") or info.get("no_jp2", False): + kind = "j2k" + else: + kind = "jp2" + + offset = info.get("offset", None) + tile_offset = info.get("tile_offset", None) + tile_size = info.get("tile_size", None) + quality_mode = info.get("quality_mode", "rates") + quality_layers = info.get("quality_layers", None) + if quality_layers is not None and not ( + isinstance(quality_layers, (list, tuple)) + and all( + isinstance(quality_layer, (int, float)) for quality_layer in quality_layers + ) + ): + msg = "quality_layers must be a sequence of numbers" + raise ValueError(msg) + + num_resolutions = info.get("num_resolutions", 0) + cblk_size = info.get("codeblock_size", None) + precinct_size = info.get("precinct_size", None) + irreversible = info.get("irreversible", False) + progression = info.get("progression", "LRCP") + cinema_mode = info.get("cinema_mode", "no") + mct = info.get("mct", 0) + signed = info.get("signed", False) + comment = info.get("comment") + if isinstance(comment, str): + comment = comment.encode() + plt = info.get("plt", False) + + fd = -1 + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except Exception: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + mct, + signed, + fd, + comment, + plt, + ) + + ImageFile._save(im, fp, [ImageFile._Tile("jpeg2k", (0, 0) + im.size, 0, kind)]) + + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions( + Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"] +) + +Image.register_mime(Jpeg2KImageFile.format, "image/jp2") diff --git a/libs/PIL/JpegImagePlugin.py b/libs/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..457690a --- /dev/null +++ b/libs/PIL/JpegImagePlugin.py @@ -0,0 +1,905 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import array +import io +import math +import os +import struct +import subprocess +import sys +import tempfile +import warnings +from typing import IO, TYPE_CHECKING, Any + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._deprecate import deprecate +from .JpegPresets import presets + +if TYPE_CHECKING: + from .MpoImagePlugin import MpoImageFile + +# +# Parser + + +def Skip(self: JpegImageFile, marker: int) -> None: + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self: JpegImageFile, marker: int) -> None: + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + app = f"APP{marker & 15}" + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == b"JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = s[7] + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + elif jfif_unit == 2: # cm + # 1 dpcm = 2.54 dpi + self.info["dpi"] = tuple(d * 2.54 for d in jfif_density) + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:6] == b"Exif\0\0": + # extract EXIF information + if "exif" in self.info: + self.info["exif"] += s[6:] + else: + self.info["exif"] = s + self._exif_offset = self.fp.tell() - n + 6 + elif marker == 0xFFE1 and s[:29] == b"http://ns.adobe.com/xap/1.0/\x00": + self.info["xmp"] = s.split(b"\x00", 1)[1] + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == b"ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00": + # parse the image resource block + offset = 14 + photoshop = self.info.setdefault("photoshop", {}) + while s[offset : offset + 4] == b"8BIM": + try: + offset += 4 + # resource code + code = i16(s, offset) + offset += 2 + # resource name (usually empty) + name_len = s[offset] + # name = s[offset+1:offset+1+name_len] + offset += 1 + name_len + offset += offset & 1 # align + # resource data block + size = i32(s, offset) + offset += 4 + data = s[offset : offset + size] + if code == 0x03ED: # ResolutionInfo + photoshop[code] = { + "XResolution": i32(data, 0) / 65536, + "DisplayedUnitsX": i16(data, 4), + "YResolution": i32(data, 8) / 65536, + "DisplayedUnitsY": i16(data, 12), + } + else: + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = s[11] + except IndexError: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == b"MPF\0": + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + +def COM(self: JpegImageFile, marker: int) -> None: + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + self.info["comment"] = s + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self: JpegImageFile, marker: int) -> None: + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + self._size = i16(s, 3), i16(s, 1) + + self.bits = s[0] + if self.bits != 8: + msg = f"cannot handle {self.bits}-bit layers" + raise SyntaxError(msg) + + self.layers = s[5] + if self.layers == 1: + self._mode = "L" + elif self.layers == 3: + self._mode = "RGB" + elif self.layers == 4: + self._mode = "CMYK" + else: + msg = f"cannot handle {self.layers}-layer images" + raise SyntaxError(msg) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if self.icclist[0][13] == len(self.icclist): + profile = [p[14:] for p in self.icclist] + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = [] + + for i in range(6, len(s), 3): + t = s[i : i + 3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], t[1] // 16, t[1] & 15, t[2])) + + +def DQT(self: JpegImageFile, marker: int) -> None: + # + # Define quantization table. Note that there might be more + # than one table in each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + v = s[0] + precision = 1 if (v // 16 == 0) else 2 # in bytes + qt_length = 1 + precision * 64 + if len(s) < qt_length: + msg = "bad quantization table marker" + raise SyntaxError(msg) + data = array.array("B" if precision == 1 else "H", s[1:qt_length]) + if sys.byteorder == "little" and precision > 1: + data.byteswap() # the values are always big-endian + self.quantization[v & 15] = [data[i] for i in zigzag_index] + s = s[qt_length:] + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM), +} + + +def _accept(prefix: bytes) -> bool: + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix[:3] == b"\xFF\xD8\xFF" + + +## +# Image plugin for JPEG and JFIF images. + + +class JpegImageFile(ImageFile.ImageFile): + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self) -> None: + s = self.fp.read(3) + + if not _accept(s): + msg = "not a JPEG file" + raise SyntaxError(msg) + s = b"\xFF" + + # Create attributes + self.bits = self.layers = 0 + self._exif_offset = 0 + + # JPEG specifics (internal) + self.layer: list[tuple[int, int, int, int]] = [] + self._huffman_dc: dict[Any, Any] = {} + self._huffman_ac: dict[Any, Any] = {} + self.quantization: dict[int, list[int]] = {} + self.app: dict[str, bytes] = {} # compatibility + self.applist: list[tuple[str, bytes]] = [] + self.icclist: list[bytes] = [] + + while True: + i = s[0] + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, 0, (rawmode, "")) + ] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i in {0, 0xFFFF}: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + msg = "no marker found" + raise SyntaxError(msg) + + self._read_dpi_from_exif() + + def __getattr__(self, name: str) -> Any: + if name in ("huffman_ac", "huffman_dc"): + deprecate(name, 12) + return getattr(self, "_" + name) + raise AttributeError(name) + + def __getstate__(self) -> list[Any]: + return super().__getstate__() + [self.layers, self.layer] + + def __setstate__(self, state: list[Any]) -> None: + super().__setstate__(state) + self.layers, self.layer = state[5:] + + def load_read(self, read_bytes: int) -> bytes: + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES and not hasattr(self, "_ended"): + # Premature EOF. + # Pretend file is finished adding EOI marker + self._ended = True + return b"\xFF\xD9" + + return s + + def draft( + self, mode: str | None, size: tuple[int, int] | None + ) -> tuple[str, tuple[int, int, float, float]] | None: + if len(self.tile) != 1: + return None + + # Protect from second call + if self.decoderconfig: + return None + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + assert isinstance(a, tuple) + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self._mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + assert e is not None + e = ( + e[0], + e[1], + (e[2] - e[0] + s - 1) // s + e[0], + (e[3] - e[1] + s - 1) // s + e[1], + ) + self._size = ((self.size[0] + s - 1) // s, (self.size[1] + s - 1) // s) + scale = s + + self.tile = [ImageFile._Tile(d, e, o, a)] + self.decoderconfig = (scale, 0) + + box = (0, 0, original_size[0] / scale, original_size[1] / scale) + return self.mode, box + + def load_djpeg(self) -> None: + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + try: + os.unlink(path) + except OSError: + pass + + msg = "Invalid Filename" + raise ValueError(msg) + + try: + with Image.open(path) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self._mode = self.im.mode + self._size = self.im.size + + self.tile = [] + + def _getexif(self) -> dict[int, Any] | None: + return _getexif(self) + + def _read_dpi_from_exif(self) -> None: + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" in self.info or "exif" not in self.info: + return + try: + exif = self.getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = float(x_resolution[0]) / x_resolution[1] + except TypeError: + dpi = x_resolution + if math.isnan(dpi): + msg = "DPI is not a number" + raise ValueError(msg) + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = dpi, dpi + except ( + struct.error, # truncated EXIF + KeyError, # dpi not included + SyntaxError, # invalid/unreadable EXIF + TypeError, # dpi is an invalid float + ValueError, # dpi is an invalid float + ZeroDivisionError, # invalid dpi rational value + ): + self.info["dpi"] = 72, 72 + + def _getmp(self) -> dict[int, Any] | None: + return _getmp(self) + + +def _getexif(self: JpegImageFile) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + +def _getmp(self: JpegImageFile) -> dict[int, Any] | None: + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plugin. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = ">" if head[:4] == b"\x4d\x4d\x00\x2a" else "<" + # process dictionary + from . import TiffImagePlugin + + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + msg = "malformed MP Index (unreadable directory)" + raise SyntaxError(msg) from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + msg = "malformed MP Index (no number of images)" + raise SyntaxError(msg) from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + f"{endianness}LLLHH", rawmpentries, entrynum * 16 + ) + labels = ("Attribute", "Size", "DataOffset", "EntryNo1", "EntryNo2") + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + "DependentParentImageFlag": bool(mpentry["Attribute"] & (1 << 31)), + "DependentChildImageFlag": bool(mpentry["Attribute"] & (1 << 30)), + "RepresentativeImageFlag": bool(mpentry["Attribute"] & (1 << 29)), + "Reserved": (mpentry["Attribute"] & (3 << 27)) >> 27, + "ImageDataFormat": (mpentry["Attribute"] & (7 << 24)) >> 24, + "MPType": mpentry["Attribute"] & 0x00FFFFFF, + } + if mpentryattr["ImageDataFormat"] == 0: + mpentryattr["ImageDataFormat"] = "JPEG" + else: + msg = "unsupported picture format in MPO" + raise SyntaxError(msg) + mptypemap = { + 0x000000: "Undefined", + 0x010001: "Large Thumbnail (VGA Equivalent)", + 0x010002: "Large Thumbnail (Full HD Equivalent)", + 0x020001: "Multi-Frame Image (Panorama)", + 0x020002: "Multi-Frame Image: (Disparity)", + 0x020003: "Multi-Frame Image: (Multi-Angle)", + 0x030000: "Baseline MP Primary Image", + } + mpentryattr["MPType"] = mptypemap.get(mpentryattr["MPType"], "Unknown") + mpentry["Attribute"] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError as e: + msg = "malformed MP Index (bad MP Entry)" + raise SyntaxError(msg) from e + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +# fmt: off +zigzag_index = ( + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63, +) + +samplings = { + (1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, +} +# fmt: on + + +def get_sampling(im: Image.Image) -> int: + # There's no subsampling when images have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to the default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not isinstance(im, JpegImageFile) or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.width == 0 or im.height == 0: + msg = "cannot write empty image as JPEG" + raise ValueError(msg) + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as JPEG" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = [round(x) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", -1) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = -1 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = -1 + subsampling = preset.get("subsampling", -1) + qtables = preset.get("quantization") + elif not isinstance(quality, int): + msg = "Invalid quality setting" + raise ValueError(msg) + else: + if subsampling in presets: + subsampling = presets[subsampling].get("subsampling", -1) + if isinstance(qtables, str) and qtables in presets: + qtables = presets[qtables].get("quantization") + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + subsampling = get_sampling(im) + + def validate_qtables( + qtables: ( + str | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | None + ) + ) -> list[list[int]] | None: + if qtables is None: + return qtables + if isinstance(qtables, str): + try: + lines = [ + int(num) + for line in qtables.splitlines() + for num in line.split("#", 1)[0].split() + ] + except ValueError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables = [lines[s : s + 64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = [ + qtables[key] for key in range(len(qtables)) if key in qtables + ] + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + msg = "None or too many quantization tables" + raise ValueError(msg) + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + msg = "Invalid quantization table" + raise TypeError(msg) + table_array = array.array("H", table) + except TypeError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables[idx] = list(table_array) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = info.get("extra", b"") + + MAX_BYTES_IN_MARKER = 65533 + xmp = info.get("xmp") + if xmp: + overhead_len = 29 # b"http://ns.adobe.com/xap/1.0/\x00" + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len + if len(xmp) > max_data_bytes_in_marker: + msg = "XMP data is too long" + raise ValueError(msg) + size = o16(2 + overhead_len + len(xmp)) + extra += b"\xFF\xE1" + size + b"http://ns.adobe.com/xap/1.0/\x00" + xmp + + icc_profile = info.get("icc_profile") + if icc_profile: + overhead_len = 14 # b"ICC_PROFILE\0" + o8(i) + o8(len(markers)) + max_data_bytes_in_marker = MAX_BYTES_IN_MARKER - overhead_len + markers = [] + while icc_profile: + markers.append(icc_profile[:max_data_bytes_in_marker]) + icc_profile = icc_profile[max_data_bytes_in_marker:] + i = 1 + for marker in markers: + size = o16(2 + overhead_len + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + comment = info.get("comment", im.info.get("comment")) + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or info.get("progression", False) + + optimize = info.get("optimize", False) + + exif = info.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if len(exif) > MAX_BYTES_IN_MARKER: + msg = "EXIF data is too long" + raise ValueError(msg) + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("keep_rgb", False), + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + info.get("restart_marker_blocks", 0), + info.get("restart_marker_rows", 0), + qtables, + comment, + extra, + exif, + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + bufsize = 0 + if optimize or progressive: + # CMYK can be bigger + if im.mode == "CMYK": + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to -1, but the actual value may be high. + elif quality >= 95 or quality == -1: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + if exif: + bufsize += len(exif) + 5 + if extra: + bufsize += len(extra) + 1 + else: + # The EXIF info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save( + im, fp, [ImageFile._Tile("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize + ) + + +def _save_cjpeg(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory( + fp: IO[bytes], filename: str | bytes | None = None +) -> JpegImageFile | MpoImageFile: + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader is not None and mpheader[45057] > 1: + for segment, content in im.applist: + if segment == "APP1" and b' hdrgm:Version="' in content: + # Ultra HDR images are not yet supported + return im + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + + # Don't reload everything, just convert it. + im = MpoImageFile.adopt(im, mpheader) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn( + "Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file" + ) + return im + + +# --------------------------------------------------------------------- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/libs/PIL/JpegPresets.py b/libs/PIL/JpegPresets.py new file mode 100644 index 0000000..d0e64a3 --- /dev/null +++ b/libs/PIL/JpegPresets.py @@ -0,0 +1,242 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. +Can be used when saving JPEG files. + +The following presets are available by default: +``web_low``, ``web_medium``, ``web_high``, ``web_very_high``, ``web_maximum``, +``low``, ``medium``, ``high``, ``maximum``. +More presets can be added to the :py:data:`presets` dict if needed. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +:func:`.JpegImagePlugin.get_sampling` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://exiv2.org/tags.html) + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of lists. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The quantization table format in presets is a list with sublists. These formats +are interchangeable. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +from __future__ import annotations + +# fmt: off +presets = { + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} +# fmt: on diff --git a/libs/PIL/McIdasImagePlugin.py b/libs/PIL/McIdasImagePlugin.py new file mode 100644 index 0000000..5dd031b --- /dev/null +++ b/libs/PIL/McIdasImagePlugin.py @@ -0,0 +1,80 @@ +# +# 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[:8] == 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] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I" + 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 diff --git a/libs/PIL/MicImagePlugin.py b/libs/PIL/MicImagePlugin.py new file mode 100644 index 0000000..5f23a34 --- /dev/null +++ b/libs/PIL/MicImagePlugin.py @@ -0,0 +1,107 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# 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 olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for Microsoft's Image Composer file format. + + +class MicImageFile(TiffImagePlugin.TiffImageFile): + format = "MIC" + format_description = "Microsoft Image Composer" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an MIC file; invalid OLE file" + raise SyntaxError(msg) from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [ + path + for path in self.ole.listdir() + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image" + ] + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + msg = "not an MIC file; no image entries" + raise SyntaxError(msg) + + self.frame = -1 + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + self.__fp = self.fp + self.seek(0) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError as e: + msg = "no such frame" + raise EOFError(msg) from e + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self) -> int: + return self.frame + + def close(self) -> None: + self.__fp.close() + self.ole.close() + super().close() + + def __exit__(self, *args: object) -> None: + self.__fp.close() + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/libs/PIL/MpegImagePlugin.py b/libs/PIL/MpegImagePlugin.py new file mode 100644 index 0000000..ad4d3e9 --- /dev/null +++ b/libs/PIL/MpegImagePlugin.py @@ -0,0 +1,88 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile +from ._binary import i8 +from ._typing import SupportsRead + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp: SupportsRead[bytes]) -> None: + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self) -> int: + return i8(self.fp.read(1)) + + def peek(self, bits: int) -> int: + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits: int) -> None: + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits: int) -> int: + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"\x00\x00\x01\xb3" + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + + +class MpegImageFile(ImageFile.ImageFile): + format = "MPEG" + format_description = "MPEG" + + def _open(self) -> None: + assert self.fp is not None + + s = BitStream(self.fp) + if s.read(32) != 0x1B3: + msg = "not an MPEG file" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile, _accept) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/libs/PIL/MpoImagePlugin.py b/libs/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..71f89a0 --- /dev/null +++ b/libs/PIL/MpoImagePlugin.py @@ -0,0 +1,190 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import itertools +import os +import struct +from typing import IO, Any, cast + +from . import ( + Image, + ImageFile, + ImageSequence, + JpegImagePlugin, + TiffImagePlugin, +) +from ._binary import o32le + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + JpegImagePlugin._save(im, fp, filename) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + append_images = im.encoderinfo.get("append_images", []) + if not append_images and not getattr(im, "is_animated", False): + _save(im, fp, filename) + return + + mpf_offset = 28 + offsets: list[int] = [] + for imSequence in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(imSequence): + if not offsets: + # APP2 marker + im_frame.encoderinfo["extra"] = ( + b"\xFF\xE2" + struct.pack(">H", 6 + 82) + b"MPF\0" + b" " * 82 + ) + exif = im_frame.encoderinfo.get("exif") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + im_frame.encoderinfo["exif"] = exif + if exif: + mpf_offset += 4 + len(exif) + + JpegImagePlugin._save(im_frame, fp, filename) + offsets.append(fp.tell()) + else: + im_frame.save(fp, "JPEG") + offsets.append(fp.tell() - offsets[-1]) + + ifd = TiffImagePlugin.ImageFileDirectory_v2() + ifd[0xB000] = b"0100" + ifd[0xB001] = len(offsets) + + mpentries = b"" + data_offset = 0 + for i, size in enumerate(offsets): + if i == 0: + mptype = 0x030000 # Baseline MP Primary Image + else: + mptype = 0x000000 # Undefined + mpentries += struct.pack(" None: + self.fp.seek(0) # prep the fp in order to pass the JPEG test + JpegImagePlugin.JpegImageFile._open(self) + self._after_jpeg_open() + + def _after_jpeg_open(self, mpheader: dict[int, Any] | None = None) -> None: + self.mpinfo = mpheader if mpheader is not None else self._getmp() + if self.mpinfo is None: + msg = "Image appears to be a malformed MPO file" + raise ValueError(msg) + self.n_frames = self.mpinfo[0xB001] + self.__mpoffsets = [ + mpent["DataOffset"] + self.info["mpoffset"] for mpent in self.mpinfo[0xB002] + ] + self.__mpoffsets[0] = 0 + # Note that the following assertion will only be invalid if something + # gets broken within JpegImagePlugin. + assert self.n_frames == len(self.__mpoffsets) + del self.info["mpoffset"] # no longer needed + self.is_animated = self.n_frames > 1 + self._fp = self.fp # FIXME: hack + self._fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos: int) -> None: + self._fp.seek(pos) + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + self.fp = self._fp + self.offset = self.__mpoffsets[frame] + + original_exif = self.info.get("exif") + if "exif" in self.info: + del self.info["exif"] + + self.fp.seek(self.offset + 2) # skip SOI marker + if not self.fp.read(2): + msg = "No data found for frame" + raise ValueError(msg) + self.fp.seek(self.offset) + JpegImagePlugin.JpegImageFile._open(self) + if self.info.get("exif") != original_exif: + self._reload_exif() + + self.tile = [ + ImageFile._Tile("jpeg", (0, 0) + self.size, self.offset, self.tile[0][-1]) + ] + self.__frame = frame + + def tell(self) -> int: + return self.__frame + + @staticmethod + def adopt( + jpeg_instance: JpegImagePlugin.JpegImageFile, + mpheader: dict[int, Any] | None = None, + ) -> MpoImageFile: + """ + Transform the instance of JpegImageFile into + an instance of MpoImageFile. + After the call, the JpegImageFile is extended + to be an MpoImageFile. + + This is essentially useful when opening a JPEG + file that reveals itself as an MPO, to avoid + double call to _open. + """ + jpeg_instance.__class__ = MpoImageFile + mpo_instance = cast(MpoImageFile, jpeg_instance) + mpo_instance._after_jpeg_open(mpheader) + return mpo_instance + + +# --------------------------------------------------------------------- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) +Image.register_save_all(MpoImageFile.format, _save_all) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/libs/PIL/MspImagePlugin.py b/libs/PIL/MspImagePlugin.py new file mode 100644 index 0000000..ef6ae87 --- /dev/null +++ b/libs/PIL/MspImagePlugin.py @@ -0,0 +1,200 @@ +# +# The Python Imaging Library. +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# 17-02-21 es Fixed RLE interpretation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# Copyright (c) Eric Soroos 2017. +# +# See the README file for information on usage and redistribution. +# +# More info on this format: https://archive.org/details/gg243631 +# Page 313: +# Figure 205. Windows Paint Version 1: "DanM" Format +# Figure 206. Windows Paint Version 2: "LinS" Format. Used in Windows V2.03 +# +# See also: https://www.fileformat.info/format/mspaint/egff.htm +from __future__ import annotations + +import io +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as i16 +from ._binary import o16le as o16 + +# +# read MSP files + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] in [b"DanM", b"LinS"] + + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + + +class MspImageFile(ImageFile.ImageFile): + format = "MSP" + format_description = "Windows Paint" + + def _open(self) -> None: + # Header + assert self.fp is not None + + s = self.fp.read(32) + if not _accept(s): + msg = "not an MSP file" + raise SyntaxError(msg) + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s, i) + if checksum != 0: + msg = "bad MSP checksum" + raise SyntaxError(msg) + + self._mode = "1" + self._size = i16(s, 4), i16(s, 6) + + if s[:4] == b"DanM": + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 32, "1")] + else: + self.tile = [ImageFile._Tile("MSP", (0, 0) + self.size, 32)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # https://www.fileformat.info/format/mspaint/egff.htm + # cc-by-attribution -- That page references is taken from the + # Encyclopedia of Graphics File Formats and is licensed by + # O'Reilly under the Creative Common/Attribution license + # + # For RLE encoded files, the 32byte header is followed by a scan + # line map, encoded as one 16bit word of encoded byte length per + # line. + # + # NOTE: the encoded length of the line can be 0. This was not + # handled in the previous version of this encoder, and there's no + # mention of how to handle it in the documentation. From the few + # examples I've seen, I've assumed that it is a fill of the + # background color, in this case, white. + # + # + # Pseudocode of the decoder: + # Read a BYTE value as the RunType + # If the RunType value is zero + # Read next byte as the RunCount + # Read the next byte as the RunValue + # Write the RunValue byte RunCount times + # If the RunType value is non-zero + # Use this value as the RunCount + # Read and write the next RunCount bytes literally + # + # e.g.: + # 0x00 03 ff 05 00 01 02 03 04 + # would yield the bytes: + # 0xff ff ff 00 01 02 03 04 + # + # which are then interpreted as a bit packed mode '1' image + + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + f"<{self.state.ysize}H", self.fd.read(self.state.ysize * 2) + ) + except struct.error as e: + msg = "Truncated MSP file in row map" + raise OSError(msg) from e + + for x, rowlen in enumerate(rowmap): + try: + if rowlen == 0: + img.write(blank_line) + continue + row = self.fd.read(rowlen) + if len(row) != rowlen: + msg = f"Truncated MSP file, expected {rowlen} bytes on row {x}" + raise OSError(msg) + idx = 0 + while idx < rowlen: + runtype = row[idx] + idx += 1 + if runtype == 0: + (runcount, runval) = struct.unpack_from("Bc", row, idx) + img.write(runval * runcount) + idx += 2 + else: + runcount = runtype + img.write(row[idx : idx + runcount]) + idx += runcount + + except struct.error as e: + msg = f"Corrupted MSP file in row {x}" + raise OSError(msg) from e + + self.set_as_raw(img.getvalue(), "1") + + return -1, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as MSP" + raise OSError(msg) + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16(b"Da"), i16(b"nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + checksum = 0 + for h in header: + checksum = checksum ^ h + header[12] = checksum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 32, "1")]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/libs/PIL/PSDraw.py b/libs/PIL/PSDraw.py new file mode 100644 index 0000000..02939d2 --- /dev/null +++ b/libs/PIL/PSDraw.py @@ -0,0 +1,234 @@ +# +# The Python Imaging Library +# $Id$ +# +# Simple PostScript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import sys +from typing import IO, TYPE_CHECKING + +from . import EpsImagePlugin + +## +# Simple PostScript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If ``fp`` is omitted, + ``sys.stdout.buffer`` is assumed. + """ + + def __init__(self, fp: IO[bytes] | None = None) -> None: + if not fp: + fp = sys.stdout.buffer + self.fp = fp + + def begin_document(self, id: str | None = None) -> None: + """Set up printing of a document. (Write PostScript DSC header.)""" + # FIXME: incomplete + self.fp.write( + b"%!PS-Adobe-3.0\n" + b"save\n" + b"/showpage { } def\n" + b"%%EndComments\n" + b"%%BeginDocument\n" + ) + # self.fp.write(ERROR_PS) # debugging! + self.fp.write(EDROFF_PS) + self.fp.write(VDI_PS) + self.fp.write(b"%%EndProlog\n") + self.isofont: dict[bytes, int] = {} + + def end_document(self) -> None: + """Ends printing. (Write PostScript DSC footer.)""" + self.fp.write(b"%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font: str, size: int) -> None: + """ + Selects which font to use. + + :param font: A PostScript font name + :param size: Size in points. + """ + font_bytes = bytes(font, "UTF-8") + if font_bytes not in self.isofont: + # reencode font + self.fp.write( + b"/PSDraw-%s ISOLatin1Encoding /%s E\n" % (font_bytes, font_bytes) + ) + self.isofont[font_bytes] = 1 + # rough + self.fp.write(b"/F0 %d /PSDraw-%s F\n" % (size, font_bytes)) + + def line(self, xy0: tuple[int, int], xy1: tuple[int, int]) -> None: + """ + Draws a line between the two points. Coordinates are given in + PostScript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + self.fp.write(b"%d %d %d %d Vl\n" % (*xy0, *xy1)) + + def rectangle(self, box: tuple[int, int, int, int]) -> None: + """ + Draws a rectangle. + + :param box: A tuple of four integers, specifying left, bottom, width and + height. + """ + self.fp.write(b"%d %d M 0 %d %d Vr\n" % box) + + def text(self, xy: tuple[int, int], text: str) -> None: + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text_bytes = bytes(text, "UTF-8") + text_bytes = b"\\(".join(text_bytes.split(b"(")) + text_bytes = b"\\)".join(text_bytes.split(b")")) + self.fp.write(b"%d %d M (%s) S\n" % (xy + (text_bytes,))) + + if TYPE_CHECKING: + from . import Image + + def image( + self, box: tuple[int, int, int, int], im: Image.Image, dpi: int | None = None + ) -> None: + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # grayscale + # image size (on paper) + x = im.size[0] * 72 / dpi + y = im.size[1] * 72 / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self.fp.write(b"gsave\n%f %f translate\n" % (dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self.fp.write(b"%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, "", 0) + self.fp.write(b"\ngrestore\n") + + +# -------------------------------------------------------------------- +# PostScript driver + +# +# EDROFF.PS -- PostScript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = b"""\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- PostScript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = b"""\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup 0 exch rlineto + exch neg 0 rlineto + 0 exch neg rlineto + setgray fill } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = b"""\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/libs/PIL/PaletteFile.py b/libs/PIL/PaletteFile.py new file mode 100644 index 0000000..81652e5 --- /dev/null +++ b/libs/PIL/PaletteFile.py @@ -0,0 +1,54 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# 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 + +from typing import IO + +from ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp: IO[bytes]) -> None: + palette = [o8(i) * 3 for i in range(256)] + + while True: + s = fp.readline() + + if not s: + break + if s[:1] == b"#": + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(palette) + + def getpalette(self) -> tuple[bytes, str]: + return self.palette, self.rawmode diff --git a/libs/PIL/PalmImagePlugin.py b/libs/PIL/PalmImagePlugin.py new file mode 100644 index 0000000..b332453 --- /dev/null +++ b/libs/PIL/PalmImagePlugin.py @@ -0,0 +1,232 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import o8 +from ._binary import o16be as o16b + +# fmt: off +_Palm8BitColormapValues = ( + (255, 255, 255), (255, 204, 255), (255, 153, 255), (255, 102, 255), + (255, 51, 255), (255, 0, 255), (255, 255, 204), (255, 204, 204), + (255, 153, 204), (255, 102, 204), (255, 51, 204), (255, 0, 204), + (255, 255, 153), (255, 204, 153), (255, 153, 153), (255, 102, 153), + (255, 51, 153), (255, 0, 153), (204, 255, 255), (204, 204, 255), + (204, 153, 255), (204, 102, 255), (204, 51, 255), (204, 0, 255), + (204, 255, 204), (204, 204, 204), (204, 153, 204), (204, 102, 204), + (204, 51, 204), (204, 0, 204), (204, 255, 153), (204, 204, 153), + (204, 153, 153), (204, 102, 153), (204, 51, 153), (204, 0, 153), + (153, 255, 255), (153, 204, 255), (153, 153, 255), (153, 102, 255), + (153, 51, 255), (153, 0, 255), (153, 255, 204), (153, 204, 204), + (153, 153, 204), (153, 102, 204), (153, 51, 204), (153, 0, 204), + (153, 255, 153), (153, 204, 153), (153, 153, 153), (153, 102, 153), + (153, 51, 153), (153, 0, 153), (102, 255, 255), (102, 204, 255), + (102, 153, 255), (102, 102, 255), (102, 51, 255), (102, 0, 255), + (102, 255, 204), (102, 204, 204), (102, 153, 204), (102, 102, 204), + (102, 51, 204), (102, 0, 204), (102, 255, 153), (102, 204, 153), + (102, 153, 153), (102, 102, 153), (102, 51, 153), (102, 0, 153), + (51, 255, 255), (51, 204, 255), (51, 153, 255), (51, 102, 255), + (51, 51, 255), (51, 0, 255), (51, 255, 204), (51, 204, 204), + (51, 153, 204), (51, 102, 204), (51, 51, 204), (51, 0, 204), + (51, 255, 153), (51, 204, 153), (51, 153, 153), (51, 102, 153), + (51, 51, 153), (51, 0, 153), (0, 255, 255), (0, 204, 255), + (0, 153, 255), (0, 102, 255), (0, 51, 255), (0, 0, 255), + (0, 255, 204), (0, 204, 204), (0, 153, 204), (0, 102, 204), + (0, 51, 204), (0, 0, 204), (0, 255, 153), (0, 204, 153), + (0, 153, 153), (0, 102, 153), (0, 51, 153), (0, 0, 153), + (255, 255, 102), (255, 204, 102), (255, 153, 102), (255, 102, 102), + (255, 51, 102), (255, 0, 102), (255, 255, 51), (255, 204, 51), + (255, 153, 51), (255, 102, 51), (255, 51, 51), (255, 0, 51), + (255, 255, 0), (255, 204, 0), (255, 153, 0), (255, 102, 0), + (255, 51, 0), (255, 0, 0), (204, 255, 102), (204, 204, 102), + (204, 153, 102), (204, 102, 102), (204, 51, 102), (204, 0, 102), + (204, 255, 51), (204, 204, 51), (204, 153, 51), (204, 102, 51), + (204, 51, 51), (204, 0, 51), (204, 255, 0), (204, 204, 0), + (204, 153, 0), (204, 102, 0), (204, 51, 0), (204, 0, 0), + (153, 255, 102), (153, 204, 102), (153, 153, 102), (153, 102, 102), + (153, 51, 102), (153, 0, 102), (153, 255, 51), (153, 204, 51), + (153, 153, 51), (153, 102, 51), (153, 51, 51), (153, 0, 51), + (153, 255, 0), (153, 204, 0), (153, 153, 0), (153, 102, 0), + (153, 51, 0), (153, 0, 0), (102, 255, 102), (102, 204, 102), + (102, 153, 102), (102, 102, 102), (102, 51, 102), (102, 0, 102), + (102, 255, 51), (102, 204, 51), (102, 153, 51), (102, 102, 51), + (102, 51, 51), (102, 0, 51), (102, 255, 0), (102, 204, 0), + (102, 153, 0), (102, 102, 0), (102, 51, 0), (102, 0, 0), + (51, 255, 102), (51, 204, 102), (51, 153, 102), (51, 102, 102), + (51, 51, 102), (51, 0, 102), (51, 255, 51), (51, 204, 51), + (51, 153, 51), (51, 102, 51), (51, 51, 51), (51, 0, 51), + (51, 255, 0), (51, 204, 0), (51, 153, 0), (51, 102, 0), + (51, 51, 0), (51, 0, 0), (0, 255, 102), (0, 204, 102), + (0, 153, 102), (0, 102, 102), (0, 51, 102), (0, 0, 102), + (0, 255, 51), (0, 204, 51), (0, 153, 51), (0, 102, 51), + (0, 51, 51), (0, 0, 51), (0, 255, 0), (0, 204, 0), + (0, 153, 0), (0, 102, 0), (0, 51, 0), (17, 17, 17), + (34, 34, 34), (68, 68, 68), (85, 85, 85), (119, 119, 119), + (136, 136, 136), (170, 170, 170), (187, 187, 187), (221, 221, 221), + (238, 238, 238), (192, 192, 192), (128, 0, 0), (128, 0, 128), + (0, 128, 0), (0, 128, 128), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)) +# fmt: on + + +# so build a prototype image to be used for palette resampling +def build_prototype_image() -> Image.Image: + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata: tuple[int, ...] = () + for colormapValue in _Palm8BitColormapValues: + palettedata += colormapValue + palettedata += (0, 0, 0) * (256 - len(_Palm8BitColormapValues)) + image.putpalette(palettedata) + return image + + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, +# a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = {"custom-colormap": 0x4000, "is-compressed": 0x8000, "has-transparent": 0x2000} + +_COMPRESSION_TYPES = {"none": 0xFF, "rle": 0x01, "scanline": 0x00} + + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "P": + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L": + if im.encoderinfo.get("bpp") in (1, 2, 4): + # this is 8-bit grayscale, so we shift it to get the high-order bits, + # and invert it because + # Palm does grayscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + maxval = (1 << bpp) - 1 + shift = 8 - bpp + im = im.point(lambda x: maxval - (x >> shift)) + elif im.info.get("bpp") in (1, 2, 4): + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + maxval = (1 << bpp) - 1 + im = im.point(lambda x: maxval - (x & maxval)) + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # we ignore the palette here + im._mode = "P" + rawmode = f"P;{bpp}" + version = 1 + + elif im.mode == "1": + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16 // bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P" and "custom-colormap" in im.info: + assert im.palette is not None + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == "RGB": + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2]) + ) + elif colormapmode == "RGBA": + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2]) + ) + + # now convert data to raw form + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, rowbytes, 1))] + ) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/libs/PIL/PcdImagePlugin.py b/libs/PIL/PcdImagePlugin.py new file mode 100644 index 0000000..ac40383 --- /dev/null +++ b/libs/PIL/PcdImagePlugin.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + + +class PcdImageFile(ImageFile.ImageFile): + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self) -> None: + # rough + assert self.fp is not None + + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + msg = "not a PCD file" + raise SyntaxError(msg) + + orientation = s[1538] & 3 + self.tile_post_rotate = None + if orientation == 1: + self.tile_post_rotate = 90 + elif orientation == 3: + self.tile_post_rotate = -90 + + self._mode = "RGB" + self._size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [ImageFile._Tile("pcd", (0, 0) + self.size, 96 * 2048)] + + def load_end(self) -> None: + if self.tile_post_rotate: + # Handle rotated PCDs + self.im = self.im.rotate(self.tile_post_rotate) + self._size = self.im.size + + +# +# registry + +Image.register_open(PcdImageFile.format, PcdImageFile) + +Image.register_extension(PcdImageFile.format, ".pcd") diff --git a/libs/PIL/PcfFontFile.py b/libs/PIL/PcfFontFile.py new file mode 100644 index 0000000..0d1968b --- /dev/null +++ b/libs/PIL/PcfFontFile.py @@ -0,0 +1,254 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from typing import BinaryIO, Callable + +from . import FontFile, Image +from ._binary import i8 +from ._binary import i16be as b16 +from ._binary import i16le as l16 +from ._binary import i32be as b32 +from ._binary import i32le as l32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = 1 << 0 +PCF_ACCELERATORS = 1 << 1 +PCF_METRICS = 1 << 2 +PCF_BITMAPS = 1 << 3 +PCF_INK_METRICS = 1 << 4 +PCF_BDF_ENCODINGS = 1 << 5 +PCF_SWIDTHS = 1 << 6 +PCF_GLYPH_NAMES = 1 << 7 +PCF_BDF_ACCELERATORS = 1 << 8 + +BYTES_PER_ROW: list[Callable[[int], int]] = [ + lambda bits: ((bits + 7) >> 3), + lambda bits: ((bits + 15) >> 3) & ~1, + lambda bits: ((bits + 31) >> 3) & ~3, + lambda bits: ((bits + 63) >> 3) & ~7, +] + + +def sz(s: bytes, o: int) -> bytes: + return s[o : s.index(b"\0", o)] + + +class PcfFontFile(FontFile.FontFile): + """Font file plugin for the X11 PCF format.""" + + name = "name" + + def __init__(self, fp: BinaryIO, charset_encoding: str = "iso8859-1"): + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + msg = "not a PCF file" + raise SyntaxError(msg) + + super().__init__() + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch, ix in enumerate(encoding): + if ix is not None: + ( + xsize, + ysize, + left, + right, + width, + ascent, + descent, + attributes, + ) = metrics[ix] + self.glyph[ch] = ( + (width, 0), + (left, descent - ysize, xsize + left, descent), + (0, 0, xsize, ysize), + bitmaps[ix], + ) + + def _getformat( + self, tag: int + ) -> tuple[BinaryIO, int, Callable[[bytes], int], Callable[[bytes], int]]: + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self) -> dict[bytes, bytes | int]: + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [(i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4))) for _ in range(nprops)] + + if nprops & 3: + fp.seek(4 - (nprops & 3), io.SEEK_CUR) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + property_value: bytes | int = sz(data, v) if s else v + properties[sz(data, k)] = property_value + + return properties + + def _load_metrics(self) -> list[tuple[int, int, int, int, int, int, int, int]]: + # + # font metrics + + metrics: list[tuple[int, int, int, int, int, int, int, int]] = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xFF00) == 0x100: + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, 0)) + + else: + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, attributes)) + + return metrics + + def _load_bitmaps( + self, metrics: list[tuple[int, int, int, int, int, int, int, int]] + ) -> list[Image.Image]: + # + # bitmap data + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + msg = "Wrong number of bitmaps" + raise OSError(msg) + + offsets = [i32(fp.read(4)) for _ in range(nbitmaps)] + + bitmap_sizes = [i32(fp.read(4)) for _ in range(4)] + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmap_sizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + bitmaps = [] + for i in range(nbitmaps): + xsize, ysize = metrics[i][:2] + b, e = offsets[i : i + 2] + bitmaps.append( + Image.frombytes("1", (xsize, ysize), data[b:e], "raw", mode, pad(xsize)) + ) + + return bitmaps + + def _load_encoding(self) -> list[int | None]: + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + first_col, last_col = i16(fp.read(2)), i16(fp.read(2)) + first_row, last_row = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (last_col - first_col + 1) * (last_row - first_row + 1) + + # map character code to bitmap index + encoding: list[int | None] = [None] * min(256, nencoding) + + encoding_offsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(first_col, len(encoding)): + try: + encoding_offset = encoding_offsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encoding_offset != 0xFFFF: + encoding[i] = encoding_offset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/libs/PIL/PcxImagePlugin.py b/libs/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..32436ce --- /dev/null +++ b/libs/PIL/PcxImagePlugin.py @@ -0,0 +1,229 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import logging +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix: bytes) -> bool: + return prefix[0] == 10 and prefix[1] in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + format = "PCX" + format_description = "Paintbrush" + + def _open(self) -> None: + # header + assert self.fp is not None + + s = self.fp.read(128) + if not _accept(s): + msg = "not a PCX file" + raise SyntaxError(msg) + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8) + 1, i16(s, 10) + 1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + msg = "bad PCX image size" + raise SyntaxError(msg) + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = s[1] + bits = s[3] + planes = s[65] + provided_stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + provided_stride, + ) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = f"P;{planes}L" + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, io.SEEK_END) + s = self.fp.read(769) + if len(s) == 769 and s[0] == 12: + # check if the palette is linear grayscale + for i in range(256): + if s[i * 3 + 1 : i * 3 + 4] != o8(i) * 3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + msg = "unknown PCX mode" + raise OSError(msg) + + self._mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + # Don't trust the passed in stride. + # Calculate the approximate position for ourselves. + # CVE-2020-35653 + stride = (self._size[0] * bits + 7) // 8 + + # While the specification states that this must be even, + # not all images follow this + if provided_stride != stride: + stride += stride % 2 + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [ + ImageFile._Tile("pcx", bbox, self.fp.tell(), (rawmode, planes * stride)) + ] + + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as PCX" + raise ValueError(msg) from e + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug( + "PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], + bits, + stride, + ) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + + o8(version) + + o8(1) + + o8(bits) + + o16(0) + + o16(0) + + o16(im.size[0] - 1) + + o16(im.size[1] - 1) + + o16(dpi[0]) + + o16(dpi[1]) + + b"\0" * 24 + + b"\xFF" * 24 + + b"\0" + + o8(planes) + + o16(stride) + + o16(1) + + o16(screen[0]) + + o16(screen[1]) + + b"\0" * 54 + ) + + assert fp.tell() == 128 + + ImageFile._save( + im, fp, [ImageFile._Tile("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))] + ) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + palette = im.im.getpalette("RGB", "RGB") + palette += b"\x00" * (768 - len(palette)) + fp.write(palette) # 768 bytes + elif im.mode == "L": + # grayscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i) * 3) + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/libs/PIL/PdfImagePlugin.py b/libs/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..e9c20dd --- /dev/null +++ b/libs/PIL/PdfImagePlugin.py @@ -0,0 +1,311 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## +from __future__ import annotations + +import io +import math +import os +import time +from typing import IO, Any + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__, features + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _write_image( + im: Image.Image, + filename: str | bytes, + existing_pdf: PdfParser.PdfParser, + image_refs: list[PdfParser.IndirectReference], +) -> tuple[PdfParser.IndirectReference, str]: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + params = None + decode = None + + # + # Get image characteristics + + width, height = im.size + + dict_obj: dict[str, Any] = {"BitsPerComponent": 8} + if im.mode == "1": + if features.check("libtiff"): + decode_filter = "CCITTFaxDecode" + dict_obj["BitsPerComponent"] = 1 + params = PdfParser.PdfArray( + [ + PdfParser.PdfDict( + { + "K": -1, + "BlackIs1": True, + "Columns": width, + "Rows": height, + } + ) + ] + ) + else: + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "L": + decode_filter = "DCTDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "LA": + decode_filter = "JPXDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + procset = "ImageB" # grayscale + dict_obj["SMaskInData"] = 1 + elif im.mode == "P": + decode_filter = "ASCIIHexDecode" + palette = im.getpalette() + assert palette is not None + dict_obj["ColorSpace"] = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + len(palette) // 3 - 1, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + + if "transparency" in im.info: + smask = im.convert("LA").getchannel("A") + smask.encoderinfo = {} + + image_ref = _write_image(smask, filename, existing_pdf, image_refs)[0] + dict_obj["SMask"] = image_ref + elif im.mode == "RGB": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "RGBA": + decode_filter = "JPXDecode" + procset = "ImageC" # color images + dict_obj["SMaskInData"] = 1 + elif im.mode == "CMYK": + decode_filter = "DCTDecode" + dict_obj["ColorSpace"] = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + decode = [1, 0, 1, 0, 1, 0, 1, 0] + else: + msg = f"cannot save mode {im.mode}" + raise ValueError(msg) + + # + # image + + op = io.BytesIO() + + if decode_filter == "ASCIIHexDecode": + ImageFile._save(im, op, [ImageFile._Tile("hex", (0, 0) + im.size, 0, im.mode)]) + elif decode_filter == "CCITTFaxDecode": + im.save( + op, + "TIFF", + compression="group4", + # use a single strip + strip_size=math.ceil(width / 8) * height, + ) + elif decode_filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif decode_filter == "JPXDecode": + del dict_obj["BitsPerComponent"] + Image.SAVE["JPEG2000"](im, op, filename) + else: + msg = f"unsupported PDF filter ({decode_filter})" + raise ValueError(msg) + + stream = op.getvalue() + filter: PdfParser.PdfArray | PdfParser.PdfName + if decode_filter == "CCITTFaxDecode": + stream = stream[8:] + filter = PdfParser.PdfArray([PdfParser.PdfName(decode_filter)]) + else: + filter = PdfParser.PdfName(decode_filter) + + image_ref = image_refs.pop(0) + existing_pdf.write_obj( + image_ref, + stream=stream, + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / x_resolution, + Height=height, # * 72.0 / y_resolution, + Filter=filter, + Decode=decode, + DecodeParms=params, + **dict_obj, + ) + + return image_ref, procset + + +def _save( + im: Image.Image, fp: IO[bytes], filename: str | bytes, save_all: bool = False +) -> None: + is_appending = im.encoderinfo.get("append", False) + filename_str = filename.decode() if isinstance(filename, bytes) else filename + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename_str, mode="w+b") + + dpi = im.encoderinfo.get("dpi") + if dpi: + x_resolution = dpi[0] + y_resolution = dpi[1] + else: + x_resolution = y_resolution = im.encoderinfo.get("resolution", 72.0) + + info = { + "title": ( + None if is_appending else os.path.splitext(os.path.basename(filename))[0] + ), + "author": None, + "subject": None, + "keywords": None, + "creator": None, + "producer": None, + "creationDate": None if is_appending else time.gmtime(), + "modDate": None if is_appending else time.gmtime(), + } + for k, default in info.items(): + v = im.encoderinfo.get(k) if k in im.encoderinfo else default + if v: + existing_pdf.info[k[0].upper() + k[1:]] = v + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment(f"created by Pillow {__version__} PDF driver") + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + number_of_pages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_number_of_pages = 1 + if save_all: + im_number_of_pages = getattr(im, "n_frames", 1) + number_of_pages += im_number_of_pages + for i in range(im_number_of_pages): + image_refs.append(existing_pdf.next_object_id(0)) + if im.mode == "P" and "transparency" in im.info: + image_refs.append(existing_pdf.next_object_id(0)) + + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + page_number = 0 + for im_sequence in ims: + im_pages: ImageSequence.Iterator | list[Image.Image] = ( + ImageSequence.Iterator(im_sequence) if save_all else [im_sequence] + ) + for im in im_pages: + image_ref, procset = _write_image(im, filename, existing_pdf, image_refs) + + # + # page + + existing_pdf.write_page( + page_refs[page_number], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_ref), + ), + MediaBox=[ + 0, + 0, + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ], + Contents=contents_refs[page_number], + ) + + # + # page contents + + page_contents = b"q %f 0 0 %f 0 0 cm /image Do Q\n" % ( + im.width * 72.0 / x_resolution, + im.height * 72.0 / y_resolution, + ) + + existing_pdf.write_obj(contents_refs[page_number], stream=page_contents) + + page_number += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/libs/PIL/PdfParser.py b/libs/PIL/PdfParser.py new file mode 100644 index 0000000..7cb2d24 --- /dev/null +++ b/libs/PIL/PdfParser.py @@ -0,0 +1,1073 @@ +from __future__ import annotations + +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib +from typing import IO, TYPE_CHECKING, Any, NamedTuple, Union + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s: str) -> bytes: + return codecs.BOM_UTF16_BE + s.encode("utf_16_be") + + +PDFDocEncoding = { + 0x16: "\u0017", + 0x18: "\u02D8", + 0x19: "\u02C7", + 0x1A: "\u02C6", + 0x1B: "\u02D9", + 0x1C: "\u02DD", + 0x1D: "\u02DB", + 0x1E: "\u02DA", + 0x1F: "\u02DC", + 0x80: "\u2022", + 0x81: "\u2020", + 0x82: "\u2021", + 0x83: "\u2026", + 0x84: "\u2014", + 0x85: "\u2013", + 0x86: "\u0192", + 0x87: "\u2044", + 0x88: "\u2039", + 0x89: "\u203A", + 0x8A: "\u2212", + 0x8B: "\u2030", + 0x8C: "\u201E", + 0x8D: "\u201C", + 0x8E: "\u201D", + 0x8F: "\u2018", + 0x90: "\u2019", + 0x91: "\u201A", + 0x92: "\u2122", + 0x93: "\uFB01", + 0x94: "\uFB02", + 0x95: "\u0141", + 0x96: "\u0152", + 0x97: "\u0160", + 0x98: "\u0178", + 0x99: "\u017D", + 0x9A: "\u0131", + 0x9B: "\u0142", + 0x9C: "\u0153", + 0x9D: "\u0161", + 0x9E: "\u017E", + 0xA0: "\u20AC", +} + + +def decode_text(b: bytes) -> str: + if b[: len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return b[len(codecs.BOM_UTF16_BE) :].decode("utf_16_be") + else: + return "".join(PDFDocEncoding.get(byte, chr(byte)) for byte in b) + + +class PdfFormatError(RuntimeError): + """An error that probably indicates a syntactic or semantic error in the + PDF file structure""" + + pass + + +def check_format_condition(condition: bool, error_message: str) -> None: + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReferenceTuple(NamedTuple): + object_id: int + generation: int + + +class IndirectReference(IndirectReferenceTuple): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} R" + + def __bytes__(self) -> bytes: + return self.__str__().encode("us-ascii") + + def __eq__(self, other: object) -> bool: + if self.__class__ is not other.__class__: + return False + assert isinstance(other, IndirectReference) + return other.object_id == self.object_id and other.generation == self.generation + + def __ne__(self, other: object) -> bool: + return not (self == other) + + def __hash__(self) -> int: + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self) -> str: + return f"{self.object_id} {self.generation} obj" + + +class XrefTable: + def __init__(self) -> None: + self.existing_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.new_entries: dict[int, tuple[int, int]] = ( + {} + ) # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key: int, value: tuple[int, int]) -> None: + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key: int) -> tuple[int, int]: + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key: int) -> None: + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + msg = f"object ID {key} cannot be deleted because it doesn't exist" + raise IndexError(msg) + + def __contains__(self, key: int) -> bool: + return key in self.existing_entries or key in self.new_entries + + def __len__(self) -> int: + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self) -> set[int]: + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f: IO[bytes]) -> int: + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev: int | None = None + for index, key in enumerate(keys): + if prev is None or prev + 1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = [] + f.write(b"%d %d\n" % (contiguous_keys[0], len(contiguous_keys))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(b"%010d %05d n \n" % self.new_entries[object_id]) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition( + object_id == this_deleted_object_id, + f"expected the next deleted object ID to be {object_id}, " + f"instead found {this_deleted_object_id}", + ) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write( + b"%010d %05d f \n" + % (next_in_linked_list, self.deleted_entries[object_id]) + ) + return startxref + + +class PdfName: + name: bytes + + def __init__(self, name: PdfName | bytes | str) -> None: + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self) -> str: + return self.name.decode("us-ascii") + + def __eq__(self, other: object) -> bool: + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self) -> int: + return hash(self.name) + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({repr(self.name)})" + + @classmethod + def from_pdf_stream(cls, data: bytes) -> PdfName: + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self) -> bytes: + result = bytearray(b"/") + for b in self.name: + if b in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % b) + return bytes(result) + + +class PdfArray(list[Any]): + def __bytes__(self) -> bytes: + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +if TYPE_CHECKING: + _DictBase = collections.UserDict[Union[str, bytes], Any] +else: + _DictBase = collections.UserDict + + +class PdfDict(_DictBase): + def __setattr__(self, key: str, value: Any) -> None: + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key: str) -> str | time.struct_time: + try: + value = self[key.encode("us-ascii")] + except KeyError as e: + raise AttributeError(key) from e + if isinstance(value, bytes): + value = decode_text(value) + if key.endswith("Date"): + if value.startswith("D:"): + value = value[2:] + + relationship = "Z" + if len(value) > 17: + relationship = value[14] + offset = int(value[15:17]) * 60 + if len(value) > 20: + offset += int(value[18:20]) + + format = "%Y%m%d%H%M%S"[: len(value) - 2] + value = time.strptime(value[: len(format) + 2], format) + if relationship in ["+", "-"]: + offset *= 60 + if relationship == "+": + offset *= -1 + value = time.gmtime(calendar.timegm(value) + offset) + return value + + def __bytes__(self) -> bytes: + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + +class PdfBinary: + def __init__(self, data: list[int] | bytes) -> None: + self.data = data + + def __bytes__(self) -> bytes: + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary: PdfDict, buf: bytes) -> None: + self.dictionary = dictionary + self.buf = buf + + def decode(self) -> bytes: + try: + filter = self.dictionary[b"Filter"] + except KeyError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary[b"DL"] + except KeyError: + expected_length = self.dictionary[b"Length"] + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + msg = f"stream filter {repr(filter)} unknown/unsupported" + raise NotImplementedError(msg) + + +def pdf_repr(x: Any) -> bytes: + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, (PdfName, PdfDict, PdfArray, PdfBinary)): + return bytes(x) + elif isinstance(x, (int, float)): + return str(x).encode("us-ascii") + elif isinstance(x, time.struct_time): + return b"(D:" + time.strftime("%Y%m%d%H%M%SZ", x).encode("us-ascii") + b")" + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif isinstance(x, str): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + # XXX escape more chars? handle binary garbage + x = x.replace(b"\\", b"\\\\") + x = x.replace(b"(", b"\\(") + x = x.replace(b")", b"\\)") + return b"(" + x + b")" + else: + return bytes(x) + + +class PdfParser: + """Based on + https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__( + self, + filename: str | None = None, + f: IO[bytes] | None = None, + buf: bytes | bytearray | None = None, + start_offset: int = 0, + mode: str = "rb", + ) -> None: + if buf and f: + msg = "specify buf or f or filename, but not both buf and f" + raise RuntimeError(msg) + self.filename = filename + self.buf: bytes | bytearray | mmap.mmap | None = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects: dict[IndirectReference, Any] = {} + self.root_ref: IndirectReference | None + self.info_ref: IndirectReference | None + self.pages_ref: IndirectReference | None + self.last_xref_section_offset: int | None + if self.buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = PdfDict() + self.pages: list[IndirectReference] = [] + self.orig_pages: list[IndirectReference] = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict: dict[bytes, Any] = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self) -> PdfParser: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def start_writing(self) -> None: + self.close_buf() + self.seek_end() + + def close_buf(self) -> None: + if isinstance(self.buf, mmap.mmap): + self.buf.close() + self.buf = None + + def close(self) -> None: + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self) -> None: + assert self.f is not None + self.f.seek(0, os.SEEK_END) + + def write_header(self) -> None: + assert self.f is not None + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s: str) -> None: + assert self.f is not None + self.f.write(f"% {s}\n".encode()) + + def write_catalog(self) -> IndirectReference: + assert self.f is not None + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, Type=PdfName(b"Catalog"), Pages=self.pages_ref) + self.write_obj( + self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages, + ) + return self.root_ref + + def rewrite_pages(self) -> None: + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer( + self, new_root_ref: IndirectReference | None = None + ) -> None: + assert self.f is not None + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict: dict[str | bytes, Any] = { + b"Root": self.root_ref, + b"Size": num_entries, + } + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write( + b"trailer\n" + + bytes(PdfDict(trailer_dict)) + + b"\nstartxref\n%d\n%%%%EOF" % start_xref + ) + + def write_page( + self, ref: int | IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + obj_ref = self.pages[ref] if isinstance(ref, int) else ref + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(obj_ref, *objs, **dict_obj) + + def write_obj( + self, ref: IndirectReference | None, *objs: Any, **dict_obj: Any + ) -> IndirectReference: + assert self.f is not None + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self) -> None: + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f: IO[bytes]) -> bytes | mmap.mmap: + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self) -> None: + assert self.buf is not None + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + check_format_condition( + self.trailer_dict.get(b"Root") is not None, "Root is missing" + ) + self.root_ref = self.trailer_dict[b"Root"] + assert self.root_ref is not None + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition( + self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog" + ) + check_format_condition( + self.root.get(b"Pages") is not None, "/Pages missing in Root" + ) + check_format_condition( + isinstance(self.root[b"Pages"], IndirectReference), + "/Pages in Root is not an indirect reference", + ) + self.pages_ref = self.root[b"Pages"] + assert self.pages_ref is not None + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references + # in case the user modifies, adds or deletes some pages + # and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset: int | None = None) -> IndirectReference: + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = rb"[][()<>{}/%]" + delimiter_or_ws = rb"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = rb"[\000\011\012\014\015\040]" + whitespace_or_hex = rb"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + # No "\012" aka "\n" or "\015" aka "\r": + whitespace_optional_no_nl = rb"[\000\011\014\040]*" + newline_only = rb"[\r\n]+" + newline = whitespace_optional_no_nl + newline_only + whitespace_optional_no_nl + re_trailer_end = re.compile( + whitespace_mandatory + + rb"trailer" + + whitespace_optional + + rb"<<(.*>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional + + rb"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + rb"trailer" + + whitespace_optional + + rb"<<(.*?>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self) -> None: + assert self.buf is not None + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m is not None, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start() + 16) + if not m: + m = last_match + assert m is not None + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset: int) -> None: + assert self.buf is not None + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search( + self.buf[trailer_offset : trailer_offset + 16384] + ) + check_format_condition(m is not None, "previous trailer not found") + assert m is not None + trailer_data = m.group(1) + check_format_condition( + int(m.group(2)) == xref_section_offset, + "xref section offset in previous trailer doesn't match what was expected", + ) + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile( + whitespace_optional + + rb"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + rb")" + ) + re_dict_start = re.compile(whitespace_optional + rb"<<") + re_dict_end = re.compile(whitespace_optional + rb">>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data: bytes) -> dict[bytes, Any]: + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition( + m is not None and m.end() == len(trailer_data), + "name not found in trailer, remaining data: " + + repr(trailer_data[offset:]), + ) + break + key = cls.interpret_name(m.group(1)) + assert isinstance(key, bytes) + value, value_offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + if value_offset is None: + break + offset = value_offset + check_format_condition( + b"Size" in trailer and isinstance(trailer[b"Size"], int), + "/Size not in trailer or not an integer", + ) + check_format_condition( + b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), + "/Root not in trailer or not an indirect reference", + ) + return trailer + + re_hashes_in_name = re.compile(rb"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw: bytes, as_text: bool = False) -> str | bytes: + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + rb"null(?=" + delimiter_or_ws + rb")") + re_true = re.compile(whitespace_optional + rb"true(?=" + delimiter_or_ws + rb")") + re_false = re.compile(whitespace_optional + rb"false(?=" + delimiter_or_ws + rb")") + re_int = re.compile( + whitespace_optional + rb"([-+]?[0-9]+)(?=" + delimiter_or_ws + rb")" + ) + re_real = re.compile( + whitespace_optional + + rb"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + rb")" + ) + re_array_start = re.compile(whitespace_optional + rb"\[") + re_array_end = re.compile(whitespace_optional + rb"]") + re_string_hex = re.compile( + whitespace_optional + rb"<(" + whitespace_or_hex + rb"*)>" + ) + re_string_lit = re.compile(whitespace_optional + rb"\(") + re_indirect_reference = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"R(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"obj(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + rb"endobj(?=" + delimiter_or_ws + rb")" + ) + re_comment = re.compile( + rb"(" + whitespace_optional + rb"%[^\r\n]*" + newline + rb")*" + ) + re_stream_start = re.compile(whitespace_optional + rb"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + rb"endstream(?=" + delimiter_or_ws + rb")" + ) + + @classmethod + def get_value( + cls, + data: bytes | bytearray | mmap.mmap, + offset: int, + expect_indirect: IndirectReference | None = None, + max_nesting: int = -1, + ) -> tuple[Any, int | None]: + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object definition: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object definition: generation must be non-negative", + ) + check_format_condition( + expect_indirect is None + or expect_indirect + == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected", + ) + object, object_offset = cls.get_value( + data, m.end(), max_nesting=max_nesting - 1 + ) + if object_offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, object_offset) + check_format_condition( + m is not None, "indirect object definition end not found" + ) + assert m is not None + return object, m.end() + check_format_condition( + not expect_indirect, "indirect object definition not found" + ) + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object reference: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object reference: generation must be non-negative", + ) + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result: dict[Any, Any] = {} + m = cls.re_dict_end.match(data, offset) + current_offset: int | None = offset + while not m: + assert current_offset is not None + key, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + if current_offset is None: + return result, None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + result[key] = value + if current_offset is None: + return result, None + m = cls.re_dict_end.match(data, current_offset) + current_offset = m.end() + m = cls.re_stream_start.match(data, current_offset) + if m: + stream_len = result.get(b"Length") + if stream_len is None or not isinstance(stream_len, int): + msg = f"bad or missing Length in stream dict ({stream_len})" + raise PdfFormatError(msg) + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m is not None, "stream end not found") + assert m is not None + current_offset = m.end() + return PdfStream(PdfDict(result), stream_data), current_offset + return PdfDict(result), current_offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + results = [] + m = cls.re_array_end.match(data, offset) + current_offset = offset + while not m: + assert current_offset is not None + value, current_offset = cls.get_value( + data, current_offset, max_nesting=max_nesting - 1 + ) + results.append(value) + if current_offset is None: + return results, None + m = cls.re_array_end.match(data, current_offset) + return results, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + # XXX Decimal instead of float??? + return float(m.group(1)), m.end() + m = cls.re_string_hex.match(data, offset) + if m: + # filter out whitespace + hex_string = bytearray( + b for b in m.group(1) if b in b"0123456789abcdefABCDEF" + ) + if len(hex_string) % 2 == 1: + # append a 0 if the length is not even - yes, at the end + hex_string.append(ord(b"0")) + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + # return None, offset # fallback (only for debugging) + msg = f"unrecognized object: {repr(data[offset : offset + 32])}" + raise PdfFormatError(msg) + + re_lit_str_token = re.compile( + rb"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))" + ) + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string( + cls, data: bytes | bytearray | mmap.mmap, offset: int + ) -> tuple[bytes, int]: + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset : m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + msg = "unfinished literal string" + raise PdfFormatError(msg) + + re_xref_section_start = re.compile(whitespace_optional + rb"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + rb"([0-9]+)" + + whitespace_mandatory + + rb"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(rb"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset: int) -> int: + assert self.buf is not None + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m is not None, "xref section start not found") + assert m is not None + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition( + subsection_found, "xref subsection start not found" + ) + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object + num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m is not None, "xref entry not found") + assert m is not None + offset = m.end() + is_free = m.group(3) == b"f" + if not is_free: + generation = int(m.group(2)) + new_entry = (int(m.group(1)), generation) + if i not in self.xref_table: + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref: IndirectReference, max_nesting: int = -1) -> Any: + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + f"expected to find generation {ref[1]} for object ID {ref[0]} in xref " + f"table, instead found generation {generation} at offset {offset}", + ) + assert self.buf is not None + value = self.get_value( + self.buf, + offset + self.start_offset, + expect_indirect=IndirectReference(*ref), + max_nesting=max_nesting, + )[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree( + self, node: PdfDict | None = None + ) -> list[IndirectReference]: + page_node = node if node is not None else self.page_tree_root + check_format_condition( + page_node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in page_node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/libs/PIL/PixarImagePlugin.py b/libs/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..5c465bb --- /dev/null +++ b/libs/PIL/PixarImagePlugin.py @@ -0,0 +1,72 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# 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 + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"\200\350\000\000" + + +## +# Image plugin for PIXAR raster images. + + +class PixarImageFile(ImageFile.ImageFile): + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self) -> None: + # assuming a 4-byte magic label + assert self.fp is not None + + s = self.fp.read(4) + if not _accept(s): + msg = "not a PIXAR file" + raise SyntaxError(msg) + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s, 418), i16(s, 416) + + # get channel/depth descriptions + mode = i16(s, 424), i16(s, 426) + + if mode == (14, 2): + self._mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 1024, self.mode)] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/libs/PIL/PngImagePlugin.py b/libs/PIL/PngImagePlugin.py new file mode 100644 index 0000000..4b97992 --- /dev/null +++ b/libs/PIL/PngImagePlugin.py @@ -0,0 +1,1544 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import itertools +import logging +import re +import struct +import warnings +import zlib +from collections.abc import Callable +from enum import IntEnum +from typing import IO, TYPE_CHECKING, Any, NamedTuple, NoReturn, cast + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._binary import o32be as o32 + +if TYPE_CHECKING: + from . import _imaging + +logger = logging.getLogger(__name__) + +is_cid = re.compile(rb"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Grayscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I;16", "I;16B"), + # Truecolour + (8, 2): ("RGB", "RGB"), + (16, 2): ("RGB", "RGB;16B"), + # Indexed-colour + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + # Grayscale with alpha + (8, 4): ("LA", "LA"), + (16, 4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + # Truecolour with alpha + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b"^\xff*\x00\xff*$") + +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +""" +Maximum decompressed size for a iTXt or zTXt chunk. +Eliminates decompression bombs where compressed chunks can expand 1000x. +See :ref:`Text in PNG File Format`. +""" +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK +""" +Set the maximum total text chunk size. +See :ref:`Text in PNG File Format`. +""" + + +# APNG frame disposal modes +class Disposal(IntEnum): + OP_NONE = 0 + """ + No disposal is done on this frame before rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_BACKGROUND = 1 + """ + This frame’s modified region is cleared to fully transparent black before rendering + the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_PREVIOUS = 2 + """ + This frame’s modified region is reverted to the previous frame’s contents before + rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + + +# APNG frame blend modes +class Blend(IntEnum): + OP_SOURCE = 0 + """ + All color components of this frame, including alpha, overwrite the previous output + image contents. + See :ref:`Saving APNG sequences`. + """ + OP_OVER = 1 + """ + This frame should be alpha composited with the previous output image contents. + See :ref:`Saving APNG sequences`. + """ + + +def _safe_zlib_decompress(s: bytes) -> bytes: + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + msg = "Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK" + raise ValueError(msg) + return plaintext + + +def _crc32(data: bytes, seed: int = 0) -> int: + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp: IO[bytes]) -> None: + self.fp: IO[bytes] | None = fp + self.queue: list[tuple[bytes, int, int]] | None = [] + + def read(self) -> tuple[bytes, int, int]: + """Fetch a new chunk. Returns header information.""" + cid = None + + assert self.fp is not None + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + msg = f"broken PNG file (chunk {repr(cid)})" + raise SyntaxError(msg) + + return cid, pos, length + + def __enter__(self) -> ChunkStream: + return self + + def __exit__(self, *args: object) -> None: + self.close() + + def close(self) -> None: + self.queue = self.fp = None + + def push(self, cid: bytes, pos: int, length: int) -> None: + assert self.queue is not None + self.queue.append((cid, pos, length)) + + def call(self, cid: bytes, pos: int, length: int) -> bytes: + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, f"chunk_{cid.decode('ascii')}")(pos, length) + + def crc(self, cid: bytes, data: bytes) -> None: + """Read and verify checksum""" + + # Skip CRC checks for ancillary chunks if allowed to load truncated + # images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (cid[0] >> 5 & 1): + self.crc_skip(cid, data) + return + + assert self.fp is not None + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + msg = f"broken PNG file (bad header checksum in {repr(cid)})" + raise SyntaxError(msg) + except struct.error as e: + msg = f"broken PNG file (incomplete checksum in {repr(cid)})" + raise SyntaxError(msg) from e + + def crc_skip(self, cid: bytes, data: bytes) -> None: + """Read checksum""" + + assert self.fp is not None + self.fp.read(4) + + def verify(self, endchunk: bytes = b"IEND") -> list[bytes]: + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + assert self.fp is not None + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + msg = "truncated PNG file" + raise OSError(msg) from e + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + + lang: str | bytes | None + tkey: str | bytes | None + + @staticmethod + def __new__( + cls, text: str, lang: str | None = None, tkey: str | None = None + ) -> iTXt: + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo: + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self) -> None: + self.chunks: list[tuple[bytes, bytes, bool]] = [] + + def add(self, cid: bytes, data: bytes, after_idat: bool = False) -> None: + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + :param after_idat: for use with private chunks. Whether the chunk + should be written after IDAT + + """ + + self.chunks.append((cid, data, after_idat)) + + def add_itxt( + self, + key: str | bytes, + value: str | bytes, + lang: str | bytes = "", + tkey: str | bytes = "", + zip: bool = False, + ) -> None: + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add( + b"iTXt", + key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + zlib.compress(value), + ) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + value) + + def add_text( + self, key: str | bytes, value: str | bytes | iTXt, zip: bool = False + ) -> None: + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt( + key, + value, + value.lang if value.lang is not None else b"", + value.tkey if value.tkey is not None else b"", + zip=zip, + ) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode("latin-1", "strict") + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + + +class _RewindState(NamedTuple): + info: dict[str | tuple[int, int], Any] + tile: list[ImageFile._Tile] + seq_num: int | None + + +class PngStream(ChunkStream): + def __init__(self, fp: IO[bytes]) -> None: + super().__init__(fp) + + # local copies of Image attributes + self.im_info: dict[str | tuple[int, int], Any] = {} + self.im_text: dict[str, str | iTXt] = {} + self.im_size = (0, 0) + self.im_mode = "" + self.im_tile: list[ImageFile._Tile] = [] + self.im_palette: tuple[str, bytes] | None = None + self.im_custom_mimetype: str | None = None + self.im_n_frames: int | None = None + self._seq_num: int | None = None + self.rewind_state = _RewindState({}, [], None) + + self.text_memory = 0 + + def check_text_memory(self, chunklen: int) -> None: + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + msg = ( + "Too much memory used in text chunks: " + f"{self.text_memory}>MAX_TEXT_MEMORY" + ) + raise ValueError(msg) + + def save_rewind(self) -> None: + self.rewind_state = _RewindState( + self.im_info.copy(), + self.im_tile, + self._seq_num, + ) + + def rewind(self) -> None: + self.im_info = self.rewind_state.info.copy() + self.im_tile = self.rewind_state.tile + self._seq_num = self.rewind_state.seq_num + + def chunk_iCCP(self, pos: int, length: int) -> bytes: + # ICC profile + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + comp_method = s[i + 1] + logger.debug("Compression method %s", comp_method) + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in iCCP chunk" + raise SyntaxError(msg) + try: + icc_profile = _safe_zlib_decompress(s[i + 2 :]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos: int, length: int) -> bytes: + # image header + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 13: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated IHDR chunk" + raise ValueError(msg) + self.im_size = i32(s, 0), i32(s, 4) + try: + self.im_mode, self.im_rawmode = _MODES[(s[8], s[9])] + except Exception: + pass + if s[12]: + self.im_info["interlace"] = 1 + if s[11]: + msg = "unknown filter category" + raise SyntaxError(msg) + return s + + def chunk_IDAT(self, pos: int, length: int) -> NoReturn: + # image data + if "bbox" in self.im_info: + tile = [ImageFile._Tile("zip", self.im_info["bbox"], pos, self.im_rawmode)] + else: + if self.im_n_frames is not None: + self.im_info["default_image"] = True + tile = [ImageFile._Tile("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + msg = "image data found" + raise EOFError(msg) + + def chunk_IEND(self, pos: int, length: int) -> NoReturn: + msg = "end of PNG image" + raise EOFError(msg) + + def chunk_PLTE(self, pos: int, length: int) -> bytes: + # palette + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos: int, length: int) -> bytes: + # transparency + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode in ("1", "L", "I;16"): + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s, 2), i16(s, 4) + return s + + def chunk_gAMA(self, pos: int, length: int) -> bytes: + # gamma setting + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos: int, length: int) -> bytes: + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(f">{len(s) // 4}I", s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos: int, length: int) -> bytes: + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 1: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated sRGB chunk" + raise ValueError(msg) + self.im_info["srgb"] = s[0] + return s + + def chunk_pHYs(self, pos: int, length: int) -> bytes: + # pixels per unit + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 9: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated pHYs chunk" + raise ValueError(msg) + px, py = i32(s, 0), i32(s, 4) + unit = s[8] + if unit == 1: # meter + dpi = px * 0.0254, py * 0.0254 + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos: int, length: int) -> bytes: + # text + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + k_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = v if k == b"exif" else v_str + self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_zTXt(self, pos: int, length: int) -> bytes: + # compressed text + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = v[0] + else: + comp_method = 0 + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in zTXt chunk" + raise SyntaxError(msg) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + k_str = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k_str] = self.im_text[k_str] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_iTXt(self, pos: int, length: int) -> bytes: + # international text + assert self.fp is not None + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = r[0], r[1], r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + if k == b"XML:com.adobe.xmp": + self.im_info["xmp"] = v + try: + k_str = k.decode("latin-1", "strict") + lang_str = lang.decode("utf-8", "strict") + tk_str = tk.decode("utf-8", "strict") + v_str = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k_str] = self.im_text[k_str] = iTXt(v_str, lang_str, tk_str) + self.check_text_memory(len(v_str)) + + return s + + def chunk_eXIf(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + self.im_info["exif"] = b"Exif\x00\x00" + s + return s + + # APNG chunks + def chunk_acTL(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 8: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated acTL chunk" + raise ValueError(msg) + if self.im_n_frames is not None: + self.im_n_frames = None + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + n_frames = i32(s) + if n_frames == 0 or n_frames > 0x80000000: + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + self.im_n_frames = n_frames + self.im_info["loop"] = i32(s, 4) + self.im_custom_mimetype = "image/apng" + return s + + def chunk_fcTL(self, pos: int, length: int) -> bytes: + assert self.fp is not None + s = ImageFile._safe_read(self.fp, length) + if length < 26: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated fcTL chunk" + raise ValueError(msg) + seq = i32(s) + if (self._seq_num is None and seq != 0) or ( + self._seq_num is not None and self._seq_num != seq - 1 + ): + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + width, height = i32(s, 4), i32(s, 8) + px, py = i32(s, 12), i32(s, 16) + im_w, im_h = self.im_size + if px + width > im_w or py + height > im_h: + msg = "APNG contains invalid frames" + raise SyntaxError(msg) + self.im_info["bbox"] = (px, py, px + width, py + height) + delay_num, delay_den = i16(s, 20), i16(s, 22) + if delay_den == 0: + delay_den = 100 + self.im_info["duration"] = float(delay_num) / float(delay_den) * 1000 + self.im_info["disposal"] = s[24] + self.im_info["blend"] = s[25] + return s + + def chunk_fdAT(self, pos: int, length: int) -> bytes: + assert self.fp is not None + if length < 4: + if ImageFile.LOAD_TRUNCATED_IMAGES: + s = ImageFile._safe_read(self.fp, length) + return s + msg = "APNG contains truncated fDAT chunk" + raise ValueError(msg) + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix: bytes) -> bool: + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + format = "PNG" + format_description = "Portable network graphics" + + def _open(self) -> None: + if not _accept(self.fp.read(8)): + msg = "not a PNG file" + raise SyntaxError(msg) + self._fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.private_chunks: list[tuple[bytes, bytes] | tuple[bytes, bytes, bool]] = [] + self.png: PngStream | None = PngStream(self.fp) + + while True: + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s)) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self._mode = self.png.im_mode + self._size = self.png.im_size + self.info = self.png.im_info + self._text: dict[str, str | iTXt] | None = None + self.tile = self.png.im_tile + self.custom_mimetype = self.png.im_custom_mimetype + self.n_frames = self.png.im_n_frames or 1 + self.default_image = self.info.get("default_image", False) + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + if cid == b"fdAT": + self.__prepare_idat = length - 4 + else: + self.__prepare_idat = length # used by load_prepare() + + if self.png.im_n_frames is not None: + self._close_exclusive_fp_after_loading = False + self.png.save_rewind() + self.__rewind_idat = self.__prepare_idat + self.__rewind = self._fp.tell() + if self.default_image: + # IDAT chunk contains default image and not first animation frame + self.n_frames += 1 + self._seek(0) + self.is_animated = self.n_frames > 1 + + @property + def text(self) -> dict[str, str | iTXt]: + # experimental + if self._text is None: + # iTxt, tEXt and zTXt chunks may appear at the end of the file + # So load the file to ensure that they are read + if self.is_animated: + frame = self.__frame + # for APNG, seek to the final frame before loading + self.seek(self.n_frames - 1) + self.load() + if self.is_animated: + self.seek(frame) + assert self._text is not None + return self._text + + def verify(self) -> None: + """Verify PNG file""" + + if self.fp is None: + msg = "verify must be called directly after open" + raise RuntimeError(msg) + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + assert self.png is not None + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0, True) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in APNG file" + raise EOFError(msg) from e + + def _seek(self, frame: int, rewind: bool = False) -> None: + assert self.png is not None + + self.dispose: _imaging.ImagingCore | None + dispose_extent = None + if frame == 0: + if rewind: + self._fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self._im = None + self.info = self.png.im_info + self.tile = self.png.im_tile + self.fp = self._fp + self._prev_im = None + self.dispose = None + self.default_image = self.info.get("default_image", False) + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + dispose_extent = self.info.get("bbox") + self.__frame = 0 + else: + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + # ensure previous frame was loaded + self.load() + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + self._prev_im = self.im.copy() + + self.fp = self._fp + + # advance to the next frame + if self.__prepare_idat: + ImageFile._safe_read(self.fp, self.__prepare_idat) + self.__prepare_idat = 0 + frame_start = False + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + msg = "No more images in APNG file" + raise EOFError(msg) + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + msg = "APNG missing frame data" + raise SyntaxError(msg) + frame_start = True + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + if frame_start: + self.__prepare_idat = length + break + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + + self.__frame = frame + self.tile = self.png.im_tile + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + dispose_extent = self.info.get("bbox") + + if not self.tile: + msg = "image not found in APNG frame" + raise EOFError(msg) + if dispose_extent: + self.dispose_extent: tuple[float, float, float, float] = dispose_extent + + # setup frame disposal (actual disposal done when needed in the next _seek()) + if self._prev_im is None and self.dispose_op == Disposal.OP_PREVIOUS: + self.dispose_op = Disposal.OP_BACKGROUND + + self.dispose = None + if self.dispose_op == Disposal.OP_PREVIOUS: + if self._prev_im: + self.dispose = self._prev_im.copy() + self.dispose = self._crop(self.dispose, self.dispose_extent) + elif self.dispose_op == Disposal.OP_BACKGROUND: + self.dispose = Image.core.fill(self.mode, self.size) + self.dispose = self._crop(self.dispose, self.dispose_extent) + + def tell(self) -> int: + return self.__frame + + def load_prepare(self) -> None: + """internal: prepare to read PNG file""" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + self.__idat = self.__prepare_idat # used by load_read() + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes: int) -> bytes: + """internal: read more image data""" + + assert self.png is not None + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT", b"fdAT"]: + self.png.push(cid, pos, length) + return b"" + + if cid == b"fdAT": + try: + self.png.call(cid, pos, length) + except EOFError: + pass + self.__idat = length - 4 # sequence_num has already been read + else: + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self) -> None: + """internal: finished reading image data""" + assert self.png is not None + if self.__idat != 0: + self.fp.read(self.__idat) + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + break + elif cid == b"fcTL" and self.is_animated: + # start of the next frame, stop reading + self.__prepare_idat = 0 + self.png.push(cid, pos, length) + break + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + try: + ImageFile._safe_read(self.fp, length) + except OSError as e: + if ImageFile.LOAD_TRUNCATED_IMAGES: + break + else: + raise e + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s, True)) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + if self._prev_im and self.blend_op == Blend.OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + if self.im.mode == "RGB" and "transparency" in self.info: + mask = updated.convert_transparent( + "RGBA", self.info["transparency"] + ) + else: + if self.im.mode == "P" and "transparency" in self.info: + t = self.info["transparency"] + if isinstance(t, bytes): + updated.putpalettealphas(t) + elif isinstance(t, int): + updated.putpalettealpha(t) + mask = updated.convert("RGBA") + self._prev_im.paste(updated, self.dispose_extent, mask) + self.im = self._prev_im + + def _getexif(self) -> dict[int, Any] | None: + if "exif" not in self.info: + self.load() + if "exif" not in self.info and "Raw profile type exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def getexif(self) -> Image.Exif: + if "exif" not in self.info: + self.load() + + return super().getexif() + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmode, bit depth and color type + "1": ("1", b"\x01", b"\x00"), + "L;1": ("L;1", b"\x01", b"\x00"), + "L;2": ("L;2", b"\x02", b"\x00"), + "L;4": ("L;4", b"\x04", b"\x00"), + "L": ("L", b"\x08", b"\x00"), + "LA": ("LA", b"\x08", b"\x04"), + "I": ("I;16B", b"\x10", b"\x00"), + "I;16": ("I;16B", b"\x10", b"\x00"), + "I;16B": ("I;16B", b"\x10", b"\x00"), + "P;1": ("P;1", b"\x01", b"\x03"), + "P;2": ("P;2", b"\x02", b"\x03"), + "P;4": ("P;4", b"\x04", b"\x03"), + "P": ("P", b"\x08", b"\x03"), + "RGB": ("RGB", b"\x08", b"\x02"), + "RGBA": ("RGBA", b"\x08", b"\x06"), +} + + +def putchunk(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + """Write a PNG chunk (including CRC field)""" + + byte_data = b"".join(data) + + fp.write(o32(len(byte_data)) + cid) + fp.write(byte_data) + crc = _crc32(byte_data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None]) -> None: + self.fp = fp + self.chunk = chunk + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp: IO[bytes], chunk: Callable[..., None], seq_num: int) -> None: + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data: bytes) -> None: + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +class _Frame(NamedTuple): + im: Image.Image + bbox: tuple[int, int, int, int] | None + encoderinfo: dict[str, Any] + + +def _write_multiple_frames( + im: Image.Image, + fp: IO[bytes], + chunk: Callable[..., None], + mode: str, + rawmode: str, + default_image: Image.Image | None, + append_images: list[Image.Image], +) -> Image.Image | None: + duration = im.encoderinfo.get("duration") + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal", Disposal.OP_NONE)) + blend = im.encoderinfo.get("blend", im.info.get("blend", Blend.OP_SOURCE)) + + if default_image: + chain = itertools.chain(append_images) + else: + chain = itertools.chain([im], append_images) + + im_frames: list[_Frame] = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + if im_frame.mode == mode: + im_frame = im_frame.copy() + else: + im_frame = im_frame.convert(mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + if isinstance(blend, (list, tuple)): + encoderinfo["blend"] = blend[frame_count] + frame_count += 1 + + if im_frames: + previous = im_frames[-1] + prev_disposal = previous.encoderinfo.get("disposal") + prev_blend = previous.encoderinfo.get("blend") + if prev_disposal == Disposal.OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = Disposal.OP_BACKGROUND + + if prev_disposal == Disposal.OP_BACKGROUND: + base_im = previous.im.copy() + dispose = Image.core.fill("RGBA", im.size, (0, 0, 0, 0)) + bbox = previous.bbox + if bbox: + dispose = dispose.crop(bbox) + else: + bbox = (0, 0) + im.size + base_im.paste(dispose, bbox) + elif prev_disposal == Disposal.OP_PREVIOUS: + base_im = im_frames[-2].im + else: + base_im = previous.im + delta = ImageChops.subtract_modulo( + im_frame.convert("RGBA"), base_im.convert("RGBA") + ) + bbox = delta.getbbox(alpha_only=False) + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + and "duration" in encoderinfo + ): + previous.encoderinfo["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append(_Frame(im_frame, bbox, encoderinfo)) + + if len(im_frames) == 1 and not default_image: + return im_frames[0].im + + # animation control + chunk( + fp, + b"acTL", + o32(len(im_frames)), # 0: num_frames + o32(loop), # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + if im.mode != mode: + im = im.convert(mode) + ImageFile._save( + im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + im.size, 0, rawmode)], + ) + + seq_num = 0 + for frame, frame_data in enumerate(im_frames): + im_frame = frame_data.im + if not frame_data.bbox: + bbox = (0, 0) + im_frame.size + else: + bbox = frame_data.bbox + im_frame = im_frame.crop(bbox) + size = im_frame.size + encoderinfo = frame_data.encoderinfo + frame_duration = int(round(encoderinfo.get("duration", 0))) + frame_disposal = encoderinfo.get("disposal", disposal) + frame_blend = encoderinfo.get("blend", blend) + # frame control + chunk( + fp, + b"fcTL", + o32(seq_num), # sequence_number + o32(size[0]), # width + o32(size[1]), # height + o32(bbox[0]), # x_offset + o32(bbox[1]), # y_offset + o16(frame_duration), # delay_numerator + o16(1000), # delay_denominator + o8(frame_disposal), # dispose_op + o8(frame_blend), # blend_op + ) + seq_num += 1 + # frame data + if frame == 0 and not default_image: + # first frame must be in IDAT chunks for backwards compatibility + ImageFile._save( + im_frame, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, + cast(IO[bytes], fdat_chunks), + [ImageFile._Tile("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + return None + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + _save(im, fp, filename, save_all=True) + + +def _save( + im: Image.Image, + fp: IO[bytes], + filename: str | bytes, + chunk: Callable[..., None] = putchunk, + save_all: bool = False, +) -> None: + # save an image to disk (called by the save method) + + if save_all: + default_image = im.encoderinfo.get( + "default_image", im.info.get("default_image") + ) + modes = set() + sizes = set() + append_images = im.encoderinfo.get("append_images", []) + for im_seq in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(im_seq): + modes.add(im_frame.mode) + sizes.add(im_frame.size) + for mode in ("RGBA", "RGB", "P"): + if mode in modes: + break + else: + mode = modes.pop() + size = tuple(max(frame_size[i] for frame_size in sizes) for i in range(2)) + else: + size = im.size + mode = im.mode + + outmode = mode + if mode == "P": + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = min(1 << im.encoderinfo["bits"], 256) + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 1) + else: + colors = 256 + + if colors <= 16: + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + else: + bits = 4 + outmode += f";{bits}" + + # encoder options + im.encoderconfig = ( + im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b""), + ) + + # get the corresponding PNG mode + try: + rawmode, bit_depth, color_type = _OUTMODES[outmode] + except KeyError as e: + msg = f"cannot write mode {mode} as PNG" + raise OSError(msg) from e + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(size[0]), # 0: size + o32(size[1]), + bit_depth, + color_type, + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + elif cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if not after_idat: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = colors * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b"\0" + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get("transparency", im.info.get("transparency", None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = colors + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b"\xFF" * transparency + b"\0" + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode in ("1", "L", "I", "I;16"): + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + msg = "cannot use transparency for this mode" + raise OSError(msg) + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = colors + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk( + fp, + b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b"\x01", + ) + + if info: + chunks = [b"bKGD", b"hIST"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.get("exif") + if exif: + if isinstance(exif, Image.Exif): + exif = exif.tobytes(8) + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + chunk(fp, b"eXIf", exif) + + single_im: Image.Image | None = im + if save_all: + single_im = _write_multiple_frames( + im, fp, chunk, mode, rawmode, default_image, append_images + ) + if single_im: + ImageFile._save( + single_im, + cast(IO[bytes], _idat(fp, chunk)), + [ImageFile._Tile("zip", (0, 0) + single_im.size, 0, rawmode)], + ) + + if info: + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid[1:2].islower(): + # Private chunk + after_idat = len(info_chunk) == 3 and info_chunk[2] + if after_idat: + chunk(fp, cid, data) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im: Image.Image, **params: Any) -> list[tuple[bytes, bytes, bytes]]: + """Return a list of PNG chunks representing this image.""" + from io import BytesIO + + chunks = [] + + def append(fp: IO[bytes], cid: bytes, *data: bytes) -> None: + byte_data = b"".join(data) + crc = o32(_crc32(byte_data, _crc32(cid))) + chunks.append((cid, byte_data, crc)) + + fp = BytesIO() + + try: + im.encoderinfo = params + _save(im, fp, "", append) + finally: + del im.encoderinfo + + return chunks + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) +Image.register_save_all(PngImageFile.format, _save_all) + +Image.register_extensions(PngImageFile.format, [".png", ".apng"]) + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/libs/PIL/PpmImagePlugin.py b/libs/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..4e779df --- /dev/null +++ b/libs/PIL/PpmImagePlugin.py @@ -0,0 +1,375 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import math +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P1": "1", + b"P2": "L", + b"P3": "RGB", + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + b"Pf": "F", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix: bytes) -> bool: + return prefix[0:1] == b"P" and prefix[1] in b"0123456fy" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + format = "PPM" + format_description = "Pbmplus image" + + def _read_magic(self) -> bytes: + assert self.fp is not None + + magic = b"" + # read until whitespace or longest available magic number + for _ in range(6): + c = self.fp.read(1) + if not c or c in b_whitespace: + break + magic += c + return magic + + def _read_token(self) -> bytes: + assert self.fp is not None + + token = b"" + while len(token) <= 10: # read until next whitespace or limit of 10 characters + c = self.fp.read(1) + if not c: + break + elif c in b_whitespace: # token ended + if not token: + # skip whitespace at start + continue + break + elif c == b"#": + # ignores rest of the line; stops at CR, LF or EOF + while self.fp.read(1) not in b"\r\n": + pass + continue + token += c + if not token: + # Token was not even 1 byte + msg = "Reached EOF while reading header" + raise ValueError(msg) + elif len(token) > 10: + msg = f"Token too long in file header: {token.decode()}" + raise ValueError(msg) + return token + + def _open(self) -> None: + assert self.fp is not None + + magic_number = self._read_magic() + try: + mode = MODES[magic_number] + except KeyError: + msg = "not a PPM file" + raise SyntaxError(msg) + self._mode = mode + + if magic_number in (b"P1", b"P4"): + self.custom_mimetype = "image/x-portable-bitmap" + elif magic_number in (b"P2", b"P5"): + self.custom_mimetype = "image/x-portable-graymap" + elif magic_number in (b"P3", b"P6"): + self.custom_mimetype = "image/x-portable-pixmap" + + self._size = int(self._read_token()), int(self._read_token()) + + decoder_name = "raw" + if magic_number in (b"P1", b"P2", b"P3"): + decoder_name = "ppm_plain" + + args: str | tuple[str | int, ...] + if mode == "1": + args = "1;I" + elif mode == "F": + scale = float(self._read_token()) + if scale == 0.0 or not math.isfinite(scale): + msg = "scale must be finite and non-zero" + raise ValueError(msg) + self.info["scale"] = abs(scale) + + rawmode = "F;32F" if scale < 0 else "F;32BF" + args = (rawmode, 0, -1) + else: + maxval = int(self._read_token()) + if not 0 < maxval < 65536: + msg = "maxval must be greater than 0 and less than 65536" + raise ValueError(msg) + if maxval > 255 and mode == "L": + self._mode = "I" + + rawmode = mode + if decoder_name != "ppm_plain": + # If maxval matches a bit depth, use the raw decoder directly + if maxval == 65535 and mode == "L": + rawmode = "I;16B" + elif maxval != 255: + decoder_name = "ppm" + + args = rawmode if decoder_name == "raw" else (rawmode, maxval) + self.tile = [ + ImageFile._Tile(decoder_name, (0, 0) + self.size, self.fp.tell(), args) + ] + + +# +# -------------------------------------------------------------------- + + +class PpmPlainDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _comment_spans: bool + + def _read_block(self) -> bytes: + assert self.fd is not None + + return self.fd.read(ImageFile.SAFEBLOCK) + + def _find_comment_end(self, block: bytes, start: int = 0) -> int: + a = block.find(b"\n", start) + b = block.find(b"\r", start) + return min(a, b) if a * b > 0 else max(a, b) # lowest nonnegative index (or -1) + + def _ignore_comments(self, block: bytes) -> bytes: + if self._comment_spans: + # Finish current comment + while block: + comment_end = self._find_comment_end(block) + if comment_end != -1: + # Comment ends in this block + # Delete tail of comment + block = block[comment_end + 1 :] + break + else: + # Comment spans whole block + # So read the next block, looking for the end + block = self._read_block() + + # Search for any further comments + self._comment_spans = False + while True: + comment_start = block.find(b"#") + if comment_start == -1: + # No comment found + break + comment_end = self._find_comment_end(block, comment_start) + if comment_end != -1: + # Comment ends in this block + # Delete comment + block = block[:comment_start] + block[comment_end + 1 :] + else: + # Comment continues to next block(s) + block = block[:comment_start] + self._comment_spans = True + break + return block + + def _decode_bitonal(self) -> bytearray: + """ + This is a separate method because in the plain PBM format, all data tokens are + exactly one byte, so the inter-token whitespace is optional. + """ + data = bytearray() + total_bytes = self.state.xsize * self.state.ysize + + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + # eof + break + + block = self._ignore_comments(block) + + tokens = b"".join(block.split()) + for token in tokens: + if token not in (48, 49): + msg = b"Invalid token for this mode: %s" % bytes([token]) + raise ValueError(msg) + data = (data + tokens)[:total_bytes] + invert = bytes.maketrans(b"01", b"\xFF\x00") + return data.translate(invert) + + def _decode_blocks(self, maxval: int) -> bytearray: + data = bytearray() + max_len = 10 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + total_bytes = self.state.xsize * self.state.ysize * bands * out_byte_count + + half_token = b"" + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + if half_token: + block = bytearray(b" ") # flush half_token + else: + # eof + break + + block = self._ignore_comments(block) + + if half_token: + block = half_token + block # stitch half_token to new block + half_token = b"" + + tokens = block.split() + + if block and not block[-1:].isspace(): # block might split token + half_token = tokens.pop() # save half token for later + if len(half_token) > max_len: # prevent buildup of half_token + msg = ( + b"Token too long found in data: %s" % half_token[: max_len + 1] + ) + raise ValueError(msg) + + for token in tokens: + if len(token) > max_len: + msg = b"Token too long found in data: %s" % token[: max_len + 1] + raise ValueError(msg) + value = int(token) + if value < 0: + msg_str = f"Channel value is negative: {value}" + raise ValueError(msg_str) + if value > maxval: + msg_str = f"Channel value too large for this mode: {value}" + raise ValueError(msg_str) + value = round(value / maxval * out_max) + data += o32(value) if self.mode == "I" else o8(value) + if len(data) == total_bytes: # finished! + break + return data + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + self._comment_spans = False + if self.mode == "1": + data = self._decode_bitonal() + rawmode = "1;8" + else: + maxval = self.args[-1] + data = self._decode_blocks(maxval) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +class PpmDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + data = bytearray() + maxval = self.args[-1] + in_byte_count = 1 if maxval < 256 else 2 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands * out_byte_count + while len(data) < dest_length: + pixels = self.fd.read(in_byte_count * bands) + if len(pixels) < in_byte_count * bands: + # eof + break + for b in range(bands): + value = ( + pixels[b] if in_byte_count == 1 else i16(pixels, b * in_byte_count) + ) + value = min(out_max, round(value / maxval * out_max)) + data += o32(value) if self.mode == "I" else o8(value) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +# +# -------------------------------------------------------------------- + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode in ("I", "I;16"): + rawmode, head = "I;16B", b"P5" + elif im.mode in ("RGB", "RGBA"): + rawmode, head = "RGB", b"P6" + elif im.mode == "F": + rawmode, head = "F;32F", b"Pf" + else: + msg = f"cannot write mode {im.mode} as PPM" + raise OSError(msg) + fp.write(head + b"\n%d %d\n" % im.size) + if head == b"P6": + fp.write(b"255\n") + elif head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + else: + fp.write(b"65535\n") + elif head == b"Pf": + fp.write(b"-1.0\n") + row_order = -1 if im.mode == "F" else 1 + ImageFile._save( + im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, row_order))] + ) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_decoder("ppm", PpmDecoder) +Image.register_decoder("ppm_plain", PpmPlainDecoder) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm", ".pfm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/libs/PIL/PsdImagePlugin.py b/libs/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..8ff5e39 --- /dev/null +++ b/libs/PIL/PsdImagePlugin.py @@ -0,0 +1,332 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +from functools import cached_property +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import si16be as si16 +from ._binary import si32be as si32 + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3), +} + + +# --------------------------------------------------------------------. +# read PSD images + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"8BPS" + + +## +# Image plugin for Photoshop images. + + +class PsdImageFile(ImageFile.ImageFile): + format = "PSD" + format_description = "Adobe Photoshop" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s, 4) != 1: + msg = "not a PSD file" + raise SyntaxError(msg) + + psd_bits = i16(s, 22) + psd_channels = i16(s, 12) + psd_mode = i16(s, 24) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + msg = "not enough channels" + raise OSError(msg) + if mode == "RGB" and psd_channels == 4: + mode = "RGBA" + channels = 4 + + self._mode = mode + self._size = i32(s, 18), i32(s, 14) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + read(4) # signature + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if len(data) & 1: + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self._layers_position = None + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self._layers_position = self.fp.tell() + self._layers_size = size + self.fp.seek(end) + self._n_frames: int | None = None + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self._fp = self.fp + self.frame = 1 + self._min_frame = 1 + + @cached_property + def layers( + self, + ) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + layers = [] + if self._layers_position is not None: + self._fp.seek(self._layers_position) + _layer_data = io.BytesIO(ImageFile._safe_read(self._fp, self._layers_size)) + layers = _layerinfo(_layer_data, self._layers_size) + self._n_frames = len(layers) + return layers + + @property + def n_frames(self) -> int: + if self._n_frames is None: + self._n_frames = len(self.layers) + return self._n_frames + + @property + def is_animated(self) -> bool: + return len(self.layers) > 1 + + def seek(self, layer: int) -> None: + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + _, mode, _, tile = self.layers[layer - 1] + self._mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + except IndexError as e: + msg = "no such layer" + raise EOFError(msg) from e + + def tell(self) -> int: + # return layer number (0=image, 1..max=layers) + return self.frame + + +def _layerinfo( + fp: IO[bytes], ct_bytes: int +) -> list[tuple[str, str, tuple[int, int, int, int], list[ImageFile._Tile]]]: + # read layerinfo block + layers = [] + + def read(size: int) -> bytes: + return ImageFile._safe_read(fp, size) + + ct = si16(read(2)) + + # sanity check + if ct_bytes < (abs(ct) * 20): + msg = "Layer block too short for number of layers requested" + raise SyntaxError(msg) + + for _ in range(abs(ct)): + # bounding box + y0 = si32(read(4)) + x0 = si32(read(4)) + y1 = si32(read(4)) + x1 = si32(read(4)) + + # image info + bands = [] + ct_types = i16(read(2)) + if ct_types > 4: + fp.seek(ct_types * 6 + 12, io.SEEK_CUR) + size = i32(read(4)) + fp.seek(size, io.SEEK_CUR) + continue + + for _ in range(ct_types): + type = i16(read(2)) + + if type == 65535: + b = "A" + else: + b = "RGBA"[type] + + bands.append(b) + read(4) # size + + # figure out the image mode + bands.sort() + if bands == ["R"]: + mode = "L" + elif bands == ["B", "G", "R"]: + mode = "RGB" + elif bands == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = "" # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + if size: + data_end = fp.tell() + size + + length = i32(read(4)) + if length: + fp.seek(length - 16, io.SEEK_CUR) + + length = i32(read(4)) + if length: + fp.seek(length, io.SEEK_CUR) + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode("latin-1", "replace") + + fp.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + layerinfo = [] + for i, (name, mode, bbox) in enumerate(layers): + tile = [] + for m in mode: + t = _maketile(fp, m, bbox, 1) + if t: + tile.extend(t) + layerinfo.append((name, mode, bbox, tile)) + + return layerinfo + + +def _maketile( + file: IO[bytes], mode: str, bbox: tuple[int, int, int, int], channels: int +) -> list[ImageFile._Tile]: + tiles = [] + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tiles.append(ImageFile._Tile("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount, i) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tiles + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") + +Image.register_mime(PsdImageFile.format, "image/vnd.adobe.photoshop") diff --git a/libs/PIL/QoiImagePlugin.py b/libs/PIL/QoiImagePlugin.py new file mode 100644 index 0000000..01cc868 --- /dev/null +++ b/libs/PIL/QoiImagePlugin.py @@ -0,0 +1,115 @@ +# +# The Python Imaging Library. +# +# QOI support for PIL +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os + +from . import Image, ImageFile +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] == b"qoif" + + +class QoiImageFile(ImageFile.ImageFile): + format = "QOI" + format_description = "Quite OK Image" + + def _open(self) -> None: + if not _accept(self.fp.read(4)): + msg = "not a QOI file" + raise SyntaxError(msg) + + self._size = i32(self.fp.read(4)), i32(self.fp.read(4)) + + channels = self.fp.read(1)[0] + self._mode = "RGB" if channels == 3 else "RGBA" + + self.fp.seek(1, os.SEEK_CUR) # colorspace + self.tile = [ImageFile._Tile("qoi", (0, 0) + self._size, self.fp.tell())] + + +class QoiDecoder(ImageFile.PyDecoder): + _pulls_fd = True + _previous_pixel: bytes | bytearray | None = None + _previously_seen_pixels: dict[int, bytes | bytearray] = {} + + def _add_to_previous_pixels(self, value: bytes | bytearray) -> None: + self._previous_pixel = value + + r, g, b, a = value + hash_value = (r * 3 + g * 5 + b * 7 + a * 11) % 64 + self._previously_seen_pixels[hash_value] = value + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + + self._previously_seen_pixels = {} + self._add_to_previous_pixels(bytearray((0, 0, 0, 255))) + + data = bytearray() + bands = Image.getmodebands(self.mode) + dest_length = self.state.xsize * self.state.ysize * bands + while len(data) < dest_length: + byte = self.fd.read(1)[0] + value: bytes | bytearray + if byte == 0b11111110 and self._previous_pixel: # QOI_OP_RGB + value = bytearray(self.fd.read(3)) + self._previous_pixel[3:] + elif byte == 0b11111111: # QOI_OP_RGBA + value = self.fd.read(4) + else: + op = byte >> 6 + if op == 0: # QOI_OP_INDEX + op_index = byte & 0b00111111 + value = self._previously_seen_pixels.get( + op_index, bytearray((0, 0, 0, 0)) + ) + elif op == 1 and self._previous_pixel: # QOI_OP_DIFF + value = bytearray( + ( + (self._previous_pixel[0] + ((byte & 0b00110000) >> 4) - 2) + % 256, + (self._previous_pixel[1] + ((byte & 0b00001100) >> 2) - 2) + % 256, + (self._previous_pixel[2] + (byte & 0b00000011) - 2) % 256, + self._previous_pixel[3], + ) + ) + elif op == 2 and self._previous_pixel: # QOI_OP_LUMA + second_byte = self.fd.read(1)[0] + diff_green = (byte & 0b00111111) - 32 + diff_red = ((second_byte & 0b11110000) >> 4) - 8 + diff_blue = (second_byte & 0b00001111) - 8 + + value = bytearray( + tuple( + (self._previous_pixel[i] + diff_green + diff) % 256 + for i, diff in enumerate((diff_red, 0, diff_blue)) + ) + ) + value += self._previous_pixel[3:] + elif op == 3 and self._previous_pixel: # QOI_OP_RUN + run_length = (byte & 0b00111111) + 1 + value = self._previous_pixel + if bands == 3: + value = value[:3] + data += value * run_length + continue + self._add_to_previous_pixels(value) + + if bands == 3: + value = value[:3] + data += value + self.set_as_raw(data) + return -1, 0 + + +Image.register_open(QoiImageFile.format, QoiImageFile, _accept) +Image.register_decoder("qoi", QoiDecoder) +Image.register_extension(QoiImageFile.format, ".qoi") diff --git a/libs/PIL/SgiImagePlugin.py b/libs/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..44254b7 --- /dev/null +++ b/libs/PIL/SgiImagePlugin.py @@ -0,0 +1,247 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import os +import struct +from typing import IO + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B", +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self) -> None: + # HEAD + assert self.fp is not None + + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + msg = "Not an SGI image file" + raise ValueError(msg) + + # compression : verbatim or RLE + compression = s[2] + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = s[3] + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s, 4) + + # xsize : width + xsize = i16(s, 6) + + # ysize : height + ysize = i16(s, 8) + + # zsize : channels count + zsize = i16(s, 10) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + self._size = xsize, ysize + self._mode = rawmode.split(";")[0] + if self.mode == "RGB": + self.custom_mimetype = "image/rgb" + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [ + ImageFile._Tile( + "SGI16", + (0, 0) + self.size, + headlen, + (self.mode, 0, orientation), + ) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ImageFile._Tile( + "raw", (0, 0) + self.size, offset, (layer, 0, orientation) + ) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ImageFile._Tile( + "sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc) + ) + ] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode not in {"RGB", "RGBA", "L"}: + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + msg = "Unsupported number of bytes per pixel" + raise ValueError(msg) + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magic_number = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim in {1, 2}: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + msg = f"incorrect number of bands in SGI write: {z} vs {len(im.getbands())}" + raise ValueError(msg) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + img_name = os.path.splitext(os.path.basename(filename))[0] + if isinstance(img_name, str): + img_name = img_name.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magic_number)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dim)) + fp.write(struct.pack(">H", x)) + fp.write(struct.pack(">H", y)) + fp.write(struct.pack(">H", z)) + fp.write(struct.pack(">l", pinmin)) + fp.write(struct.pack(">l", pinmax)) + fp.write(struct.pack("4s", b"")) # dummy + fp.write(struct.pack("79s", img_name)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after img_name + fp.write(struct.pack(">l", colormap)) + fp.write(struct.pack("404s", b"")) # dummy + + rawmode = "L" + if bpc == 2: + rawmode = "L;16B" + + for channel in im.split(): + fp.write(channel.tobytes("raw", rawmode, 0, orientation)) + + if hasattr(fp, "flush"): + fp.flush() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]: + assert self.fd is not None + assert self.im is not None + + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new("L", (self.state.xsize, self.state.ysize)) + channel.frombytes( + self.fd.read(2 * pagesize), "raw", "L;16B", stride, orientation + ) + self.im.putband(channel.im, band) + + return -1, 0 + + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/libs/PIL/SpiderImagePlugin.py b/libs/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..3a87d00 --- /dev/null +++ b/libs/PIL/SpiderImagePlugin.py @@ -0,0 +1,326 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# +from __future__ import annotations + +import os +import struct +import sys +from typing import IO, TYPE_CHECKING, Any, cast + +from . import Image, ImageFile + + +def isInt(f: Any) -> int: + try: + i = int(f) + if f - i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + + +def isSpiderHeader(t: tuple[float, ...]) -> int: + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename: str) -> int: + with open(filename, "rb") as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack(">23f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack("<23f", f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self) -> None: + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack(">27f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack("<27f", f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + msg = "not a valid Spider file" + raise SyntaxError(msg) + except struct.error as e: + msg = "not a valid Spider file" + raise SyntaxError(msg) from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + msg = "not a Spider 2D image" + raise SyntaxError(msg) + + self._size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + msg = "inconsistent stack header values" + raise SyntaxError(msg) + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self._mode = "F" + + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, offset, self.rawmode)] + self._fp = self.fp # FIXME: hack + + @property + def n_frames(self) -> int: + return self._nimages + + @property + def is_animated(self) -> bool: + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self) -> int: + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame: int) -> None: + if self.istack == 0: + msg = "attempt to seek in a non-stack file" + raise EOFError(msg) + if not self._seek_check(frame): + return + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self._fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth: int = 255) -> Image.Image: + extrema = self.getextrema() + assert isinstance(extrema[0], float) + minimum, maximum = cast(tuple[float, float], extrema) + m: float = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i: i * m + b).convert("L") + + if TYPE_CHECKING: + from . import ImageTk + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self) -> ImageTk.PhotoImage: + from . import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + +# -------------------------------------------------------------------- +# Image series + + +# given a list of filenames, return a list of images +def loadImageSeries(filelist: list[str] | None = None) -> list[Image.Image] | None: + """create a list of :py:class:`~PIL.Image.Image` objects for use in a montage""" + if filelist is None or len(filelist) < 1: + return None + + byte_imgs = [] + for img in filelist: + if not os.path.exists(img): + print(f"unable to find {img}") + continue + try: + with Image.open(img) as im: + assert isinstance(im, SpiderImageFile) + byte_im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(f"{img} is not a Spider image file") + continue + byte_im.info["filename"] = img + byte_imgs.append(byte_im) + return byte_imgs + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im: Image.Image) -> list[bytes]: + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = int(1024 / lenbyt) + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + nvalues = int(labbyt / 4) + if nvalues < 23: + return [] + + hdr = [0.0] * nvalues + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[3] = float(nrow) # number of records in the image + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + return [struct.pack("f", v) for v in hdr] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + msg = "Error creating Spider header" + raise OSError(msg) + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [ImageFile._Tile("raw", (0, 0) + im.size, 0, rawmode)]) + + +def _save_spider(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + # get the filename extension and register it with Image + filename_ext = os.path.splitext(filename)[1] + ext = filename_ext.decode() if isinstance(filename_ext, bytes) else filename_ext + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + with Image.open(filename) as im: + print(f"image: {im}") + print(f"format: {im.format}") + print(f"size: {im.size}") + print(f"mode: {im.mode}") + print("max, min: ", end=" ") + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + print( + f"saving a flipped version of {os.path.basename(filename)} " + f"as {outfile} " + ) + im.save(outfile, SpiderImageFile.format) diff --git a/libs/PIL/SunImagePlugin.py b/libs/PIL/SunImagePlugin.py new file mode 100644 index 0000000..8912379 --- /dev/null +++ b/libs/PIL/SunImagePlugin.py @@ -0,0 +1,145 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix: bytes) -> bool: + return len(prefix) >= 4 and i32(prefix) == 0x59A66A95 + + +## +# Image plugin for Sun raster files. + + +class SunImageFile(ImageFile.ImageFile): + format = "SUN" + format_description = "Sun Raster File" + + def _open(self) -> None: + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + assert self.fp is not None + + # HEAD + s = self.fp.read(32) + if not _accept(s): + msg = "not an SUN raster file" + raise SyntaxError(msg) + + offset = 32 + + self._size = i32(s, 4), i32(s, 8) + + depth = i32(s, 12) + # data_length = i32(s, 16) # unreliable, ignore. + file_type = i32(s, 20) + palette_type = i32(s, 24) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s, 28) + + if depth == 1: + self._mode, rawmode = "1", "1;I" + elif depth == 4: + self._mode, rawmode = "L", "L;4" + elif depth == 8: + self._mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self._mode, rawmode = "RGB", "RGB" + else: + self._mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self._mode, rawmode = "RGB", "RGBX" + else: + self._mode, rawmode = "RGB", "BGRX" + else: + msg = "Unsupported Mode/Bit Depth" + raise SyntaxError(msg) + + if palette_length: + if palette_length > 1024: + msg = "Unsupported Color Palette Length" + raise SyntaxError(msg) + + if palette_type != 1: + msg = "Unsupported Palette Type" + raise SyntaxError(msg) + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self._mode = "P" + rawmode = rawmode.replace("L", "P") + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, offset, (rawmode, stride)) + ] + elif file_type == 2: + self.tile = [ + ImageFile._Tile("sun_rle", (0, 0) + self.size, offset, rawmode) + ] + else: + msg = "Unsupported Sun Raster file type" + raise SyntaxError(msg) + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/libs/PIL/TarIO.py b/libs/PIL/TarIO.py new file mode 100644 index 0000000..779288b --- /dev/null +++ b/libs/PIL/TarIO.py @@ -0,0 +1,57 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO[bytes]): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile: str, file: str) -> None: + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + self.fh = open(tarfile, "rb") + + while True: + s = self.fh.read(512) + if len(s) != 512: + msg = "unexpected end of tar file" + raise OSError(msg) + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + msg = "cannot find subfile" + raise OSError(msg) + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + self.fh.seek((size + 511) & (~511), io.SEEK_CUR) + + # Open region + super().__init__(self.fh, self.fh.tell(), size) diff --git a/libs/PIL/TgaImagePlugin.py b/libs/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..90d5b5c --- /dev/null +++ b/libs/PIL/TgaImagePlugin.py @@ -0,0 +1,264 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import warnings +from typing import IO + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGRA;15Z", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + format = "TGA" + format_description = "Targa" + + def _open(self) -> None: + # process header + assert self.fp is not None + + s = self.fp.read(18) + + id_len = s[0] + + colormaptype = s[1] + imagetype = s[2] + + depth = s[16] + + flags = s[17] + + self._size = i16(s, 12), i16(s, 14) + + # validate header fields + if ( + colormaptype not in (0, 1) + or self.size[0] <= 0 + or self.size[1] <= 0 + or depth not in (1, 8, 16, 24, 32) + ): + msg = "not a TGA file" + raise SyntaxError(msg) + + # image mode + if imagetype in (3, 11): + self._mode = "L" + if depth == 1: + self._mode = "1" # ??? + elif depth == 16: + self._mode = "LA" + elif imagetype in (1, 9): + self._mode = "P" if colormaptype else "L" + elif imagetype in (2, 10): + self._mode = "RGB" if depth == 24 else "RGBA" + else: + msg = "unknown TGA mode" + raise SyntaxError(msg) + + # orientation + orientation = flags & 0x30 + self._flip_horizontally = orientation in [0x10, 0x30] + if orientation in [0x20, 0x30]: + orientation = 1 + elif orientation in [0, 0x10]: + orientation = -1 + else: + msg = "unknown TGA orientation" + raise SyntaxError(msg) + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if id_len: + self.info["id_section"] = self.fp.read(id_len) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s, 3), i16(s, 5), s[7] + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGRA;15Z", bytes(2 * start) + self.fp.read(2 * size) + ) + self.palette.mode = "RGBA" + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", bytes(3 * start) + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", bytes(4 * start) + self.fp.read(4 * size) + ) + else: + msg = "unknown TGA map depth" + raise SyntaxError(msg) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ImageFile._Tile( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ImageFile._Tile( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + def load_end(self) -> None: + if self._flip_horizontally: + self.im = self.im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TGA" + raise OSError(msg) from e + + if "rle" in im.encoderinfo: + rle = im.encoderinfo["rle"] + else: + compression = im.encoderinfo.get("compression", im.info.get("compression")) + rle = compression == "tga_rle" + if rle: + imagetype += 8 + + id_section = im.encoderinfo.get("id_section", im.info.get("id_section", "")) + id_len = len(id_section) + if id_len > 255: + id_len = 255 + id_section = id_section[:255] + warnings.warn("id_section has been trimmed to 255 characters") + + if colormaptype: + palette = im.im.getpalette("RGB", "BGR") + colormaplength, colormapentry = len(palette) // 3, 24 + else: + colormaplength, colormapentry = 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.encoderinfo.get("orientation", im.info.get("orientation", -1)) + if orientation > 0: + flags = flags | 0x20 + + fp.write( + o8(id_len) + + o8(colormaptype) + + o8(imagetype) + + o16(0) # colormapfirst + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags) + ) + + if id_section: + fp.write(id_section) + + if colormaptype: + fp.write(palette) + + if rle: + ImageFile._save( + im, + fp, + [ImageFile._Tile("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))], + ) + else: + ImageFile._save( + im, + fp, + [ImageFile._Tile("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))], + ) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga") diff --git a/libs/PIL/TiffImagePlugin.py b/libs/PIL/TiffImagePlugin.py new file mode 100644 index 0000000..61eb152 --- /dev/null +++ b/libs/PIL/TiffImagePlugin.py @@ -0,0 +1,2297 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import io +import itertools +import logging +import math +import os +import struct +import warnings +from collections.abc import Iterator, MutableMapping +from fractions import Fraction +from numbers import Number, Rational +from typing import IO, TYPE_CHECKING, Any, Callable, NoReturn, cast + +from . import ExifTags, Image, ImageFile, ImageOps, ImagePalette, TiffTags +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._deprecate import deprecate +from ._typing import StrOrBytesPath +from ._util import is_path +from .TiffTags import TYPES + +if TYPE_CHECKING: + from ._typing import Buffer, IntegralLike + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +STRIP_SIZE = 65536 + +II = b"II" # little-endian (Intel style) +MM = b"MM" # big-endian (Motorola style) + +# +# -------------------------------------------------------------------- +# Read TIFF files + +# a few tag names, just to make the code below a bit more readable +OSUBFILETYPE = 255 +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +TRANSFERFUNCTION = 301 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEWIDTH = 322 +TILELENGTH = 323 +TILEOFFSETS = 324 +TILEBYTECOUNTS = 325 +SUBIFD = 330 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +YCBCRSUBSAMPLING = 530 +REFERENCEBLACKWHITE = 532 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 +JPEGQUALITY = 65537 # pseudo-tag by libtiff + +# https://github.com/imagej/ImageJA/blob/master/src/main/java/ij/io/TiffDecoder.java +IMAGEJ_META_DATA_BYTE_COUNTS = 50838 +IMAGEJ_META_DATA = 50839 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", + 34925: "lzma", + 50000: "zstd", + 50001: "webp", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (2,), 1, (8,), ()): ("L", "L"), + (MM, 1, (2,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 0, (1,), 1, (16,), ()): ("I;16", "I;16"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (1,), 2, (16,), ()): ("I;16", "I;16R"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGB", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGB", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGB", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGB", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGB", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGB", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (0,)): ("P", "PX"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (II, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16L"), + (MM, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16B"), + (II, 6, (1,), 1, (8,), ()): ("L", "L"), + (MM, 6, (1,), 1, (8,), ()): ("L", "L"), + # JPEG compressed images handled by LibTiff and auto-converted to RGBX + # Minimal Baseline TIFF requires YCbCr images to have 3 SamplesPerPixel + (II, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +MAX_SAMPLESPERPIXEL = max(len(key_tp[4]) for key_tp in OPEN_INFO) + +PREFIXES = [ + b"MM\x00\x2A", # Valid TIFF header with big-endian byte order + b"II\x2A\x00", # Valid TIFF header with little-endian byte order + b"MM\x2A\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2A", # Invalid TIFF header, assume little-endian + b"MM\x00\x2B", # BigTIFF with big-endian byte order + b"II\x2B\x00", # BigTIFF with little-endian byte order +] + +if not getattr(Image.core, "libtiff_support_custom_tags", True): + deprecate("Support for LibTIFF earlier than version 4", 12) + + +def _accept(prefix: bytes) -> bool: + return prefix[:4] in PREFIXES + + +def _limit_rational( + val: float | Fraction | IFDRational, max_val: int +) -> tuple[IntegralLike, IntegralLike]: + inv = abs(val) > 1 + n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) + return n_d[::-1] if inv else n_d + + +def _limit_signed_rational( + val: IFDRational, max_val: int, min_val: int +) -> tuple[IntegralLike, IntegralLike]: + frac = Fraction(val) + n_d: tuple[IntegralLike, IntegralLike] = frac.numerator, frac.denominator + + if min(float(i) for i in n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + n_d_float = tuple(float(i) for i in n_d) + if max(n_d_float) > max_val: + n_d = _limit_rational(n_d_float[0] / n_d_float[1], max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +def _delegate(op: str) -> Any: + def delegate( + self: IFDRational, *args: tuple[float, ...] + ) -> bool | float | Fraction: + return getattr(self._val, op)(*args) + + return delegate + + +class IFDRational(Rational): + """Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ("_numerator", "_denominator", "_val") + + def __init__( + self, value: float | Fraction | IFDRational, denominator: int = 1 + ) -> None: + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + self._val: Fraction | float + if isinstance(value, IFDRational): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value._val + return + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + else: + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, value) + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + elif int(value) == value: + self._val = Fraction(int(value), denominator) + else: + self._val = Fraction(value / denominator) + + @property + def numerator(self) -> IntegralLike: + return self._numerator + + @property + def denominator(self) -> int: + return self._denominator + + def limit_rational(self, max_denominator: int) -> tuple[IntegralLike, int]: + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return self.numerator, self.denominator + + assert isinstance(self._val, Fraction) + f = self._val.limit_denominator(max_denominator) + return f.numerator, f.denominator + + def __repr__(self) -> str: + return str(float(self._val)) + + def __hash__(self) -> int: + return self._val.__hash__() + + def __eq__(self, other: object) -> bool: + val = self._val + if isinstance(other, IFDRational): + other = other._val + if isinstance(other, float): + val = float(val) + return val == other + + def __getstate__(self) -> list[float | Fraction | IntegralLike]: + return [self._val, self._numerator, self._denominator] + + def __setstate__(self, state: list[float | Fraction | IntegralLike]) -> None: + IFDRational.__init__(self, 0) + _val, _numerator, _denominator = state + assert isinstance(_val, (float, Fraction)) + self._val = _val + if TYPE_CHECKING: + self._numerator = cast(IntegralLike, _numerator) + else: + self._numerator = _numerator + assert isinstance(_denominator, int) + self._denominator = _denominator + + """ a = ['add','radd', 'sub', 'rsub', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', 'rfloordiv', + 'mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'bool', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate("__add__") + __radd__ = _delegate("__radd__") + __sub__ = _delegate("__sub__") + __rsub__ = _delegate("__rsub__") + __mul__ = _delegate("__mul__") + __rmul__ = _delegate("__rmul__") + __truediv__ = _delegate("__truediv__") + __rtruediv__ = _delegate("__rtruediv__") + __floordiv__ = _delegate("__floordiv__") + __rfloordiv__ = _delegate("__rfloordiv__") + __mod__ = _delegate("__mod__") + __rmod__ = _delegate("__rmod__") + __pow__ = _delegate("__pow__") + __rpow__ = _delegate("__rpow__") + __pos__ = _delegate("__pos__") + __neg__ = _delegate("__neg__") + __abs__ = _delegate("__abs__") + __trunc__ = _delegate("__trunc__") + __lt__ = _delegate("__lt__") + __gt__ = _delegate("__gt__") + __le__ = _delegate("__le__") + __ge__ = _delegate("__ge__") + __bool__ = _delegate("__bool__") + __ceil__ = _delegate("__ceil__") + __floor__ = _delegate("__floor__") + __round__ = _delegate("__round__") + # Python >= 3.11 + if hasattr(Fraction, "__int__"): + __int__ = _delegate("__int__") + + +_LoaderFunc = Callable[["ImageFileDirectory_v2", bytes, bool], Any] + + +def _register_loader(idx: int, size: int) -> Callable[[_LoaderFunc], _LoaderFunc]: + def decorator(func: _LoaderFunc) -> _LoaderFunc: + from .TiffTags import TYPES + + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func # noqa: F821 + return func + + return decorator + + +def _register_writer(idx: int) -> Callable[[Callable[..., Any]], Callable[..., Any]]: + def decorator(func: Callable[..., Any]) -> Callable[..., Any]: + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + +def _register_basic(idx_fmt_name: tuple[int, str, str]) -> None: + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize(f"={fmt}") + + def basic_handler( + self: ImageFileDirectory_v2, data: bytes, legacy_api: bool = True + ) -> tuple[Any, ...]: + return self._unpack(f"{len(data) // size}{fmt}", data) + + _load_dispatch[idx] = size, basic_handler # noqa: F821 + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + +if TYPE_CHECKING: + _IFDv2Base = MutableMapping[int, Any] +else: + _IFDv2Base = MutableMapping + + +class ImageFileDirectory_v2(_IFDv2Base): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * ``self.tagtype = {}`` + + * Key: numerical TIFF tag number + * Value: integer corresponding to the data type from + :py:data:`.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + + 'Internal' data structures: + + * ``self._tags_v2 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data, as tuple for multiple values + + * ``self._tagdata = {}`` + + * Key: numerical TIFF tag number + * Value: undecoded byte string from file + + * ``self._tags_v1 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data in the v1 format + + Tags will be found in the private attributes ``self._tagdata``, and in + ``self._tags_v2`` once decoded. + + ``self.legacy_api`` is a value for internal use, and shouldn't be changed + from outside code. In cooperation with + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api`` + is true, then decoded tags will be populated into both ``_tags_v1`` and + ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF + save routine. Tags should be read from ``_tags_v1`` if + ``legacy_api == true``. + + """ + + _load_dispatch: dict[int, tuple[int, _LoaderFunc]] = {} + _write_dispatch: dict[int, Callable[..., Any]] = {} + + def __init__( + self, + ifh: bytes = b"II\x2A\x00\x00\x00\x00\x00", + prefix: bytes | None = None, + group: int | None = None, + ) -> None: + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if not _accept(ifh): + msg = f"not a TIFF file (header {repr(ifh)} not valid)" + raise SyntaxError(msg) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + msg = "not a TIFF IFD" + raise SyntaxError(msg) + self._bigtiff = ifh[2] == 43 + self.group = group + self.tagtype: dict[int, int] = {} + """ Dictionary of tag types """ + self.reset() + self.next = ( + self._unpack("Q", ifh[8:])[0] + if self._bigtiff + else self._unpack("L", ifh[4:])[0] + ) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + + @property + def legacy_api(self) -> bool: + return self._legacy_api + + @legacy_api.setter + def legacy_api(self, value: bool) -> NoReturn: + msg = "Not allowing setting of legacy api" + raise Exception(msg) + + def reset(self) -> None: + self._tags_v1: dict[int, Any] = {} # will remain empty if legacy_api is false + self._tags_v2: dict[int, Any] = {} # main tag storage + self._tagdata: dict[int, bytes] = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset: int | None = None + + def __str__(self) -> str: + return str(dict(self)) + + def named(self) -> dict[str, Any]: + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return { + TiffTags.lookup(code, self.group).name: value + for code, value in self.items() + } + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag: int) -> Any: + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + def __contains__(self, tag: object) -> bool: + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag: int, value: Any) -> None: + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag: int, value: Any, legacy_api: bool) -> None: + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag, self.group) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = TiffTags.UNDEFINED + if all(isinstance(v, IFDRational) for v in values): + for v in values: + assert isinstance(v, IFDRational) + if v < 0: + self.tagtype[tag] = TiffTags.SIGNED_RATIONAL + break + else: + self.tagtype[tag] = TiffTags.RATIONAL + elif all(isinstance(v, int) for v in values): + short = True + signed_short = True + long = True + for v in values: + assert isinstance(v, int) + if short and not (0 <= v < 2**16): + short = False + if signed_short and not (-(2**15) < v < 2**15): + signed_short = False + if long and v < 0: + long = False + if short: + self.tagtype[tag] = TiffTags.SHORT + elif signed_short: + self.tagtype[tag] = TiffTags.SIGNED_SHORT + elif long: + self.tagtype[tag] = TiffTags.LONG + else: + self.tagtype[tag] = TiffTags.SIGNED_LONG + elif all(isinstance(v, float) for v in values): + self.tagtype[tag] = TiffTags.DOUBLE + elif all(isinstance(v, str) for v in values): + self.tagtype[tag] = TiffTags.ASCII + elif all(isinstance(v, bytes) for v in values): + self.tagtype[tag] = TiffTags.BYTE + + if self.tagtype[tag] == TiffTags.UNDEFINED: + values = [ + v.encode("ascii", "replace") if isinstance(v, str) else v + for v in values + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + is_ifd = self.tagtype[tag] == TiffTags.LONG and isinstance(values, dict) + if not is_ifd: + values = tuple( + info.cvt_enum(value) if isinstance(value, str) else value + for value in values + ) + + dest = self._tags_v1 if legacy_api else self._tags_v2 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if not is_ifd and ( + (info.length == 1) + or self.tagtype[tag] == TiffTags.BYTE + or (info.length is None and len(values) == 1 and not legacy_api) + ): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [ + TiffTags.RATIONAL, + TiffTags.SIGNED_RATIONAL, + ]: # rationals + values = (values,) + try: + (dest[tag],) = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + f"Metadata Warning, tag {tag} had too many entries: " + f"{len(values)}, expected 1" + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag: int) -> None: + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt: str, data: bytes) -> tuple[Any, ...]: + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt: str, *values: Any) -> bytes: + return struct.pack(self._endian + fmt, *values) + + list( + map( + _register_basic, + [ + (TiffTags.SHORT, "H", "short"), + (TiffTags.LONG, "L", "long"), + (TiffTags.SIGNED_BYTE, "b", "signed byte"), + (TiffTags.SIGNED_SHORT, "h", "signed short"), + (TiffTags.SIGNED_LONG, "l", "signed long"), + (TiffTags.FLOAT, "f", "float"), + (TiffTags.DOUBLE, "d", "double"), + (TiffTags.IFD, "L", "long"), + (TiffTags.LONG8, "Q", "long8"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data: bytes | int | IFDRational) -> bytes: + if isinstance(data, IFDRational): + data = int(data) + if isinstance(data, int): + data = bytes((data,)) + return data + + @_register_loader(2, 1) + def load_string(self, data: bytes, legacy_api: bool = True) -> str: + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value: str | bytes | int) -> bytes: + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + if isinstance(value, int): + value = str(value) + if not isinstance(value, bytes): + value = value.encode("ascii", "replace") + return value + b"\0" + + @_register_loader(5, 8) + def load_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}L", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values: IFDRational) -> bytes: + return b"".join( + self._pack("2L", *_limit_rational(frac, 2**32 - 1)) for frac in values + ) + + @_register_loader(7, 1) + def load_undefined(self, data: bytes, legacy_api: bool = True) -> bytes: + return data + + @_register_writer(7) + def write_undefined(self, value: bytes | int | IFDRational) -> bytes: + if isinstance(value, IFDRational): + value = int(value) + if isinstance(value, int): + value = str(value).encode("ascii", "replace") + return value + + @_register_loader(10, 8) + def load_signed_rational( + self, data: bytes, legacy_api: bool = True + ) -> tuple[tuple[int, int] | IFDRational, ...]: + vals = self._unpack(f"{len(data) // 4}l", data) + + def combine(a: int, b: int) -> tuple[int, int] | IFDRational: + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values: IFDRational) -> bytes: + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2**31 - 1, -(2**31))) + for frac in values + ) + + def _ensure_read(self, fp: IO[bytes], size: int) -> bytes: + ret = fp.read(size) + if len(ret) != size: + msg = ( + "Corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(ret)}. " + ) + raise OSError(msg) + return ret + + def load(self, fp: IO[bytes]) -> None: + self.reset() + self._offset = fp.tell() + + try: + tag_count = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("H", self._ensure_read(fp, 2)) + )[0] + for i in range(tag_count): + tag, typ, count, data = ( + self._unpack("HHQ8s", self._ensure_read(fp, 20)) + if self._bigtiff + else self._unpack("HHL4s", self._ensure_read(fp, 12)) + ) + + tagname = TiffTags.lookup(tag, self.group).name + typname = TYPES.get(typ, "unknown") + msg = f"tag: {tagname} ({tag}) - type: {typname} ({typ})" + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + logger.debug("%s - unsupported type %s", msg, typ) + continue # ignore unsupported type + size = count * unit_size + if size > (8 if self._bigtiff else 4): + here = fp.tell() + (offset,) = self._unpack("Q" if self._bigtiff else "L", data) + msg += f" Tag Location: {here} - Data Location: {offset}" + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn( + "Possibly corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(data)}." + f" Skipping tag {tag}" + ) + logger.debug(msg) + continue + + if not data: + logger.debug(msg) + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + msg += " - value: " + msg += f"" if size > 32 else repr(data) + + logger.debug(msg) + + (self.next,) = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("L", self._ensure_read(fp, 4)) + ) + except OSError as msg: + warnings.warn(str(msg)) + return + + def _get_ifh(self): + ifh = self._prefix + self._pack("H", 43 if self._bigtiff else 42) + if self._bigtiff: + ifh += self._pack("HH", 8, 0) + ifh += self._pack("Q", 16) if self._bigtiff else self._pack("L", 8) + + return ifh + + def tobytes(self, offset: int = 0) -> bytes: + # FIXME What about tagdata? + result = self._pack("Q" if self._bigtiff else "H", len(self._tags_v2)) + + entries: list[tuple[int, int, int, bytes, bytes]] = [] + offset += len(result) + len(self._tags_v2) * (20 if self._bigtiff else 12) + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + fmt = "Q" if self._bigtiff else "L" + fmt_size = 8 if self._bigtiff else 4 + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype[tag] + logger.debug("Tag %s, Type: %s, Value: %s", tag, typ, repr(value)) + is_ifd = typ == TiffTags.LONG and isinstance(value, dict) + if is_ifd: + ifd = ImageFileDirectory_v2(self._get_ifh(), group=tag) + values = self._tags_v2[tag] + for ifd_tag, ifd_value in values.items(): + ifd[ifd_tag] = ifd_value + data = ifd.tobytes(offset) + else: + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + + tagname = TiffTags.lookup(tag, self.group).name + typname = "ifd" if is_ifd else TYPES.get(typ, "unknown") + msg = f"save: {tagname} ({tag}) - type: {typname} ({typ}) - value: " + msg += f"" if len(data) >= 16 else str(values) + logger.debug(msg) + + # count is sum of lengths for string and arbitrary data + if is_ifd: + count = 1 + elif typ in [TiffTags.BYTE, TiffTags.ASCII, TiffTags.UNDEFINED]: + count = len(data) + else: + count = len(values) + # figure out if data fits into the entry + if len(data) <= fmt_size: + entries.append((tag, typ, count, data.ljust(fmt_size, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack(fmt, offset), data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + size, handler = self._load_dispatch[typ] + values = [val + offset for val in handler(self, data, self.legacy_api)] + data = self._write_dispatch[typ](self, *values) + else: + value = self._pack(fmt, self._unpack(fmt, value)[0] + offset) + entries[stripoffsets] = tag, typ, count, value, data + + # pass 2: write entries to file + for tag, typ, count, value, data in entries: + logger.debug("%s %s %s %s %s", tag, typ, count, repr(value), repr(data)) + result += self._pack( + "HHQ8s" if self._bigtiff else "HHL4s", tag, typ, count, value + ) + + # -- overwrite here for multi-page -- + result += b"\0\0\0\0" # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + result += data + if len(data) & 1: + result += b"\0" + + return result + + def save(self, fp: IO[bytes]) -> int: + if fp.tell() == 0: # skip TIFF header on subsequent pages + fp.write(self._get_ifh()) + + offset = fp.tell() + result = self.tobytes(offset) + fp.write(result) + return offset + len(result) + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, f"load_{name}", _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, f"write_{name}", _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + # defined in ImageFileDirectory_v2 + tagtype: dict[int, int] + """Dictionary of tag types""" + + @classmethod + def from_v2(cls, original: ImageFileDirectory_v2) -> ImageFileDirectory_v1: + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self) -> ImageFileDirectory_v2: + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag: object) -> bool: + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self) -> int: + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self) -> Iterator[int]: + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag: int, value: Any) -> None: + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag: int) -> Any: + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + +# undone -- switch this pointer +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + + +class TiffImageFile(ImageFile.ImageFile): + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def __init__( + self, + fp: StrOrBytesPath | IO[bytes], + filename: str | bytes | None = None, + ) -> None: + self.tag_v2: ImageFileDirectory_v2 + """ Image file directory (tag dictionary) """ + + self.tag: ImageFileDirectory_v1 + """ Legacy tag entries """ + + super().__init__(fp, filename) + + def _open(self) -> None: + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + if ifh[2] == 43: + ifh += self.fp.read(8) + + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self._fp = self.fp + self._frame_pos: list[int] = [] + self._n_frames: int | None = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug("- __first: %s", self.__first) + logger.debug("- ifh: %s", repr(ifh)) # Use repr to avoid str(bytes) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self) -> int: + current_n_frames = self._n_frames + if current_n_frames is None: + current = self.tell() + self._seek(len(self._frame_pos)) + while self._n_frames is None: + self._seek(self.tell() + 1) + self.seek(current) + assert self._n_frames is not None + return self._n_frames + + def seek(self, frame: int) -> None: + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + if self._im is not None and ( + self.im.size != self._tile_size or self.im.mode != self.mode + ): + # The core image will no longer be used + self._im = None + + def _seek(self, frame: int) -> None: + self.fp = self._fp + + while len(self._frame_pos) <= frame: + if not self.__next: + msg = "no more images in TIFF file" + raise EOFError(msg) + logger.debug( + "Seeking to frame %s, on frame %s, __next %s, location: %s", + frame, + self.__frame, + self.__next, + self.fp.tell(), + ) + if self.__next >= 2**63: + msg = "Unable to seek to frame" + raise ValueError(msg) + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + logger.debug("Loading tags, location: %s", self.fp.tell()) + self.tag_v2.load(self.fp) + if self.tag_v2.next in self._frame_pos: + # This IFD has already been processed + # Declare this to be the end of the image + self.__next = 0 + else: + self.__next = self.tag_v2.next + if self.__next == 0: + self._n_frames = frame + 1 + if len(self._frame_pos) == 1: + self.is_animated = self.__next != 0 + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + if XMP in self.tag_v2: + self.info["xmp"] = self.tag_v2[XMP] + elif "xmp" in self.info: + del self.info["xmp"] + self._reload_exif() + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self) -> int: + """Return the current frame number""" + return self.__frame + + def get_photoshop_blocks(self) -> dict[int, dict[str, bytes]]: + """ + Returns a dictionary of Photoshop "Image Resource Blocks". + The keys are the image resource ID. For more information, see + https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727 + + :returns: Photoshop "Image Resource Blocks" in a dictionary. + """ + blocks = {} + val = self.tag_v2.get(ExifTags.Base.ImageResources) + if val: + while val[:4] == b"8BIM": + id = i16(val[4:6]) + n = math.ceil((val[6] + 1) / 2) * 2 + size = i32(val[6 + n : 10 + n]) + data = val[10 + n : 10 + n + size] + blocks[id] = {"data": data} + + val = val[math.ceil((10 + n + size) / 2) * 2 :] + return blocks + + def load(self) -> Image.core.PixelAccess | None: + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_prepare(self) -> None: + if self._im is None: + Image._decompression_bomb_check(self._tile_size) + self.im = Image.core.new(self.mode, self._tile_size) + ImageFile.ImageFile.load_prepare(self) + + def load_end(self) -> None: + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if not self.is_animated: + self._close_exclusive_fp_after_loading = True + + # load IFD data from fp before it is closed + exif = self.getexif() + for key in TiffTags.TAGS_V2_GROUPS: + if key not in exif: + continue + exif.get_ifd(key) + + ImageOps.exif_transpose(self, in_place=True) + if ExifTags.Base.Orientation in self.tag_v2: + del self.tag_v2[ExifTags.Base.Orientation] + + def _load_libtiff(self) -> Image.core.PixelAccess | None: + """Overload method triggered when we detect a compressed tiff + Calls out to libtiff""" + + Image.Image.load(self) + + self.load_prepare() + + if not len(self.tile) == 1: + msg = "Not exactly one tile" + raise OSError(msg) + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = self.tile[0][3] + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + try: + fp = hasattr(self.fp, "fileno") and self.fp.fileno() + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except OSError: + # io.BytesIO have a fileno, but returns an OSError if + # it doesn't use a file descriptor. + fp = False + + if fp: + assert isinstance(args, tuple) + args_list = list(args) + args_list[2] = fp + args = tuple(args_list) + + decoder = Image._getdecoder(self.mode, "libtiff", args, self.decoderconfig) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + msg = "Couldn't set the image" + raise OSError(msg) from e + + close_self_fp = self._exclusive_fp and not self.is_animated + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an OSError if there's no underlying fp. Easier to + # deal with here by reordering. + logger.debug("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif fp: + # we've got a actual file on disk, pass in the fp. + logger.debug("have fileno, calling fileno version of the decoder.") + if not close_self_fp: + self.fp.seek(0) + # Save and restore the file position, because libtiff will move it + # outside of the Python runtime, and that will confuse + # io.BufferedReader and possible others. + # NOTE: This must use os.lseek(), and not fp.tell()/fp.seek(), + # because the buffer read head already may not equal the actual + # file position, and fp.seek() may just adjust it's internal + # pointer and not actually seek the OS file handle. + pos = os.lseek(fp, 0, os.SEEK_CUR) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + os.lseek(fp, pos, os.SEEK_SET) + else: + # we have something else. + logger.debug("don't have fileno or getvalue. just reading") + self.fp.seek(0) + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + + self.load_end() + + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise OSError(err) + + return Image.Image.load(self) + + def _setup(self) -> None: + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + msg = "Windows Media Photo files not yet supported" + raise OSError(msg) + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + # old style jpeg compression images most certainly are YCbCr + if self._compression == "tiff_jpeg": + photo = 6 + + fillorder = self.tag_v2.get(FILLORDER, 1) + + logger.debug("*** Summary ***") + logger.debug("- compression: %s", self._compression) + logger.debug("- photometric_interpretation: %s", photo) + logger.debug("- planar_configuration: %s", self._planar_configuration) + logger.debug("- fill_order: %s", fillorder) + logger.debug("- YCbCr subsampling: %s", self.tag_v2.get(YCBCRSUBSAMPLING)) + + # size + try: + xsize = self.tag_v2[IMAGEWIDTH] + ysize = self.tag_v2[IMAGELENGTH] + except KeyError as e: + msg = "Missing dimensions" + raise TypeError(msg) from e + if not isinstance(xsize, int) or not isinstance(ysize, int): + msg = "Invalid dimensions" + raise ValueError(msg) + self._tile_size = xsize, ysize + orientation = self.tag_v2.get(ExifTags.Base.Orientation) + if orientation in (5, 6, 7, 8): + self._size = ysize, xsize + else: + self._size = xsize, ysize + + logger.debug("- size: %s", self.size) + + sample_format = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sample_format) > 1 and max(sample_format) == min(sample_format) == 1: + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sample_format = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + bps_actual_count = len(bps_tuple) + samples_per_pixel = self.tag_v2.get( + SAMPLESPERPIXEL, + 3 if self._compression == "tiff_jpeg" and photo in (2, 6) else 1, + ) + + if samples_per_pixel > MAX_SAMPLESPERPIXEL: + # DOS check, samples_per_pixel can be a Long, and we extend the tuple below + logger.error( + "More samples per pixel than can be decoded: %s", samples_per_pixel + ) + msg = "Invalid value for samples per pixel" + raise SyntaxError(msg) + + if samples_per_pixel < bps_actual_count: + # If a file has more values in bps_tuple than expected, + # remove the excess. + bps_tuple = bps_tuple[:samples_per_pixel] + elif samples_per_pixel > bps_actual_count and bps_actual_count == 1: + # If a file has only one value in bps_tuple, when it should have more, + # presume it is the same number of bits for all of the samples. + bps_tuple = bps_tuple * samples_per_pixel + + if len(bps_tuple) != samples_per_pixel: + msg = "unknown data organization" + raise SyntaxError(msg) + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sample_format, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug("format key: %s", key) + try: + self._mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + msg = "unknown pixel mode" + raise SyntaxError(msg) from e + + logger.debug("- raw mode: %s", rawmode) + logger.debug("- pil mode: %s", self.mode) + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = (xres, yres) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = (xres * 2.54, yres * 2.54) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = (xres, yres) + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = layer = 0 + self.tile = [] + self.use_load_libtiff = READ_LIBTIFF or self._compression != "raw" + if self.use_load_libtiff: + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + # Replace fillorder with fillorder=1 + key = key[:3] + (1,) + key[4:] + logger.debug("format key: %s", key) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self._mode, rawmode = OPEN_INFO[key] + # YCbCr images with new jpeg compression with pixels in one plane + # unpacked straight into RGB values + if ( + photo == 6 + and self._compression == "jpeg" + and self._planar_configuration == 1 + ): + rawmode = "RGB" + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + elif rawmode == "I;16": + rawmode = "I;16N" + elif rawmode.endswith(";16B") or rawmode.endswith(";16L"): + rawmode = rawmode[:-1] + "N" + + # Offset in the tile tuple is 0, we go from 0,0 to + # w,h, and we only do this once -- eds + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(ImageFile._Tile("libtiff", (0, 0, xsize, ysize), 0, a)) + + elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: + # striped image + if STRIPOFFSETS in self.tag_v2: + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = xsize + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + tilewidth = self.tag_v2.get(TILEWIDTH) + h = self.tag_v2.get(TILELENGTH) + if not isinstance(tilewidth, int) or not isinstance(h, int): + msg = "Invalid tile dimensions" + raise ValueError(msg) + w = tilewidth + + for offset in offsets: + if x + w > xsize: + stride = w * sum(bps_tuple) / 8 # bytes per line + else: + stride = 0 + + tile_rawmode = rawmode + if self._planar_configuration == 2: + # each band on it's own layer + tile_rawmode = rawmode[layer] + # adjust stride width accordingly + stride /= bps_count + + args = (tile_rawmode, int(stride), 1) + self.tile.append( + ImageFile._Tile( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + args, + ) + ) + x = x + w + if x >= xsize: + x, y = 0, y + h + if y >= ysize: + x = y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + msg = "unknown data organization" + raise SyntaxError(msg) + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info["icc_profile"] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode in ["P", "PA"]: + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TIFF" + raise OSError(msg) from e + + encoderinfo = im.encoderinfo + encoderconfig = im.encoderconfig + + ifd = ImageFileDirectory_v2(prefix=prefix) + if encoderinfo.get("big_tiff"): + ifd._bigtiff = True + + try: + compression = encoderinfo["compression"] + except KeyError: + compression = im.info.get("compression") + if isinstance(compression, int): + # compression value may be from BMP. Ignore it + compression = None + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + elif compression == "tiff_deflate": + compression = "tiff_adobe_deflate" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = 1 + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + if "tiffinfo" in encoderinfo: + info = encoderinfo["tiffinfo"] + elif "exif" in encoderinfo: + info = encoderinfo["exif"] + if isinstance(info, bytes): + exif = Image.Exif() + exif.load(info) + info = exif + else: + info = {} + logger.debug("Tiffinfo Keys: %s", list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + if isinstance(info, Image.Exif) and key in TiffTags.TAGS_V2_GROUPS: + ifd[key] = info.get_ifd(key) + else: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except Exception: + pass # might not be an IFD. Might not have populated type + + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + + supplied_tags = {**legacy_ifd, **getattr(im, "tag_v2", {})} + for tag in ( + # IFD offset that may not be correct in the saved image + EXIFIFD, + # Determined by the image format and should not be copied from legacy_ifd. + SAMPLEFORMAT, + ): + if tag in supplied_tags: + del supplied_tags[tag] + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, "tag_v2"): + # preserve tags from original TIFF image file + for key in ( + RESOLUTION_UNIT, + X_RESOLUTION, + Y_RESOLUTION, + IPTC_NAA_CHUNK, + PHOTOSHOP_CHUNK, + XMP, + ): + if key in im.tag_v2: + if key == IPTC_NAA_CHUNK and im.tag_v2.tagtype[key] not in ( + TiffTags.BYTE, + TiffTags.UNDEFINED, + ): + del supplied_tags[key] + else: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + icc = encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + ifd[ICCPROFILE] = icc + + for key, name in [ + (IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright"), + ]: + if name in encoderinfo: + ifd[key] = encoderinfo[name] + + dpi = encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = dpi[0] + ifd[Y_RESOLUTION] = dpi[1] + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + if PHOTOMETRIC_INTERPRETATION not in ifd: + ifd[PHOTOMETRIC_INTERPRETATION] = photo + elif im.mode in ("1", "L") and ifd[PHOTOMETRIC_INTERPRETATION] == 0: + if im.mode == "1": + inverted_im = im.copy() + px = inverted_im.load() + if px is not None: + for y in range(inverted_im.height): + for x in range(inverted_im.width): + px[x, y] = 0 if px[x, y] == 255 else 255 + im = inverted_im + else: + im = ImageOps.invert(im) + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + colormap = [] + colors = len(lut) // 3 + for i in range(3): + colormap += [v * 256 for v in lut[colors * i : colors * (i + 1)]] + colormap += [0] * (256 - colors) + ifd[COLORMAP] = colormap + # data orientation + w, h = ifd[IMAGEWIDTH], ifd[IMAGELENGTH] + stride = len(bits) * ((w * bits[0] + 7) // 8) + if ROWSPERSTRIP not in ifd: + # aim for given strip size (64 KB by default) when using libtiff writer + if libtiff: + im_strip_size = encoderinfo.get("strip_size", STRIP_SIZE) + rows_per_strip = 1 if stride == 0 else min(im_strip_size // stride, h) + # JPEG encoder expects multiple of 8 rows + if compression == "jpeg": + rows_per_strip = min(((rows_per_strip + 7) // 8) * 8, h) + else: + rows_per_strip = h + if rows_per_strip == 0: + rows_per_strip = 1 + ifd[ROWSPERSTRIP] = rows_per_strip + strip_byte_counts = 1 if stride == 0 else stride * ifd[ROWSPERSTRIP] + strips_per_image = (h + ifd[ROWSPERSTRIP] - 1) // ifd[ROWSPERSTRIP] + if strip_byte_counts >= 2**16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = (strip_byte_counts,) * (strips_per_image - 1) + ( + stride * h - strip_byte_counts * (strips_per_image - 1), + ) + ifd[STRIPOFFSETS] = tuple( + range(0, strip_byte_counts * strips_per_image, strip_byte_counts) + ) # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if im.mode == "YCbCr": + for tag, default_value in { + YCBCRSUBSAMPLING: (1, 1), + REFERENCEBLACKWHITE: (0, 255, 128, 255, 128, 255), + }.items(): + ifd.setdefault(tag, default_value) + + blocklist = [TILEWIDTH, TILELENGTH, TILEOFFSETS, TILEBYTECOUNTS] + if libtiff: + if "quality" in encoderinfo: + quality = encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + msg = "Invalid quality setting" + raise ValueError(msg) + if compression != "jpeg": + msg = "quality setting only supported for 'jpeg' compression" + raise ValueError(msg) + ifd[JPEGQUALITY] = quality + + logger.debug("Saving using libtiff encoder") + logger.debug("Items: %s", sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = fp.fileno() + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # OSUBFILETYPE is deprecated. + # The other tags expect arrays with a certain length (fixed or depending on + # BITSPERSAMPLE, etc), passing arrays with a different length will result in + # segfaults. Block these tags until we add extra validation. + # SUBIFD may also cause a segfault. + blocklist += [ + OSUBFILETYPE, + REFERENCEBLACKWHITE, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + SUBIFD, + ] + + # bits per sample is a single short in the tiff directory, not a list. + atts: dict[int, Any] = {BITSPERSAMPLE: bits[0]} + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + for tag, value in itertools.chain(ifd.items(), supplied_tags.items()): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. + # Custom items are supported for int, float, unicode, string and byte + # values. Other types and tuples require a tagtype. + if tag not in TiffTags.LIBTIFF_CORE: + if not getattr(Image.core, "libtiff_support_custom_tags", False): + continue + + if tag in TiffTags.TAGS_V2_GROUPS: + types[tag] = TiffTags.LONG8 + elif tag in ifd.tagtype: + types[tag] = ifd.tagtype[tag] + elif not (isinstance(value, (int, float, str, bytes))): + continue + else: + type = TiffTags.lookup(tag).type + if type: + types[tag] = type + if tag not in atts and tag not in blocklist: + if isinstance(value, str): + atts[tag] = value.encode("ascii", "replace") + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + if SAMPLEFORMAT in atts and len(atts[SAMPLEFORMAT]) == 1: + atts[SAMPLEFORMAT] = atts[SAMPLEFORMAT][0] + + logger.debug("Converted items: %s", sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ("I;16B", "I;16"): + rawmode = "I;16N" + + # Pass tags as sorted list so that the tags are set in a fixed order. + # This is required by libtiff for some tags. For example, the JPEGQUALITY + # pseudo tag requires that the COMPRESS tag was already set. + tags = list(atts.items()) + tags.sort() + a = (rawmode, compression, _fp, filename, tags, types) + encoder = Image._getencoder(im.mode, "libtiff", a, encoderconfig) + encoder.setimage(im.im, (0, 0) + im.size) + while True: + errcode, data = encoder.encode(ImageFile.MAXBLOCK)[1:] + if not _fp: + fp.write(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} when writing image file" + raise OSError(msg) + + else: + for tag in blocklist: + del ifd[tag] + offset = ifd.save(fp) + + ImageFile._save( + im, + fp, + [ImageFile._Tile("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))], + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in encoderinfo: + # just to access o32 and o16 (using correct byte order) + setattr(im, "_debug_multipage", ifd) + + +class AppendingTiffWriter(io.BytesIO): + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + 4, # ifd + 2, # unicode + 4, # complex + 8, # long8 + ] + + Tags = { + 273, # StripOffsets + 288, # FreeOffsets + 324, # TileOffsets + 519, # JPEGQTables + 520, # JPEGDCTables + 521, # JPEGACTables + } + + def __init__(self, fn: StrOrBytesPath | IO[bytes], new: bool = False) -> None: + self.f: IO[bytes] + if is_path(fn): + self.name = fn + self.close_fp = True + try: + self.f = open(fn, "w+b" if new else "r+b") + except OSError: + self.f = open(fn, "w+b") + else: + self.f = cast(IO[bytes], fn) + self.close_fp = False + self.beginning = self.f.tell() + self.setup() + + def setup(self) -> None: + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset: int | None = None + self.offsetOfNewPage = 0 + + self.IIMM = iimm = self.f.read(4) + if not iimm: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if iimm == b"II\x2a\x00": + self.setEndian("<") + elif iimm == b"MM\x00\x2a": + self.setEndian(">") + else: + msg = "Invalid TIFF file header" + raise RuntimeError(msg) + + self.skipIFDs() + self.goToEnd() + + def finalize(self) -> None: + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + iimm = self.f.read(4) + if not iimm: + # Make it easy to finish a frame without committing to a new one. + return + + if iimm != self.IIMM: + msg = "IIMM of new page doesn't match IIMM of first page" + raise RuntimeError(msg) + + ifd_offset = self.readLong() + ifd_offset += self.offsetOfNewPage + assert self.whereToWriteNewIFDOffset is not None + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(ifd_offset) + self.f.seek(ifd_offset) + self.fixIFD() + + def newFrame(self) -> None: + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self) -> AppendingTiffWriter: + return self + + def __exit__(self, *args: object) -> None: + if self.close_fp: + self.close() + + def tell(self) -> int: + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset: int, whence: int = io.SEEK_SET) -> int: + """ + :param offset: Distance to seek. + :param whence: Whether the distance is relative to the start, + end or current position. + :returns: The resulting position, relative to the start. + """ + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self) -> None: + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + pad_bytes = 16 - pos % 16 + if 0 < pad_bytes < 16: + self.f.write(bytes(pad_bytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian: str) -> None: + self.endian = endian + self.longFmt = f"{self.endian}L" + self.shortFmt = f"{self.endian}H" + self.tagFormat = f"{self.endian}HHL" + + def skipIFDs(self) -> None: + while True: + ifd_offset = self.readLong() + if ifd_offset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(ifd_offset) + num_tags = self.readShort() + self.f.seek(num_tags * 12, os.SEEK_CUR) + + def write(self, data: Buffer, /) -> int: + return self.f.write(data) + + def _fmt(self, field_size: int) -> str: + try: + return {2: "H", 4: "L", 8: "Q"}[field_size] + except KeyError: + msg = "offset is not supported" + raise RuntimeError(msg) + + def _read(self, field_size: int) -> int: + (value,) = struct.unpack( + self.endian + self._fmt(field_size), self.f.read(field_size) + ) + return value + + def readShort(self) -> int: + return self._read(2) + + def readLong(self) -> int: + return self._read(4) + + @staticmethod + def _verify_bytes_written(bytes_written: int | None, expected: int) -> None: + if bytes_written is not None and bytes_written != expected: + msg = f"wrote only {bytes_written} bytes but wanted {expected}" + raise RuntimeError(msg) + + def rewriteLastShortToLong(self, value: int) -> None: + self.f.seek(-2, os.SEEK_CUR) + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + self._verify_bytes_written(bytes_written, 4) + + def _rewriteLast(self, value: int, field_size: int) -> None: + self.f.seek(-field_size, os.SEEK_CUR) + bytes_written = self.f.write( + struct.pack(self.endian + self._fmt(field_size), value) + ) + self._verify_bytes_written(bytes_written, field_size) + + def rewriteLastShort(self, value: int) -> None: + return self._rewriteLast(value, 2) + + def rewriteLastLong(self, value: int) -> None: + return self._rewriteLast(value, 4) + + def writeShort(self, value: int) -> None: + bytes_written = self.f.write(struct.pack(self.shortFmt, value)) + self._verify_bytes_written(bytes_written, 2) + + def writeLong(self, value: int) -> None: + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + self._verify_bytes_written(bytes_written, 4) + + def close(self) -> None: + self.finalize() + if self.close_fp: + self.f.close() + + def fixIFD(self) -> None: + num_tags = self.readShort() + + for i in range(num_tags): + tag, field_type, count = struct.unpack(self.tagFormat, self.f.read(8)) + + field_size = self.fieldSizes[field_type] + total_size = field_size * count + is_local = total_size <= 4 + if not is_local: + offset = self.readLong() + self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + cur_pos = self.f.tell() + + if is_local: + self._fixOffsets(count, field_size) + self.f.seek(cur_pos + 4) + else: + self.f.seek(offset) + self._fixOffsets(count, field_size) + self.f.seek(cur_pos) + + elif is_local: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def _fixOffsets(self, count: int, field_size: int) -> None: + for i in range(count): + offset = self._read(field_size) + offset += self.offsetOfNewPage + if field_size == 2 and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + msg = "not implemented" + raise RuntimeError(msg) # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(TiffTags.LONG) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + else: + self._rewriteLast(offset, field_size) + + def fixOffsets( + self, count: int, isShort: bool = False, isLong: bool = False + ) -> None: + if isShort: + field_size = 2 + elif isLong: + field_size = 4 + else: + field_size = 0 + return self._fixOffsets(count, field_size) + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im] + append_images: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/libs/PIL/TiffTags.py b/libs/PIL/TiffTags.py new file mode 100644 index 0000000..86adaa4 --- /dev/null +++ b/libs/PIL/TiffTags.py @@ -0,0 +1,562 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## +from __future__ import annotations + +from typing import NamedTuple + + +class _TagInfo(NamedTuple): + value: int | None + name: str + type: int | None + length: int | None + enum: dict[str, int] + + +class TagInfo(_TagInfo): + __slots__: list[str] = [] + + def __new__( + cls, + value: int | None = None, + name: str = "unknown", + type: int | None = None, + length: int | None = None, + enum: dict[str, int] | None = None, + ) -> TagInfo: + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value: str) -> int | str: + # Using get will call hash(value), which can be expensive + # for some types (e.g. Fraction). Since self.enum is rarely + # used, it's usually better to test it first. + return self.enum.get(value, value) if self.enum else value + + +def lookup(tag: int, group: int | None = None) -> TagInfo: + """ + :param tag: Integer tag number + :param group: Which :py:data:`~PIL.TiffTags.TAGS_V2_GROUPS` to look in + + .. versionadded:: 8.3.0 + + :returns: Taginfo namedtuple, From the ``TAGS_V2`` info if possible, + otherwise just populating the value and name from ``TAGS``. + If the tag is not recognized, "unknown" is returned for the name + + """ + + if group is not None: + info = TAGS_V2_GROUPS[group].get(tag) if group in TAGS_V2_GROUPS else None + else: + info = TAGS_V2.get(tag) + return info or TagInfo(tag, TAGS.get(tag, "unknown")) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length[, enum_values]) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +SIGNED_BYTE = 6 +UNDEFINED = 7 +SIGNED_SHORT = 8 +SIGNED_LONG = 9 +SIGNED_RATIONAL = 10 +FLOAT = 11 +DOUBLE = 12 +IFD = 13 +LONG8 = 16 + +_tags_v2: dict[int, tuple[str, int, int] | tuple[str, int, int, dict[str, int]]] = { + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ( + "Compression", + SHORT, + 1, + { + "Uncompressed": 1, + "CCITT 1d": 2, + "Group 3 Fax": 3, + "Group 4 Fax": 4, + "LZW": 5, + "JPEG": 6, + "PackBits": 32773, + }, + ), + 262: ( + "PhotometricInterpretation", + SHORT, + 1, + { + "WhiteIsZero": 0, + "BlackIsZero": 1, + "RGB": 2, + "RGB Palette": 3, + "Transparency Mask": 4, + "CMYK": 5, + "YCbCr": 6, + "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892, # Adobe DNG + }, + ), + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + 280: ("MinSampleValue", SHORT, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", RATIONAL, 6), + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + 330: ("SubIFDs", LONG, 0), + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + 347: ("JPEGTables", UNDEFINED, 1), + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", RATIONAL, 6), + 700: ("XMP", BYTE, 0), + 33432: ("Copyright", ASCII, 1), + 33723: ("IptcNaaInfo", UNDEFINED, 1), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + 36864: ("ExifVersion", UNDEFINED, 1), + 37724: ("ImageSourceData", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1), # see Issue #2006 +} +_tags_v2_groups = { + # ExifIFD + 34665: { + 36864: ("ExifVersion", UNDEFINED, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + }, + # GPSInfoIFD + 34853: { + 0: ("GPSVersionID", BYTE, 4), + 1: ("GPSLatitudeRef", ASCII, 2), + 2: ("GPSLatitude", RATIONAL, 3), + 3: ("GPSLongitudeRef", ASCII, 2), + 4: ("GPSLongitude", RATIONAL, 3), + 5: ("GPSAltitudeRef", BYTE, 1), + 6: ("GPSAltitude", RATIONAL, 1), + 7: ("GPSTimeStamp", RATIONAL, 3), + 8: ("GPSSatellites", ASCII, 0), + 9: ("GPSStatus", ASCII, 2), + 10: ("GPSMeasureMode", ASCII, 2), + 11: ("GPSDOP", RATIONAL, 1), + 12: ("GPSSpeedRef", ASCII, 2), + 13: ("GPSSpeed", RATIONAL, 1), + 14: ("GPSTrackRef", ASCII, 2), + 15: ("GPSTrack", RATIONAL, 1), + 16: ("GPSImgDirectionRef", ASCII, 2), + 17: ("GPSImgDirection", RATIONAL, 1), + 18: ("GPSMapDatum", ASCII, 0), + 19: ("GPSDestLatitudeRef", ASCII, 2), + 20: ("GPSDestLatitude", RATIONAL, 3), + 21: ("GPSDestLongitudeRef", ASCII, 2), + 22: ("GPSDestLongitude", RATIONAL, 3), + 23: ("GPSDestBearingRef", ASCII, 2), + 24: ("GPSDestBearing", RATIONAL, 1), + 25: ("GPSDestDistanceRef", ASCII, 2), + 26: ("GPSDestDistance", RATIONAL, 1), + 27: ("GPSProcessingMethod", UNDEFINED, 0), + 28: ("GPSAreaInformation", UNDEFINED, 0), + 29: ("GPSDateStamp", ASCII, 11), + 30: ("GPSDifferential", SHORT, 1), + }, + # InteroperabilityIFD + 40965: {1: ("InteropIndex", ASCII, 1), 2: ("InteropVersion", UNDEFINED, 1)}, +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS: dict[int | tuple[int, int], str] = { + 347: "JPEGTables", + 700: "XMP", + # Additional Exif Info + 32932: "Wang Annotation", + 33434: "ExposureTime", + 33437: "FNumber", + 33445: "MD FileTag", + 33446: "MD ScalePixel", + 33447: "MD ColorTable", + 33448: "MD LabName", + 33449: "MD SampleInfo", + 33450: "MD PrepDate", + 33451: "MD PrepTime", + 33452: "MD FileUnits", + 33550: "ModelPixelScaleTag", + 33723: "IptcNaaInfo", + 33918: "INGR Packet Data Tag", + 33919: "INGR Flag Registers", + 33920: "IrasB Transformation Matrix", + 33922: "ModelTiepointTag", + 34264: "ModelTransformationTag", + 34377: "PhotoshopInfo", + 34735: "GeoKeyDirectoryTag", + 34736: "GeoDoubleParamsTag", + 34737: "GeoAsciiParamsTag", + 34850: "ExposureProgram", + 34852: "SpectralSensitivity", + 34855: "ISOSpeedRatings", + 34856: "OECF", + 34864: "SensitivityType", + 34865: "StandardOutputSensitivity", + 34866: "RecommendedExposureIndex", + 34867: "ISOSpeed", + 34868: "ISOSpeedLatitudeyyy", + 34869: "ISOSpeedLatitudezzz", + 34908: "HylaFAX FaxRecvParams", + 34909: "HylaFAX FaxSubAddress", + 34910: "HylaFAX FaxRecvTime", + 36864: "ExifVersion", + 36867: "DateTimeOriginal", + 36868: "DateTimeDigitized", + 37121: "ComponentsConfiguration", + 37122: "CompressedBitsPerPixel", + 37724: "ImageSourceData", + 37377: "ShutterSpeedValue", + 37378: "ApertureValue", + 37379: "BrightnessValue", + 37380: "ExposureBiasValue", + 37381: "MaxApertureValue", + 37382: "SubjectDistance", + 37383: "MeteringMode", + 37384: "LightSource", + 37385: "Flash", + 37386: "FocalLength", + 37396: "SubjectArea", + 37500: "MakerNote", + 37510: "UserComment", + 37520: "SubSec", + 37521: "SubSecTimeOriginal", + 37522: "SubsecTimeDigitized", + 40960: "FlashPixVersion", + 40961: "ColorSpace", + 40962: "PixelXDimension", + 40963: "PixelYDimension", + 40964: "RelatedSoundFile", + 40965: "InteroperabilityIFD", + 41483: "FlashEnergy", + 41484: "SpatialFrequencyResponse", + 41486: "FocalPlaneXResolution", + 41487: "FocalPlaneYResolution", + 41488: "FocalPlaneResolutionUnit", + 41492: "SubjectLocation", + 41493: "ExposureIndex", + 41495: "SensingMethod", + 41728: "FileSource", + 41729: "SceneType", + 41730: "CFAPattern", + 41985: "CustomRendered", + 41986: "ExposureMode", + 41987: "WhiteBalance", + 41988: "DigitalZoomRatio", + 41989: "FocalLengthIn35mmFilm", + 41990: "SceneCaptureType", + 41991: "GainControl", + 41992: "Contrast", + 41993: "Saturation", + 41994: "Sharpness", + 41995: "DeviceSettingDescription", + 41996: "SubjectDistanceRange", + 42016: "ImageUniqueID", + 42032: "CameraOwnerName", + 42033: "BodySerialNumber", + 42034: "LensSpecification", + 42035: "LensMake", + 42036: "LensModel", + 42037: "LensSerialNumber", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 42240: "Gamma", + 50215: "Oce Scanjob Description", + 50216: "Oce Application Selector", + 50217: "Oce Identification Number", + 50218: "Oce ImageLogic Characteristics", + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50784: "Alias Layer Metadata", +} + +TAGS_V2: dict[int, TagInfo] = {} +TAGS_V2_GROUPS: dict[int, dict[int, TagInfo]] = {} + + +def _populate() -> None: + for k, v in _tags_v2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + for group, tags in _tags_v2_groups.items(): + TAGS_V2_GROUPS[group] = {k: TagInfo(k, *v) for k, v in tags.items()} + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES: dict[int, str] = {} + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# Following pseudo-tags are also handled by default in libtiff: +# TIFFTAG_JPEGQUALITY 65537 + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +# This list also exists in encode.c +LIBTIFF_CORE = { + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 266, + 274, + 277, + 278, + 280, + 281, + 340, + 341, + 282, + 283, + 284, + 286, + 287, + 296, + 297, + 321, + 320, + 338, + 32995, + 322, + 323, + 32998, + 32996, + 339, + 32997, + 330, + 531, + 530, + 301, + 532, + 333, + # as above + 269, # this has been in our tests forever, and works + 65537, +} + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for writing tiled images with libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/libs/PIL/WalImageFile.py b/libs/PIL/WalImageFile.py new file mode 100644 index 0000000..87e3287 --- /dev/null +++ b/libs/PIL/WalImageFile.py @@ -0,0 +1,127 @@ +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +This reader is based on the specification available from: +https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +and has been tested with a few sample files found using google. + +.. note:: + This format cannot be automatically recognized, so the reader + is not registered for use with :py:func:`PIL.Image.open()`. + To open a WAL file, use the :py:func:`PIL.WalImageFile.open()` function instead. +""" +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i32le as i32 +from ._typing import StrOrBytesPath + + +class WalImageFile(ImageFile.ImageFile): + format = "WAL" + format_description = "Quake2 Texture" + + def _open(self) -> None: + self._mode = "P" + + # read header fields + header = self.fp.read(32 + 24 + 32 + 12) + self._size = i32(header, 32), i32(header, 36) + Image._decompression_bomb_check(self.size) + + # load pixel data + offset = i32(header, 40) + self.fp.seek(offset) + + # strings are null-terminated + self.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + self.info["next_name"] = next_name + + def load(self) -> Image.core.PixelAccess | None: + if self._im is None: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self.size[0] * self.size[1])) + self.putpalette(quake2palette) + return Image.Image.load(self) + + +def open(filename: StrOrBytesPath | IO[bytes]) -> WalImageFile: + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the :py:func:`PIL.Image.Image.putpalette()` method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + return WalImageFile(filename) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/libs/PIL/WebPImagePlugin.py b/libs/PIL/WebPImagePlugin.py new file mode 100644 index 0000000..c7f8555 --- /dev/null +++ b/libs/PIL/WebPImagePlugin.py @@ -0,0 +1,322 @@ +from __future__ import annotations + +from io import BytesIO +from typing import IO, Any + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix: bytes) -> bool | str: + is_riff_file_format = prefix[:4] == b"RIFF" + is_webp_file = prefix[8:12] == b"WEBP" + is_valid_vp8_mode = prefix[12:16] in _VP8_MODES_BY_IDENTIFIER + + if is_riff_file_format and is_webp_file and is_valid_vp8_mode: + if not SUPPORTED: + return ( + "image file could not be identified because WEBP support not installed" + ) + return True + return False + + +class WebPImageFile(ImageFile.ImageFile): + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self) -> None: + # Use the newer AnimDecoder API to parse the (possibly) animated file, + # and access muxed chunks like ICC/EXIF/XMP. + self._decoder = _webp.WebPAnimDecoder(self.fp.read()) + + # Get info from decoder + width, height, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self._size = width, height + self.info["loop"] = loop_count + bg_a, bg_r, bg_g, bg_b = ( + (bgcolor >> 24) & 0xFF, + (bgcolor >> 16) & 0xFF, + (bgcolor >> 8) & 0xFF, + bgcolor & 0xFF, + ) + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self.n_frames = frame_count + self.is_animated = self.n_frames > 1 + self._mode = "RGB" if mode == "RGBX" else mode + self.rawmode = mode + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + + def _getexif(self) -> dict[int, Any] | None: + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def seek(self, frame: int) -> None: + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset: bool = True) -> None: + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self) -> tuple[bytes, int, int]: + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + msg = "failed to decode next frame in WebP file" + raise EOFError(msg) + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame: int) -> None: + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self) -> Image.core.PixelAccess | None: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def load_seek(self, pos: int) -> None: + pass + + def tell(self) -> int: + return self.__logical_frame + + +def _convert_frame(im: Image.Image) -> Image.Image: + # Make sure image mode is supported + if im.mode not in ("RGBX", "RGBA", "RGB"): + im = im.convert("RGBA" if im.has_transparency_data else "RGB") + return im + + +def _save_all(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + if total == 1: + _save(im, fp, filename) + return + + background: int | tuple[int, ...] = (0, 0, 0, 0) + if "background" in encoderinfo: + background = encoderinfo["background"] + elif "background" in im.info: + background = im.info["background"] + if isinstance(background, int): + # GifImagePlugin stores a global color table index in + # info["background"]. So it must be converted to an RGBA value + palette = im.getpalette() + if palette: + r, g, b = palette[background * 3 : (background + 1) * 3] + background = (r, g, b, 255) + else: + background = (background, background, background, 255) + + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if ( + not isinstance(background, (list, tuple)) + or len(background) != 4 + or not all(0 <= v < 256 for v in background) + ): + msg = f"Background color is not an RGBA tuple clamped to (0-255): {background}" + raise OSError(msg) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size[0], + im.size[1], + background, + loop, + minimize_size, + kmin, + kmax, + allow_mixed, + verbose, + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im] + append_images: + # Get # of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + + frame = _convert_frame(ims) + + # Append the frame to the animation encoder + enc.add( + frame.getim(), + round(timestamp), + lossless, + quality, + alpha_quality, + method, + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add(None, round(timestamp), lossless, quality, alpha_quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + alpha_quality = im.encoderinfo.get("alpha_quality", 100) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 4) + exact = 1 if im.encoderinfo.get("exact") else 0 + + im = _convert_frame(im) + + data = _webp.WebPEncode( + im.getim(), + lossless, + float(quality), + float(alpha_quality), + icc_profile, + method, + exact, + exif, + xmp, + ) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/libs/PIL/WmfImagePlugin.py b/libs/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..48e9823 --- /dev/null +++ b/libs/PIL/WmfImagePlugin.py @@ -0,0 +1,184 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html +from __future__ import annotations + +from typing import IO + +from . import Image, ImageFile +from ._binary import i16le as word +from ._binary import si16le as short +from ._binary import si32le as _long + +_handler = None + + +def register_handler(handler: ImageFile.StubHandler | None) -> None: + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler(ImageFile.StubHandler): + def open(self, im: ImageFile.StubImageFile) -> None: + im._mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im: ImageFile.StubImageFile) -> Image.Image: + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", + im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", + "BGR", + (im.size[0] * 3 + 3) & -4, + -1, + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix: bytes) -> bool: + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + format = "WMF" + format_description = "Windows Metafile" + + def _open(self) -> None: + self._inch = None + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + # placeable windows metafile + + # get units per inch + self._inch = word(s, 14) + if self._inch == 0: + msg = "Invalid inch" + raise ValueError(msg) + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + self.info["dpi"] = 72 + size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + msg = "Unsupported WMF file format" + raise SyntaxError(msg) + + elif s[:4] == b"\x01\x00\x00\x00" and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = 2540.0 * (x1 - x0) / (frame[2] - frame[0]) + ydpi = 2540.0 * (y1 - y0) / (frame[3] - frame[1]) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + msg = "Unsupported file format" + raise SyntaxError(msg) + + self._mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self) -> ImageFile.StubHandler | None: + return _handler + + def load(self, dpi: int | None = None) -> Image.core.PixelAccess | None: + if dpi is not None and self._inch is not None: + self.info["dpi"] = dpi + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + return super().load() + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if _handler is None or not hasattr(_handler, "save"): + msg = "WMF save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/libs/PIL/XVThumbImagePlugin.py b/libs/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..7533335 --- /dev/null +++ b/libs/PIL/XVThumbImagePlugin.py @@ -0,0 +1,83 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# +from __future__ import annotations + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + ( + o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3) + ) + + +def _accept(prefix: bytes) -> bool: + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self) -> None: + # check magic + assert self.fp is not None + + if not _accept(self.fp.read(6)): + msg = "not an XV thumbnail file" + raise SyntaxError(msg) + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + msg = "Unexpected EOF reading XV thumbnail file" + raise SyntaxError(msg) + if s[0] != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self._mode = "P" + self._size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [ + ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), self.mode) + ] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/libs/PIL/XbmImagePlugin.py b/libs/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..943a044 --- /dev/null +++ b/libs/PIL/XbmImagePlugin.py @@ -0,0 +1,98 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re +from typing import IO + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + rb"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + rb"[\000-\377]*_bits\[]" +) + + +def _accept(prefix: bytes) -> bool: + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self) -> None: + assert self.fp is not None + + m = xbm_head.match(self.fp.read(512)) + + if not m: + msg = "not a XBM file" + raise SyntaxError(msg) + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = (int(m.group("xhot")), int(m.group("yhot"))) + + self._mode = "1" + self._size = xsize, ysize + + self.tile = [ImageFile._Tile("xbm", (0, 0) + self.size, m.end())] + + +def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: + if im.mode != "1": + msg = f"cannot write mode {im.mode} as XBM" + raise OSError(msg) + + fp.write(f"#define im_width {im.size[0]}\n".encode("ascii")) + fp.write(f"#define im_height {im.size[1]}\n".encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(f"#define im_x_hot {hotspot[0]}\n".encode("ascii")) + fp.write(f"#define im_y_hot {hotspot[1]}\n".encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [ImageFile._Tile("xbm", (0, 0) + im.size)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/libs/PIL/XpmImagePlugin.py b/libs/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..b985aa5 --- /dev/null +++ b/libs/PIL/XpmImagePlugin.py @@ -0,0 +1,125 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# +from __future__ import annotations + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix: bytes) -> bool: + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self) -> None: + if not _accept(self.fp.read(9)): + msg = "not an XPM file" + raise SyntaxError(msg) + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + msg = "broken XPM file" + raise SyntaxError(msg) + m = xpm_head.match(s) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + msg = "cannot read this XPM file" + raise ValueError(msg) + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for _ in range(pal): + s = self.fp.readline() + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] in b"\r\n": + s = s[:-1] + + c = s[1] + s = s[2:-2].split() + + for i in range(0, len(s), 2): + if s[i] == b"c": + # process colour key + rgb = s[i + 1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb[:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = ( + o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255) + ) + else: + # unknown colour + msg = "cannot read this XPM file" + raise ValueError(msg) + break + + else: + # missing colour key + msg = "cannot read this XPM file" + raise ValueError(msg) + + self._mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), "P")] + + def load_read(self, read_bytes: int) -> bytes: + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [self.fp.readline()[1 : xsize + 1].ljust(xsize) for i in range(ysize)] + + return b"".join(s) + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/libs/PIL/__init__.py b/libs/PIL/__init__.py new file mode 100644 index 0000000..09546fe --- /dev/null +++ b/libs/PIL/__init__.py @@ -0,0 +1,86 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Jeffrey A. Clark and contributors. + https://github.com/python-pillow/Pillow/ + +Pillow is forked from PIL 1.1.7. + +PIL is the Python Imaging Library by Fredrik Lundh and contributors. +Copyright (c) 1999 by Secret Labs AB. + +Use PIL.__version__ for this Pillow version. + +;-) +""" + +from __future__ import annotations + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +__version__ = _version.__version__ +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsImagePlugin", + "FliImagePlugin", + "FpxImagePlugin", + "FtexImagePlugin", + "GbrImagePlugin", + "GifImagePlugin", + "GribStubImagePlugin", + "Hdf5StubImagePlugin", + "IcnsImagePlugin", + "IcoImagePlugin", + "ImImagePlugin", + "ImtImagePlugin", + "IptcImagePlugin", + "JpegImagePlugin", + "Jpeg2KImagePlugin", + "McIdasImagePlugin", + "MicImagePlugin", + "MpegImagePlugin", + "MpoImagePlugin", + "MspImagePlugin", + "PalmImagePlugin", + "PcdImagePlugin", + "PcxImagePlugin", + "PdfImagePlugin", + "PixarImagePlugin", + "PngImagePlugin", + "PpmImagePlugin", + "PsdImagePlugin", + "QoiImagePlugin", + "SgiImagePlugin", + "SpiderImagePlugin", + "SunImagePlugin", + "TgaImagePlugin", + "TiffImagePlugin", + "WebPImagePlugin", + "WmfImagePlugin", + "XbmImagePlugin", + "XpmImagePlugin", + "XVThumbImagePlugin", +] + + +class UnidentifiedImageError(OSError): + """ + Raised in :py:meth:`PIL.Image.open` if an image cannot be opened and identified. + + If a PNG image raises this error, setting :data:`.ImageFile.LOAD_TRUNCATED_IMAGES` + to true may allow the image to be opened after all. The setting will ignore missing + data and checksum failures. + """ + + pass diff --git a/libs/PIL/__main__.py b/libs/PIL/__main__.py new file mode 100644 index 0000000..043156e --- /dev/null +++ b/libs/PIL/__main__.py @@ -0,0 +1,7 @@ +from __future__ import annotations + +import sys + +from .features import pilinfo + +pilinfo(supported_formats="--report" not in sys.argv) diff --git a/libs/PIL/_binary.py b/libs/PIL/_binary.py new file mode 100644 index 0000000..4594ccc --- /dev/null +++ b/libs/PIL/_binary.py @@ -0,0 +1,112 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + + +"""Binary input/output support routines.""" +from __future__ import annotations + +from struct import pack, unpack_from + + +def i8(c: bytes) -> int: + return c[0] + + +def o8(i: int) -> bytes: + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c: bytes, o: int = 0) -> int: + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 2-bytes (16 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">h", c, o)[0] + + +def i32le(c: bytes, o: int = 0) -> int: + """ + Converts a 4-bytes (32 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(" int: + """ + Converts a 4-bytes (32 bits) string to a signed integer, big endian. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from(">i", c, o)[0] + + +def i16be(c: bytes, o: int = 0) -> int: + return unpack_from(">H", c, o)[0] + + +def i32be(c: bytes, o: int = 0) -> int: + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i: int) -> bytes: + return pack(" bytes: + return pack(" bytes: + return pack(">H", i) + + +def o32be(i: int) -> bytes: + return pack(">I", i) diff --git a/libs/PIL/_deprecate.py b/libs/PIL/_deprecate.py new file mode 100644 index 0000000..83952b3 --- /dev/null +++ b/libs/PIL/_deprecate.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +import warnings + +from . import __version__ + + +def deprecate( + deprecated: str, + when: int | None, + replacement: str | None = None, + *, + action: str | None = None, + plural: bool = False, +) -> None: + """ + Deprecations helper. + + :param deprecated: Name of thing to be deprecated. + :param when: Pillow major version to be removed in. + :param replacement: Name of replacement. + :param action: Instead of "replacement", give a custom call to action + e.g. "Upgrade to new thing". + :param plural: if the deprecated thing is plural, needing "are" instead of "is". + + Usually of the form: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + Use [replacement] instead." + + You can leave out the replacement sentence: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd)" + + Or with another call to action: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + [action]." + """ + + is_ = "are" if plural else "is" + + if when is None: + removed = "a future version" + elif when <= int(__version__.split(".")[0]): + msg = f"{deprecated} {is_} deprecated and should be removed." + raise RuntimeError(msg) + elif when == 12: + removed = "Pillow 12 (2025-10-15)" + else: + msg = f"Unknown removal version: {when}. Update {__name__}?" + raise ValueError(msg) + + if replacement and action: + msg = "Use only one of 'replacement' and 'action'" + raise ValueError(msg) + + if replacement: + action = f". Use {replacement} instead." + elif action: + action = f". {action.rstrip('.')}." + else: + action = "" + + warnings.warn( + f"{deprecated} {is_} deprecated and will be removed in {removed}{action}", + DeprecationWarning, + stacklevel=3, + ) diff --git a/libs/PIL/_imaging.cp311-win_amd64.pyd b/libs/PIL/_imaging.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..413a368b466c1883eb0dd298831c9410ed8e38d5 GIT binary patch literal 2458112 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

&{ zO2yj-6bYBcmGbR`WJ`#uYI~u2&D~vPNM2b8a%0etQ^~nu*NI zE!JZ`wHhGpS*Hk6yK#gbg$PmfsM3IoC7;kL`L&XKW$8~P&(*n0)~BjZ?z;IpUVxRO z1y?y3Rq&%wZR>RAyThL;GV*gt{k|qHTcxfgHSI-uWmzF1>D%F_h+k%Yjj&Qu{|T2p z9(3j+9Jr3;-Z(v~mW$T(s9GEjLXT3gQkSOE?ZPb&3wa!G*kLM%1p01^l?;4mt&ld# zkbxI(+g;%kNR$6|yp%`P;&Lcn!pG1H6j!NvPIX6b=(1Gn9(>&9WvNn@HYDjmNYX9# znm1)VB`$MC*GOX)zE}0n@T0&^%R^bhEX~(|Vf8b|U+3#)1`0A!nL}QWXNx^XyLq$UHkzY5Y3tAw)2| zPkofPK28krUnkSg1-S`%ZscML>zegO?&?ZoGU#REdLwgqrVyX)2W3l;r~NSYQdSqK z@XX`ED*s;4zS)Jls{)1Z&G52xWu1-D_W=j_I<*U5W^-j_tbBMT8@U?~sM4*mQBlSL zN{MBH7%qZ5-X;4u9-BN?*!%PqiR3YIgz$w3A5^=>$>Yt|TO$Q&pG9zQf@KHwv~V}R zT9Lw_`97{sSo3}bI&Y5_Ug1f1{erOSQS7Vn7`}AZ60i1q26x`*bl08uNu03#mT!4( zCTt6jte-_!=$$xL8;(mKkqv52*ohsaPAf8zpBaDISk)u&ZTIS~PWjN(fQy$)f0YF~ zTip)Y#Su4%?LQW!srJV0XM6NYsWe?=+esP5-z#H5t6*mubz)ylRIZJ>zwxE^*APjn zyPZmqMNS(Y>iG=;-0#H|k3LRy%gHj2-e>y?Tl6uM0Eli70T9*{zfuCA zkzit9Xi(KtLck1XKQ!06LhXmv@8RuDc|H1}SRF)dmu&`pg|j2QamW{u?Pp7WQ1x=F z0@WVbTQ}-I1f@v{QS5>1d`*zzveE2?(j`yekPawP+n*j>B{5n??SOh>ol>xjfgiM` zOuBQB#6u5nwYm@#>l}}CPLT(BQjN3*ttu8nD%b~|Y<~ZPvRiIVfCb&~5BRojH36tXca3D?VMRH5^{ds$yt;sqz6}~ zQUYtlbAsApJC4>xxY4XUThxXTA}&^?R2_Z_AtFxXs=rn#Qgw=N*b{Wdk#x!r(x`o$ zDs8jwqI{mfFxOlRMz&-`*SJ{?KVYJPEmx8>u}uGcR+Zriyq%fopjnxWJ%+P{tqR{m zFa%?;Pq>aR2ZuRh4tYa4x}FR&!Ldo|FTNkyI5yqYkFd1M(_H}``EIuTF2KEi0mpe*UH2bM6c-e8a^~3 zQRhv;#L6Dch}@!R^@Q~pg0T%h0$Da6VjPY{m=s|}#K$8<`Y0jN<6c6Yk8-H6!yVZY2T?sm)1wIhUXBAewLJiW+9*pTN4M$A3cFZO3wBY;2-~c;ahU7E zcQac>g`$Q++U?&&h%8gH6>71g|5Hc5n&?7X$XGj6zYooR=x~t}Z?!s6q`;*Lqco>R z*A%{6^-)>SFTE(H%5B&;0!B$M!YAS>;R=8(?X!j0KJ!wAO^zY&6l^lt6+XzPgHA-d zLCu3cuF5OX4QJ%Hhfj*fp@Tj?-F3xP`YqqTaK4>4e&XNu*+zJG{G%Jo%!R5JrwI`Hy#oxGP$d8GEKTJT%DJBMxQ$85!LF?@ZKmRzb8A|(`?fjc|F1MWz zYv%^r8Pv|VZ08-?new>?b+dNn*v?5f$#i)_rv2=o`~Ivl9d0`pXy?_obB1=#wVgL; z=OearoOW)tog=jKush*3RLcD0d?ub^=4iCB z?4boRTtl8@tY~GpS16OACBd$h?vx$XeU!eIv5f5~Z!$_+P5un=_wS3Oy@+^*e%dZF zptt`esyiaFvk|V!IacJKy&qi$rlHG+{MC_E_nMR-sU9+arlF;EfCquMQc-Mw1Nw|1 zf}hwRWi6Q>S*0RzI0$)liQ1>;wp3ADJX#2)sNyZJp;j-5sv6gXVRm5FJtc89$X0u> z_SW-MlG2z3zz1BvDi)x>hZsKK8T>J!^0-p5KwCwW9m18p7v zrvf+@yj2JH6YPVv0gCDgEfAn$bf5vf^=M-cMaf_ouG2PXP7X6xc#nt-z z6TZd&WZZLYKZ(=!d7iM>d8AVn{h+TFV-U8h4=JbKe4#U|{^HONsXeDE`k}5fZ*R(L z|4V(y0&6^48d@LHQ1nBBKBSx)H#noI)F7Y35eTOlbzIP()gaX^t+pDZ;9I#&eJ&c7 z7h-bQrXZ9=(@}!#g8y=1euQo)k{uu<)wU8O{Q(6rMQp4bF^x zAlV2kF+UabA7NlS1npL95r?Ie)+2puG(1UIT6rt)m;SH7XVZF1Gp;&*(wXy7!BnLw1Ff?6e?q&*J{vLwE;Z>cU%2T&Yq&* zsLCljjB!207_c20SjRTNzNKW2{3KpfrSv&S0qq*9m1;;a6%o)V#S{(4807UD@>9f0 zY=K8{$J^2cFf+;7xSrsA!Y7q8;WneombeVn=c{WZ?oPSYjmE-sv$?iw&9-4!I< zdA8#>yN#a{Chr}D_2eBx?tJ`g{Jxj`!S9nEb@2P5YZLH$WiYOA&b}iG=lc@Squymq zQTSDFrk8R&)YrEg9(1(-}bo@zbYQh zuZ?TXuQ~FTu#&gDrts~cbmRh79YV zFk}%$v~RJVUTO&@y1fe;$Em|IQ(O+W7 zdW+Q$2f`qcuZS?HhH}~+WDp|4pz(2zZHx8YpH=j6M3*i*1|xi$E|QSHFP%p%MF7+j z0Z=mR+Iv+WmIW^culFN?hO5i)Ukyhri4#FVh_P$W=LtFsAGO)FKH;z0a%;?l#V1~u z?%Kr2Z;w~|lCX;ilV|Vs`uz|4Eq>?S5D$0aIq!LdweSdD7x_Bob)oGFK&hN{!Mb>Y zZ1+Bw=ZuwJeS31j}=R_SZ)-B@IedhOXMbDrGsobiRwut@)k%vz2sd^I*+kZ32+k=z8jg0 z#8qWgeZ}H<{MF~sSZZ@1G4}hBb7Qg3Yz6;*;(M+?F2Q?ts~&t*kk^nLttJIktaeOf zqam=iK&WCw;@;rE994j~oGpf-gHU7MtoB6mk(sCsjQ-x0pg;M|2S3E>cRu<11{coi zCi-a*Uxml2J`{kFkX?e?DS=v*)diwL_6*4hR|Cdba-CuXD&cdcwLeeJy(!&wIbnD6 z{>J{EV82)L?n_uAeG`|L%A9CdUV1Y^A?Cz_2V-;M`&$*iv+!%)To#|m@BEMQQsGW+ zY8I)pT7XjkE;|q+U02iNfV}`aVp0x$-HVqNm`>xXJ%Q`ohj={wFMyfE`NdlHFY{B>Jk`WWRzU|Qw3g{7X9bunS-wOUyE|E`4e3|WyA z_gjvakJ^<#9TO$Cd{hja#cNUho)Y7NW^z-ywThVnr#9ACe1Z{ny~{hTcICY zY#aVWEqWjlm1s9E*$R&*+|i$e8vV3RhyaMj^9jSNM85x}SUQ<7r&p6qn6#mkV*acd znjC3%q_icP9I~W4Uy%LBun%C_NI28idHY$`l*i*QA)@klwXEvqU z0)^ETTH-9--EO@K5Bz}sJ3orrT+M^4qe+4Qctm7^EE#H^itiLZ!@Du;G z&n&`U;W-{3{v<#0w8Dpjs<5zP^CRUm0B$}|@8PZXe}67NvQzUT8+&>zO zhb-}e4yP-o155~KvRUIq7!pz1*En$te2G=~TS0}bHh;5h@-LGhO*p(QGb_$`Tnq@! zc-)|B07sR`csxREVLX1_4&!mPVm#vb=>JRpBky6G|M(wRu6W(5*Gau*w^OehbiEc+ zAMhX8OVrSA-y=#$^M%QB^v`UsqD=7=;~Xwd@sf;uFes}jF4Jc zxV71`)1A_`X3JtN5ji`NrFs81f=r!l_AS;n+@RA(K$&egtLF$2Y7wuJ08s8?6Gd$-3ncWirj;&XRp{ zhs0K7bklcWt0$Dzv{kJ5Y_j@^ndwJJZZ6R|ZZ3QSo8(66`k*Nu#L>6Nd$Qk4i=>2g>rf$+~!etia7H zP9aBee|oMAfy01b`?83#Ul3+bm1KD3;I7rO5NB7)Y${w=^@SZVa-rM^aR#^5s0)v| zub53dR2b^ytWWcZUP*3qEm0#~?f44ZNsB87pTn^%$u|M!XR7Mv>y$}~Q$cYA(#1q` zo1aTcBOnI2%R;kyl@^?3)W3qG#0)HEag$v+EXNzmF0O|`5RVJD-@AAe?Js7)b zdB8TeTYvvRB8Yh?=XRg*_h~!r$}Wmb1%w2i#JR!-pU%U4-Fj<~w0`x=st=82pR2wJ z*HS=yv70|y?B-)q$+nxnP3-1-0-vE*fr(asdH5A#I(_qkG^cdS1$MWTn7inajChZ5 zCNTBr;JoU2c4vHBVs5iLW7kTRTKan{t;zi|(y?N;uJd{d?CwQpY-e6FQvN}>>XO>; zKCa;$^mL<+mn*bD3~UCDTt4e2U+C1NMu!1S`MO>Ru0;Whw>M=|^aCt!J?ITxLDhPG z=P{E9=lL6=)a)~AhJbQkcqVYTAIKf}un(86r_lldvn1dtF`nEWbbBJ_)qeL08FJ>9 zjyw5E)l?@(dNVn^p{p$M{Q8f2OkYpyNY__J*FlkI>pAZ(+-EH43m%qxl{y&pODVf^ zJ&{o_a$C{g*4$efvkA7@rw2Aq;rRs~w1hgxw zuk>J6E6HDGCtGn6BTuRF9v{D-#Lv<3#pc+_;JM1+Gt$Nk;7uF!YzQoXYby36i$T&Z zS3Ri);K-fMFz>RFVV=1V#8^eO@(&??S;?Gry_`(Gl@TzH0hO3Y=8@pdnbx6@UcT#DDpeI#W%Cb((|{&8BiU`P4}?>y%Nb79qXXY| zt{$Q8SnlZ!%*$~3yT~y1qa-vh)5TTeboJ89$cBEFTq=ZsuinICz>AjW2#ZanXR5cuQ=P&Jl*$vj^NvV` z>SntZ)>mTsq+Kvp-NCAs`JvkQ`}63>Yxo-c_n zA+Zo+LUT#tiFV?_B*w6IW#C8$|8?Yfe=M0tlBKjs*4Iv!OfvUNz;c0|F}%IWKiYa@ z0^K^gLT-l$j=ljqi~Bp7rqD;h(bLS)Q-h;#iCm!5FoV|4YA!X`#)`A)OkJ0MVDUNf zPwSmoQd+@AVsc*3kLQA3j}sPzI!mhkaj+01vBUCBKwTtT#=V{p149;cdw!J z-^k1z4@hU3D+!u=0OIdyU&fce!)-Pl{wf#{U$fW);FGIPRRhI8(|vfAi`Bzl?Pfms zZ=xtC2aB-<&!zS3vg(WDt8e2z+6-w2{|)%by5qvAaNtEb`{MGK<0lx*RXqYfF(mEs z55eyY^>sdeLLs{3RKg}}WKZgTr=2U+yZCRadcFS23o<{P#K@DX_o}+e6Ivoew=!^v ztNJv^AZZy)Sz5dV(ydSG)|`YTW}-?7+D6@PM;&fQJ&&lM$UADk?OOwB1Nkf@df?km zhT6cSMRVtK7tx}-Ut-ZySIxN1uOp|tLIb%XS+!vwsf;?|v=#EuD8-aj(Y}*d?m#x~ z`8OVP(mz>PC@4@rY@(kYxkEBnYp7d@ZqhvY8n4O$%@AK)J4f8g;1cn&Y8MK(yPvt{ z?+eZ_#S@613B*v=62M6d9A(^wCu2dn617gYq?YWKXy&@IlvSeL>FWXEZ6~IIbfDr2 z{#z>8Q_(>Us+i(0M4fHM9cthhbwOHA$4v5H zMZJWkVS*+3a|7ze#H3jlP~s;jakxObrX+a%9g#JR^zNM>dKt_EC*!IKc_##8$XU!(-C88^{wX3OE- zh3jWo+_Uu-T;O`|J^3FI)KNO03{>%(8X}SYCXsp*i9r(1;$6A; z*4gQ8_jZ zBEJqDk~*~dB`a4-QX6mOo7yU7%quyim48xN+Ty)6=q~W2)#`VcZ+XPMiAUbfy?g(^BL!KltD8j10y6O|~Tv`@{5&d=SMX=eQs?o|W zx0&i$m=ads$8~q;dGinEgq|&&L&?*$gb3VnMaY%y@8Qg!PGoOSpi=XD zx1K>y09Pyzg*;q8!9~PTG(Y9?2h-e3--+<9JfACI#h@$Drq*xZ8W;i;zsT%iv=mzY z0p=Bx;MAT{m&y*S)O@c{^L@CU?}eeUstElgA3f1&XuSsLyO}8<_Y_jD z$CuJ#g@&)D634zs+3r@I#z*9;%vs67eY|a^zlLxeh3~_{7d)-$2iw^UcEUzuq4P>W+%SGwAT!xzUUmXuSDiUUHx5i?Q$SGF2wIm@J zOugL_`$aFv3LDKD>6Mzvvd%pi_=p{{A~-*c5(oh6;>%sGx>bHznm4azX}(cs@rHGp z3Sh-z5)k;Q1bS4Gy+9u-M)~HR=6*rm1iN&7PbQWOU74?ues&SodYmHoYl)hsqkdr% zVKa#;f?FTs1FMb=eoPkz)=rm$zz*WD-&(&zUEs+u$ukdNB9Id+VvMtJdd3WoS$l*E z=I^7~rg7)?0=f31_Ly3~VCRG7skFyKii&BnFjKgHW?xDZg@hX!^u zio=EdjpF`TMbTvUHmsaAeUyUPIO|_?QHKgG6B=7tk%P}=&9toF;O_}ND)BKRT%G9) zKBdxXgYJZl~_)t3&?w)P3Vn$Y}xkxOW(Pt-am4Rz%*8fs;gV1^#Dn^Sk^ zF+_kTf){DW-~g*y+`)5nu0Eu{(?wB~=`KwubH2>%oKq&K^M1xw;WEkF2tY?u?Nh#y z!i_RhPY|1u%+9mnM>%FB`Fu}*;=>kjYK|v3P-`JO{iLQV1IKYQW|S%Wa0lS&0VJnu zFhEnC)620Doef$kF%Pt{q;J$qkC*00l|lVW;0tu$ZL)rMhp-j;x_U;riPIN+Q9^l1 zN0tO%l-fYGFaUn=4OU@B{R0wXuwnuI>F5pwC2DJiO!I28z!b>@+Wv?Tr*1PU7mbKs zLSH++&8gW}5=hj)>ZnGEEQpCBIIH(D8A+yacJQ#vv&q#;7e9KU2!rQoy3sf^!Njgs zC#Kb%?zYicX|I^QS>yf~M#g3r`xkGDNZ-e;=b+jR)x}~PJzKC^wkQ&klgs-4GKJl$ zJA)*H=_)TS2BO4EvSjRNq?&ELuA}+i)L1~-cCEd=9RsFCSIFESzr2QuSkYO;7_f)6 z!hfG#vbvmdLPQmkuGp zksMs9;sR5+BCu~qGOIiB-_59B2rcSfnSsAAxHMnV<;PU?47*Q%c!Z z7F3td#H$3HmK!-;j56s6J#>WE7?QDYx!ZF&gGGMxeON}E4s0JX;%V|WKZb!a8a|{4 zQQBGI!jBdFuzLkK2Nll!W#$*&+K*lPqtVf!&X;;a_2Q4!bp#e}W5f;^ua;4v&i%bG zw1rI`qqs@d6mHqHjKDp>w5>KDgb$YW;Q_p~Jtz9H+`d%KJK$Z=lWiikaLrv~OUx~x zgNFpu!|y*M=yR*}G-BuoRk?I>k@Q?qRj;mc;Lsi_@Tr-6YT-8qb zJG}4<-*~}2hYwRe@BYK@rF`LrrU|^|l45ZH%yWISkTG7Y3qeE_fi0S3-@w^_93D!& z)OUTe=lb>Lel$isg%}Dp8va0PNX{#BuztC|GVooBe~@>;7Q&5XC7sK~4yyEBPu(@Y zO_KrS^c|+rB9~Dt3gt;@!UjSrqMGkg{l75PqE0gC0_pN(l1Yz7ddni-8e|8;w57eiUw{-Yaq{H@HDmedHfaD~w`lC}87RVs{F zeo!>uzU21^ZWo2Eyau>YfGwE2eh9N#u#u`M+}bE}@sQ^C(zYNiI~LDYi@s6hi? zR@E(1gUD8Up|@YE{A%Y@=KVND{L_k`VZ~HP|8Fhx_mISDd1iSKYSgl3xAqe5AnkX8 zZPp84eE3yg;a5h(S&Vb0MV_Z{i?KlNXcuLqawI3+MN%-}8(|bGv=G%TbnG^7%Ar#8 z2WvFcHL-dUD>0Ol?N*)ynfsNQu7AmRmH8yZIeYchr5xp!5)5FgyhxN$>ZCWBr&#Rr z!s<4Aj1e5m+|9`8c7&d+f7@e}GUOtj0S7%n_Ytos9lt6E6Q`{>QO(h9CBdg;k>a(7 zm-Qdk8)yt!f@GyUFhh{MLvmOj;q(RnCZWFIGFh%_$ABkXsS(!F*CH8mUzxr~dz-aP z;xfCS(`f|32GVQX41)sOl*z3~GIMywV0VV`z$)99%}USUq`2F3XS9m%F}r!p)$Cbj z=dYH4`VI8|r?1fDp|m~H@PNCt4y-ik%H@b?=PtW1qY>%!+ z1Dr!NsTqw)#`A9b(=Ff0+S{GXcZ&U;!gs3uoyvEb{hh{l2m8AN-|6-@R$7`+t-&78 z!z^|4dM$SJ&7&Lb7{~y2%n!%v=rcD;L?0R*9TZ-A-t(O|y1{rplZ&2jpaXhFq;X5H2H z90R@rP9_?Dv@ru1#~RC7`HNBo#%>3O6zdw9(9jLN~IGGy0MeEnZ| z0z-E(uw;O3a?@iuq$~WN0%2zMqE31+fNoWx! zy)NQgx`@LFjTLcqt5{AcVaWf)tpq-EgB)4!vDgdUS2?&mqxzgO6IMp|#|SAI{V|NU zv20^|UE;32HZywc2U+R91xu9$YeiSy7s`@F5LbYm#5BR+Zd{aXzWIIB-BMeQ zi!=f$bgc^CgHKuTzNx$jpKXWZGhGKXs#onQ{o2k;##y@8+~A2$)n)BJ9Zy({jearZiL zf6ZQ~4gWcD%jqj|+uZ_~>lh$pbG3|<;C<3N^eFq(;;Io>u(m>ZW>wt%J%}jHO;|!> z1#1`UG{017Y9G_CJGJX+?K)Mv9@efg+NJv`jix5A+T}VdMZ0uArL7|~!glMh!`CR+ z9$da)?NnazPQgPug_m>+WnZOV(kZkV^9{qUnQ1pbqG0Qp&#^uEJF^_Ox!UM=L5|qi zgRm&c@fyoMpctYa&PmAf&5 zW^F~6G!7uy;USw2l%w@Dndn*aqj+^ zT@MCEBSe`EogT@eSr-EawegXaP_b_D{U4hL!3}El)FotdbWqWXRD)y(m zp3u$HD;E=jIl@mi@NU+|+@~~QxZ8UAaCi1#Sf+1HHOB8y7mG~X9&J{gsVmcM-1lZm z;r@9qOa9YThGcC1RK6MHJJu6=a_>php-&ApfzWF||2&m{`OnS&7Q5DRM*+&M|0_MAnThppNv!`>QvW0KUdE_^NCu{g_?C8{ z>qPg+9FZCTAmgX!QoaKCe>|6@O{G1VxJJJrIW(1fpphGaoZ@pro{{?j?`uyn za=A*BcA79J7qoJO*nE%8=FeS#$5A8qO}-~w!1rrL?iOSGUYx%aaNZ&K?LKH+GiMSX zuk*agtm~3}g3P+fb4myqTfyIisW`_L@izgaH%a`aj7>dg4BUw1v#iPUFsBMKOKPSY z=dLv-Zl8(y{fbv3sRxWn+z*D(1w;7*SG$Agpt*=RY4#-kr_84925w78Ust21Q9B@f zIUXAXO1%n1#Z&=N(HRh%T7i&BaC|958x_m*Lvj=tDM%-Gp~r{rEq}pIZnGoKa&eZs zgB?}imEyWG*hyhKXK+h@m|VY9!3{Rkz;e^MlySDkapgw8>FglgE^;!X-|XEU^Rp78 zUl9w%o5HtlbuSl^!Mf|SV^Oha`WrXXp|)B4#IR{4E&hTCn#7oW=&FqPd6bY_&39~w zaX4f8Dp$z;eWh^>GpDypP;V`_zr%=%mSm|*R3Py`EI ztfPE)>HTaE#Hp*;mSNRc?MV}b83x#DJg}?!f%Y)QW3IHgmv-=#9s6P^Puk-)R~hGi zWZb_BVkr&7vypTom$5&2Eg9UEN~lcnc^!L;iS-MAl_8^6)>$>1-(aaQ&fUpSYzDxA z5@X>0Hc*%*nd34PlnLu7l3H6TnkDLPitIl8wv<=O@neOU@S2^P`OqdmW1yw8+Yn)* zOa{+oo|%o@%>4pthtgO>yW--Vb%wl4AUXb|E3gI6L80{CT)=>h*a}v$%nJ|ww+D3` zh>;%ql>ij*z|r0Kw(=WNoIqh$sn9;b4FaE**; zAzR$W1cm{N{JGnuf*YlRlwmS6uQ-=u2&CB{S$G4hQoU>zF$|4GSn@AOrmd$mcFry`SJRIVNQWPw#Mr*n&dB45hA#?FJ! zV5VNSX@F4HO_G^nYl4b-(UQF2eTtsfYz>66kj-mYk8-V9$ex9PL9p-16cJ%h1?FkN z4j4)Q%_>?gcMX2>NGkIo>F>| zxXQ-!sh@mD&e7^LpJ_zWeA=563Ta<6Lu8xblnTWFDakQ{=Rp&+6jG5Y>b^M2PxMk~ zZYsW&mlYnLz%!}-mGY6@3zo13A~$WwP(*9(6O0~QncDT3cJVP6r>l#2~;n zYixgs{7{|*J0~H^rmD>(4S17vsd8>YrA2(?C;cQRyR)we*K&u1ZZ9F1dm#>$BktL3 zd1kAOzlxRcGf%K#s`9JNRj+$hL4ys`#3h?7L{sP^*d~f^06N?dF!7@5t1j zF7g>XJzUKonPc{V`b<^o9aH|JiwGHWJ#O>Sxuo!h9+F|f<}YU(F&1pSOeHa^RsR)%qTjz5ARben zxAU=KQiHn$Y6UE)K-oE?D*Ppd&T$VOQ()X9+M66mt`P~gayOU!KZec$!d zu`ayVxMwZk%C3K_By?4jEu@`gDZ6|W9!(5=z7};QFm{8KIb{u7C|x%aRwT#co&308LD@HLWM^tkpegGAB2vg98={=6&r^tq zUN$r5ouu5x^PN1=)$T@cK0@8X=DA;xuC#uK*gvOa?vyX&#PvJIBIYqDnwl|{b5xUv zDdkmDr5QL03I#@(yO8!+B-VO5Q8kJ7wT0Q}9Y4Z|l*>05$b^1vgA%56wZVwtX+N z*2Y!Q#o6>`;s3?kmw-oAWNmlS9nwO=jX)3tHEO_UP@~ZiY}8!n4!5NPQ9w{ZanQ(! zjtq1I%9hXxNqcF)6&+_r9A|OHnSs$6R)vHukzH^Balw__v?%CEK#~66x9Z+rLRjYi zzW?WWNZ+OIsZ-~iI(6#QsZ;$&PW&0PXppgj>bRyOu7-){#hUt=M?cvcigz?00_*D= z_S&gz?u4>Vxs5Arp%2+PtV2*mMOclIC(6a<7qCYtOXo44ou_z*-d-Koa0G!~xus#p z7Kk5Kp%Ej6jE!pZK}IdE!CB)?m^#^!#}ePw5<|VCITF*=bliDRVVUdoP+n0+q;(5h4;v)3+E03NUCLL5wN_axk#&nb9UzEA*!Q z-=d8`Yaab|0w-&^sP1;`!w1{Ymbiijk2uCAhY|=GN~mhNkrpd@LS;k71%rJ0w?6$S zdfmT&&t9r~iV!XsW{=fkP2MqOBQ*PlvN3<8-sRwR9EaW`lJz*Z5aYKI|EU!+wdaDL zA}A&c>%H|_!%@2!=&0vmR~*EO_#rkPK?@l6y!ts{g?kCR=Qg9Sk6YP1W0~Qe!-4)R z^*Z-N&V3b4oX>Z~Zz8^Ej?e{apR$q4+)MCAD&VlCfDs}D6QyFlTknlt;MPavPzkHh z{20uXMQh!KyO^$G?%x4jtmByc1Dmxm@1XD1Pz!5zQwu@$QXONHaNj1OcDrIf%pU(B ztVg9ILuXy4hKN{b+k;V;{vBRiYw6?I*5Z08*#n}r{{QnML9u)e5Qg3B;d1t)8k;V&lm@O6$i z4o>5cbp*X#spfX56$lLjb_l3}Wr_%yBHkN!+y)a6gI599!l4)#khbBkVhp+DFVG5q z^%4r;$(97yjV9i#L1RT2_3*!>&W#Yk3*bDLrZFCs8zra{0BO~|Lx5tfedo)7d7FTV zL!N0Ozd4LHXleypwHyC?)Y|=bs8tiSa8(KZ29MmR)NW>Xe-_K0)orp?h+U(z zk1aP7Hl?)SB@{e^7ED92|B|>~qHr?e7J;}3K`;q!ak}%FA@dFR_g^COI$7R2GHx(f zS^928!>3qAC(|q1y+ypR{VNZ#IqAx*nfSOOxIbN~z8C9OSYlLNO_Mt+OV?;=C|20O zk`XUnp@t%4FxZYFp>cVTzR8`mw1EX$VM9sXxZVI-6uF4SLgR`eU2&1ZiLR*S3^>6I zVE<*~S99jndgGNPt#e`yJ~;zq?)&eNx%%YDz+l@@LDzYr^HsRpHOLOA>2_sl9d#v? zbba_1N4V21t~K&d7)Urtaaq6mHQOqHvr<(JHjaW9{U&mIt!mEK^MpW@YEvY=hFw~ahE&t z0YeY{A_k#C>`$-Aivs-m3g*ga(sZ1F&@?&6lr%I0qe5oXu7$3o5F$IJQcZ*^8Mux( zhEu4}XHX32uyQv9R%p`9gd+9ok5TC&zEC&R*b`EXu2*XACc;9##zBo<$tr&%qwN-V>B3`DUVgSjt1J} zq7fTLW^v-+9|XpTD>tV8c!5+U7z&GU`8FoHIKn9RyBC>B1D-sLimU&CvGC@8R0DPt z*;Wx+M$ovc2-S(HlD<9)i?JQbc0^fx{x5uPoP$r$es0{(`0*tgjvMjnIlelEg=fBk zyMn<}C03d;&fca-x1vbXcQ;}l7yUca)&q(Dn_k5k1JL#OXHT=^AAXbnrDLNGU&wUO ziNDEZ@K%i3Ze7houiS{eHIo&g@Q{~+3Qx^Ll#42q9p0}&Na^HUUz%Fr$1=DQQZ(c^O!Yc3P5=JA# z^M|8GtU-i6B7|2wD?AIng>S`=mO8O@eG`pvo#;p3c=({%VK9jGRc&R>s`&Dy(FE+d&MlJV`zr!V*DhO*uYuspj zp0WEzjHAPgT<-+DZhU}auqKu2bBVZW-|8APGSJ&>f8a`X)FOP#z6-!H^e_M|2T%cu zeo7tCqB%;f6Wu7+^{zcD3ZM4TswdnhtX>z-{3o> z#_;#4?Lt)|_VvY!eehcp+s0x|C|0@pQWUZIFAc8d(Wf@Ce@KlNUc|!R-hgnITE1pc z^0+cra=j7v`heamxoHG*_*;GYJh~Iz`YueRvQ*uB49=yiJ^I=3gUx`VRdb4W#G35b ze$JUBRy@>Bu_o1y6{&CaCLdO;Boh&Y3AvZvAGb+x4bWvkUDt-EMvQWhpgHxCiHZFGpFM z8_pEy<$e#!{A|G~$1u-guvV})F3!b;oNU5^oAzn(o{He=g%C(2rFj(}2UnMnzDms> zanm@UFJu5eCEyU`BxAb~i(QSy)~34Qw`-xf^YK=6!`TaY6`H*mKSs2(WXd6YgNbtw zB1XxO4Kf}?zhqC{LCC^oh&h`KZI0CA%4`>?HUU(lxa$3~DDk9Igaa0j{|*cbKAM#l z7>o>)z!DGRgi~tZ2*k$T)$D|6f%dp!hf7nc(Whf8Nudn`MkCB~CmN(gIKRu*_JR7y zrNQtkcU9lFEX*E1|B_{OzHg?$v)e)+oIWXq^{VP;@stY2J~sAuTI< zw?4ct^}%TKg9Z2?dNacUwjtku1QIlXxI;J(M~Zyl5}~m#B(%no9Eyg#?3B2q=CbJv z`l45edH1#rwY~XhLv0CvjE79{JazDJt(%<(Fvk1OhfeTkZm6t8AwCgtuRYBBC^wN? zZ&{~!YnC>_r2ES;RxQNmW?4pG0#a@LiH}}B@ex%*@`qQ~N7EOl)zvcn1th-bew>u^ z0yPYJ!SX0}svtVv4X-tNv4{=i=sNpl*{vB6XuRElboAeZF5L-TdZg&m!^axG5hJhv z64{qgtL)2BZVu0j_oepFqAz`d9!TE>B$)<52@L`SsipcfO@H`<)}}JKBKI7v4Ha96 zxoPz%m(8$Orw+2!z{Vd!EQDu`RY;I<`?i6cU%8 zP<7nTZ}m^<@7HgE2W7Xi;@kG2Td=Nfr635LFZMtO&OrslD7Z|h%Rr{GBGNttuS;;H zhR3!U=VK#N+lg&CA$#Q-bX6Gd_0TVv_Xb%2N6 z&*@#`bA;8n^G6%EeUrxhL#zfFb?K{Jh)Y_Z{}Kt0#A+osX)VTMZm6mhzsO0+Z5`wL zyuxK!e<#c{^8$Hn)4#LOHN{ijor62@qD|;EmODJ4+`)X|=sL&`)(rxL(~|D(m5!gw zrz69!f1DN$jz-`1gCGJ=CLUp zH*lPzNm=ACC8afN`FdIWN``O-G(N#6$}INpQ9u@oQW>jmHy8Y6wyBmPGu#vzRagoq zNKFxi0g@7z8c0f9YRZ$OW;6?qH}Vdo*&^Q)d5Fn&U?67wuwmVO1f%`A?%osg{I^g9 z{?HbtiR3?T17`_|KpL(7PIsU2BWCmj;VNM|#&TD*lNMDczN?xt!e(1&o1WQNA}*v% z;lL{}O&3h-vxw$*zz<%{!bPY*^!w2^fwTL(!oI2Ep!%l~nUx;JL>8RJL5bNFeHO7~ zz@cx6UJ0hB2hPTjz(@8#cX1j_v#Mr^JAr9>oOV}IGEQLcG#nBL*sh; z!u|W=IXg-dUa27rPMeI**>cp`fIbakaBT7SJRIcsAO-S1VKh)6KYIcK*|`{A%a{22 zCl~^vVTi*4z4#@%0f(Vr1T*%#0kCijPUygI@MyYUX%wQ#lTafYP=8B_oyS=>NJWX| z8Mf7J@L>fb7Jfoc1WEkp7TA(GNkN_`bd)ggia1cl2OmP-icTnGy!k$o-_-{mP?ik# zLz}8Q_loEE(2Z7Cven^|nEDn2>6#D{CBiG(~gj{F)(JqT1n{YRK9h<>DITq;_HCD8$6x!$QZAHwoe z78+5&M)XB_mSN9jnR^puz_g5BEYk&L^jf0k8ZdI=g$a;}vT=A{fsm4eV1u+Kf->}^ z-hY;_PmxkH0VOnjDF+5&D{R%Dq1|A3+eu+yrz=sGz$doV@Cc2lRR59Bs{cXG`>~Jhp=EYMjkMgje9caS)GTCYV$R0QlTzfiI|gK5RG0_LcZ? zhn9$MK7)wMrP%Q7-Y7)_B2)_9nc-D%7n-f{VL0OzsBPSp%e#l^0$)Fbj>kb(e!U1(#+?c4LIF8QSa2v60nLZw!@{U}=!GRf zG0N4QMe*kzJ}JFv$&!|$V7O6{`rAgmw`mQ~<8eV6edQf}#Mqb>v{hk|TXIiOR z=-Fq*2lL6I(0sB+Ypf(O2eQ?Tl_VWLvsDeu0b%jEZep{F*vNqv6P+s zJ7y`ktCM#VJ`{IidIALbFr;&Cg8KgSo_M!i-f16*J3*Il_OIpLUc3vTZv`56|7+aaT!Nr4%yv{~tQ@lwR>t^Hfs`49c@&6E0ac7o+opq} z2=bUG@Wg&{ibCT6IBf76s%0Ty4<)PdDpXs?uNJNqZONv7(TZ|>r!MQw zQloA2Y)vnF0A$LH3T_`FCwTEmAxEqroLhYuydD2-vha}s<`Op8s zGsq5+cE!jAB5}!(7p=)xR%`f<0SheZC&^c9-*0XZ?QOeEOj#2mx)@YbmPnzs&}i-Z zIr95d`R;E^KjC8lNv4;r?9A!)d6uBpJGG$KE+mNMXe@|~(fHY3Vl*ZfQpRH9EcAU* zxwW1)cC(%?{BDyB~{$z@y?DnFoCxW_K^!2MxfFe3M_urtG6V%^8W)qZP z(W&8my1FG+E#b{cONDnbE%dB}Wbr(K&?{G_$X#plGBWjB*^vIlDc_04;Ex-DIVV+x z9a8~e^^K-&%qsI?hT!Kzv!vzcQV;o*CrsVCUX={$TL7OO1+nYaTc~pp)uG$hjT8vbX zCptW({fnV#g;4g`KwMHV1+Bu9SUF@jBU%Oh*BBfN2pBmr&I;F@1P1M@>5oe+XUW>D zWbLygwpFY+Va%YBCzKy8u${$bVS_oVNhyyNyL)B#!ak8Ph;`(s5UayiF3Acx*Btj-PBuXjY!YPqe2{v_}gGY$cire!1mD48saw z(1uj2>S@NCLy6Jh3R;kiUJP_c2t=b=@H0VYT=lwFT!G6SV;xM7c4LsV697Uhg-IID z%FN(>NVvSgfsihVO&(jUMf{{F91{4OD1{PyNW3TE>lDqjuAMj2dB4)1fZlsiM!7|1vBpE?53Qn@&z9KKNa&e{jM%vy*t)J_V{}u zo(GwH@7=uxs{>>fEo|cGzCD1o|QokB{DmHHVEc`26qgg0TL{z@z(4Hs@TK9|fK8-Pmv^@;xF^ z)tye(wqIJqMOnjjgSb8WCL;VHzxlG>+^;X z%+l$5J_UlXZV@UjR_gk9@r4{%dy4hXYl)_r%JS&<9pL`1XUABc)HrLw=IZ(+GIGCm zfg#Q(1|Ex>Cl*j#Zf z%P5`==4N4J;$fzZ_c)R(p2p%BV`H)7HkR9qFc9WNth0p(cfb>PFAzQpBCc)hUm#$G zrWS>!_AaTLiWN$7zUAsu34(!fcFR|J+87nbR$ZP2I}?jMvi>m-*5KxySnjI-kVJb~ z*;(xBh_)VusT{JV79SRgwfamhKx6`YA-i6=TR&{Z15s+N{&$J!f9+!DfSpdT^Lr$H zeA^q&dYetsLS3=zgc)T%h;0xZZ*sx326jC3Ik8$dxJxYea)AhvSW)Ouy)Sfsm(arn z8?Xo;$IH~D^2f|Cj83x~TM=|`K0+uigLn#|>(f7P=6N#1Z>WF1aS$AU+_j?^f}zY{ zONCRy#p|#wXzZDz2^#)vBhP~@o9DMYgKrXiCH*%JgS{7TSe+S1cfNmf_ zZ0B#Z5oR(#YdePqH~)MRAN(25xhy0CVP5cm7w@28j>c|i#?VG*6)U7i|JyK5YoKcl zL|TPwqEw(1d{p68W?*~DgZX*IZyE;>zXdvg$5S#%iuF;bDl8Ch(cX##_oiv>n)sCa z!t22jCR?*L*6J_;A5?~Z2d;cOsSN^Ki=%Dap_|;HVs_E7?2O}iPBJ~x zBozoBmyzTV2J(jE_9$~mJ<=p(4w6=eqzc39efp=Aze$CR+ed32X8HIq4dN!~Q0++%!vt`i}1@K?_3sGFiAjFSSF&gQ|DSH&Id%X$q!%m2V z{2^;IUVHeO3XMnn2!RGIrPwi2fI%-fy|v_2wI{JvukW=wQGnvTFPUVvgji<)IDDf-4w++OxDen?89VALNLLU zmYlRSp*da*<32X5YkegKMVZ}0q?uNiQ66GX(o|(!Huk0j_a1la4Z7H@pjPc=s_3du zD^UvJ7uiaXstt3yz@s5g5tatA6RWJqcm=!Yk#4v*3~8}SXCAmfsAf`jEj$eFdEBEi z8p+sP;}GkLyB@=uVFW-|G3==#?X@BRk%vKO!5|?z;*)dkroNM7bW+vjXIQl}xoT&i zCb>HQIa->is%1?~kNmN<;z1KZB7pYeygA?;^7J-o(A)U)A}p%t$3V}THv_j}+)Pkn z1=}48@*M|MSOx`>Z@82BQa0Rvwbz+ORA5v(J9J8}zr(o<%{ zU5K~w{q6~{pt)r52ubtwz@vxz=Tw?(8w!+_rP#e#Tp!LV33m#!togD1y_P7JSSXsX z95U)X4zI-c!#_X*PYF!G>$n3J=e!xJ#IJ_?G0~Enk)|7+_(@JB^-adb=U8hvCS}hY zn^p)`367wS_Gcjh{I7BGQzkARPmz|3fFY*4Hi#ANJ~!Es#3u>~Ca~glD@+14Q^hEP zZE=8yZC>yuz^YZ;N071J@b!>PX@^D&IZH4EXiE?#5plBK7l08bVsB&S-wD#wTf;#M zwKT%8FNG+EvnqYzYv!4ta73cB6$Z70eK;9*iE*)jJ-vkH9F(0nMdpQkfo#nPARECZ zSyV2%FKa-(Eh{;J2BH`L8l;X~EIyX<-LfZv9X%^iCI-#U_!=mp-kSakAc6GU2Lhdi zI|xx%Zsc7>6#J+6IGBH0u8p{mJ!xU}$j+h=!K)UUW4r z^audUJo-Yl#p(Yf%UE)3=^>?hJD$p}cHvAQ`4Olt{q!zl5<6faoX85H7!O1&bP%OS}}X7?0kRfC|BS)fMS%! zoFBB6#9u4WlVpY2b0$cRwvbFvm9ZNj-i!=%!&+QCg!&^>feW@Fh%V;(DS!>`6z-6C zutN5~lQNGVS^dYX#u>R$NZotJdlyQ6pjDO#oBU|mDGphk!sJIbPhtY~%H?_0O6}*M zZlc#|iC)JvSFN$9Weo~&NN{|F@ycIV1Je|{rgn+6dXXPjcf1cPWQIsi9{84GdhNpk1Hqw~J@kS*^w3gdetj$FNK6&+Zt7~VHKwk_IyjOF!gWxB zJ@nPMfeh;(hDI&m(dB;xFHjHmfDWKa8#DrWxdT~h_^vb*h!pc#X-%xEXMA*} z&9)M)v_(skVeR{qge6|ZVZr-R)CwGI4>z6x98obt;3|3vRP{k4ld-)b1=}yo8U%0) zNr9d~EP6>YIwO(`6AQB-YDT0b+QpX2W*J$)gh+f+2qZ==06`r}bt%f|gYG3k+XdIA zpAkL#o0Xo7p8Z;*=Uj+rEA(9O$CK0Z1URH;Dd5EE*_ll#&Cv&qJvlv}HfuN|dODK} zx1?wPRC>OCxuoagms#|5`a2`F+3bao8f2U!O|OwO6(>!A;5j&95i-X@e~TAVYSIDN zB>v~P#2oaXQaiE-udb+99=i!wzOV;p*9=>2lzt7RSqkH{17v%(F&v5u7i*0{;=;39 zRFx1+I3-qQpei93>hf~|9^z1ersc7#AAvwpCbnEEvHF9=N@DPSzJ=k ztUHi|L8I}`O9F#U#%6KhX;hbYBcZH*M!yKE6bOjkMJ`sF^$tV5kj2Pe=vi6meep^) zSt)kQ4BKW5POcRDEo7xTjp4G=ZK9DWb*jtH2O6SU*#ShOjW%Y@dkSQW7bmyaxY%m( zCS0M#m`e|P&)9*OqBzapGd}yhXz?E7eR1J=PhEb&XPqV|*&sAtvVT)H$;%~1ko#AIS zmxyXa&!Ngzs?Vb+Ad^(h8bB8>BW>|WS^CT@RtNQsEH`x>tt>Z6^+y+hoaP=ptR7?c z?mO80YfQYr%8wiBgYys4ts)h%H9RzVg29HN@GgH_eJ6ZOhWkZ~sZh7Q!;WsE5l~SA zF9>A;Mg<@tG@ay{F$~>Hoc6mFF?mJ@3}P5A&$~oWQI4h<}HV9Vc>iUa|lM@7{8 z>T-KBdn}!rB9zlWzbJ%}EUND*fH#+lqk{c+C2{FiHU`xo20YHEYvR=~crh-6C#|O1 ztmgJaHP8vIRx>TBnk@^h)?}VhHRqYtd<*RXfn#eNC#hyeQZ*IvYA6k-Z_N@28;PbT zs;NXZ_aqT*m?YY4JO^jvbUXHf)u0Y%RFluF>B2-!7`a=mi4vSt(-ZNU#7W4OW;!W{ zK819#O-rGHOwz$pk_Uk3bE^TIt!pbg&11N2VSc0z=$*{k1ud;Q&29^^i}p$$&})Au zi6RP%uFfu!=;Z2habiefRR5WYYr7;|9l&)J&{CGJs!K)oW$`q*hyO`Q^zdWnx8B3g z6ZzdL&ai*q``Z)yx9r+oz-RQj3J@XBF6`GS=mYW2-43X*bC*E(T4Z;kDQjg@Na!TG z|NVrf>}j89%2g+6%0-FziZgA`Q@=S`dwAANYI|OWY{uK;0zPcdcqmS*JvlaiTQ;JX z5FS;WOfG!f?4LFmzttPeWH@OySI8j2&Xiz9lPb|eweYHc z0dkT`7{m(w*(=hCI-<0To<~~%EN+=Q@IqbAt=SNk0v40Qfmu_DSyOIOP26c)VHcfI z(^nnDC)hgwIevI@xH5|yCz8a68;mPgJ&T7ne>-*gIk9mKmKt zK90!?9Nuu%Z8hq!2?z6vp7I0XY%zzCJXi_~SmfFZfx@oHTfkYkcd*xW5*7uw8k;{l zj-%W;KQV#1089!CKu*3n+=-Jwo6#wYV$5g_csG&BfMc!x4iAmHjGx0RazP~vBKL@w zr-|K;G9g6RG$Qh+!GR2nu6HMVCg{toZp?)C#B;Hj*hqvUwL~3edw)cGIm-XOU82ST zDK+*=I$wslPHvF9Zo8sTMZC^*S?9+ob>77~L1SD0u;XWDeLCt(VgYxhSS+|oUGBjx z&t()c;KqeC8y~bJ49jSSc99^iA4OX->Hq@$6O8)!dW%s6+bW~xTp(akv{M=N5+J28 z>IndgGwS|0qsFyOkS*ujWJX;q8D(*3Y1h+n=-`4D9Ey%4W6nyd;U55!5QU2w-xB9X z2=7kAkFBgB!4FAnv%_(SF~u0Y`FI5a$MYz$@8_}I@PE?udI-resm*?m$+)G>Y?zWC z2mR=|&{rAYw(M)0D4v|Te}b20FHBVr)gi+(`=u_8Zuz11ve65UU6FDNCpS z8FHf3km_>$qs^c!8RVCyzPj^ElphezpENMsDIe!N8(+4uV%wDJ-ys16oLS58@xXBR zpW&QCbQt69$5`T-dOXGQfD2EJ2KlH7j}W6I3Wl==8-K-PDF@>C=xxSxPsL);UpSr= zR7z0iUJRjvyM*8)Kj>j7v85G%3|Q(ajJif}%3 z4Jt9`LpNDb4mVKgmXbN=cJCY4i;-8<8;jf{^aG zEOiD>B+o#oFp%ePW;*gxFP$sU5+myD`M^+JJ``YR6w^s(>8BqclqAP>XbZmeg(vx< zIE%OWaHgY7Kkj#>!eMVxmk(?g{ok%o?2rZoBkP+NwCvQuwPozp0M@Y1WHjMo~j^?x?BZ{R687p zEQ=3a$($+}3x zIVf*Qrtn~k63aURP@EDL%7PBWSAhM!33jpsOP1mzr8*lhefpB|_(|%g&A@L(5&lqh zoRgkVXM4_uiweiDwDIBSKR6Vj@{IxSwnU5pItX%3#|%cpt9H@i)^o$$1md|F`a##5oIvR7mY1h*Nb^ODF6P8AVz zbvd_dlW%Qs2Nqha%di`aX^U zrZy|wuI@zqZ)5NW>^$94p$u+>>N}`~XOF-aJP1&_wKb7#$mw-$owgrEXCMsn8OE1l zXh4|cTo&e7@W*PPguRn^J6b+6UmCi6?Hos1Q>L9IP#%V*t86W(CjZ$tu>OHQ zz%DjU*3D{dj@G?4b@)E1%Y6_wmCy1)cyU6PqqN~UT50yWUS>^cNj1@H^DC6XNWf8A zq#w8k7fE8qK^FEa29F${zN!EwGHp<0R=t3YV-B_oJ97q3FtjoNPis$z&k!P`hxNHM zY9J+BD%`I96OpjL65j$bb7uoGW!7GSPY@Z&Gf2%Zy*RZ5Sri-a&Bh7H>M$t>BS@vP z^nLnC$@C9&v!{g}za=~pS*Z4rv<+@%D@!yws!wtMNh~+$k8rw4M$^k%Z!J02z#=`)>{&y-2Ca%tjHU{4V?JE;kn+D@^ll>S5ScOF>3`ZEIY@SJiD4r`5L{ClomCjxTW$Dk+97;zs~Ian4CQX znu_k90AsgBa#{gX*%HiqwWkE*v_;+oLtA3grzM#3BrtTmw!p?=i_B^T4AUj2H0rEV zgE`9G6@X!|0%M%?t=NV_qmx`Fw@H#bC_>{6DuZ1$^^t6V@FJ{(-hrkgICoa; zUQw!VJxe4u(3^OMH}d)8oS`z;Hl?-`p1VWX+>mgfy_4_Jc8KU`O zz9y70Iwxuui~({&v0%Eq5Pe5_j4%T%1`;)UA_2sYv?Me`sxbHnuZKn*O~k?d%9;e* z4xC8uvpL!%3wjazDjT1JN(2l!YBe<{+W(X@sr^@p_InvG5u2&Zdl>IXASh$A6;k=*U(-3jOzpTX9Tw_(!v(srx^P8OpoHtPzG9XMi(1X6KypH?2z$nS?I*vpcfg4_Y|u0|J}M! zy$IU35UPPdu_Zg^{U;$*VW@rb;;Oh%iS@9S^3;9X8OT%StWz?htu68j)kLzigrLt_ zqIdAS1bS&=P!rN}HKZl(ziA;a)6Z01?yWindq+*k8i!?x9TVit+ zz*y?}swDON$;?wCg*fz)Kcwj4l5Z1wcq$~6(VTEpL#Qr^^NSnDI3C@A_bvRl>syRR z4XFRj)o-@V$U*mrtKXLn3AOYEvJ_$NQjW2n>1Hqz*<#O(#hn(`u$=VCaV<2c3%s&3 zu}=ueqC)N2zszyi7k-8_r80eE;M}m|PMm7Ui9gaFYxV{&Phs7u*GD^q9nZVN-D@y% z!zA2!bJ)?<7aFw`QzkFgj&Qi^tRO1YFg=>}C@x-3^J5D;-lao*EHYqOu13d zEhypysRllN51g5u0~}Cz77OEqnJjncAAA&Pz}r}TNW72y3pdbK?+h2(>WW(s%K0u@ ziATSekGk>ETKQot7TPrfeYb(Vbn1Z##$L>wia8r@Jc zCV0_me3>b~EMaMeW+Ihqo)$ju;H~(g2C}tHQ#`wjzrat1?0VdtnTLwYy8xk&gzzdMTrVN?l#epmz)SE5 zke(+~nA{m(WXjiFMEm9IzwtHqi{tfn)Gu5555P1&!R`SfJV4gF@lAp7ldNu&B=sd* z&}rER@bN2n9a-=;kH&h~=D$z4EYfZMk(kqRc54gV>ebg_7j|bc39snm^mkF2u)aRe z?TQ947tJ_CiFyFg;%4ihE`hr(OJ23FZ`hj-S3q0M4&KZqP@n$LQXq_lUZd03)D?TV z^P&W;&Mm{{!f-}s;tbk%MpHO`;TkM6-a8=pbqDIQ^lTh_r|1ju?m7wf)LX#4BGiR$ z2EWs*Z#EvC2EK=<<)?FUUrWmA(_c{E0Pk&H7)J1U4LDK}%9I~a8GG>opZ-u08jvm? zBf@rYx^WesV>vQB?EW&&{lNFZ4&%;WVI7r~v5>>~8-m)s@K&M(?wv+oyoUXig{lxx zk6h>TNCe9fqL=0+rrf{6r!sP$RS=Wd_~Wt2Mj-0efAocVC)!jYYMGYrWSc@Lpy{K~ zCYZD^8`k3Z<+#38miA9=-8g)Thb&Ia6Qfq~JBGu#P9A4aYkj<4uxx(%V}Ta5zv+7KLo?fpVe zgX37-j6E|NEK=c6aW(jRKsJ62$%mvwZx%vteD^7(U3BMVQHn?OM)USBxD8I9Y{PCt z0B=`=mIQm!gP>ORjKw~V#h%&DzJzyI2Jvnc%rw-qK`Ho`ObT1Iu8B_)$8L>UTQPq} zw$pYe{$JkSX5D6i60_|RQZs!NSS^RNAJOb#VOK+d^GmA=v!#)D*PB{p`|k6!FX)R5a)r(&FQ1L z|F4cb$6RqNHda>R8UuJ+VVWBkPT}}1LJ)t#3uz3%f5(Ys8F#|ICnj<^AjKx*ZBPM* zK|Xw>*h9!2=}DC(?*{<>PVU9bA?SFf^^(J?SSrIQg0Bmd&?FrAScz&y%MMxozON<| zDY1n1Tf9sl1%F=>QVt-q)woF@HIn!|C^3s8m7L$~e}d0%68MNXO&A9cv#8PVq~K_4u(pAIK6Dh|VzWO4ScTR#`4`(Yn4WDSSs z`G?QPftFgs-i(UUK3TTOZN>R{J16Xq-so}doY=>!Z_*k*$?)278uta&WS33F`M6>4 zUKOj(_^h9jMfPjH@UL>X zlv?g>q)`Qxt)^q&%~<4ia*BvRxVp~5Hq@$5=n+voYp^pN`(20PP@0+@aPs4mngg(q z@Qa+eoUQK|ht3>x-#_HiS-xt*1|Npr0aJfwwIvW}9&jcNXNT6h4m#sv8Q z84W~dE<)Q!vrlrr*JvXgNa*;X`J;*Vxyg7(Z}5hGCbkP58M)0!-N?o~v952*M@bAG1zzv6WAbBAsmUp2&-sW?;c_Wt8B5%-6J15Q5`H-fAJol{*)+>H4djz%cVWwp4%Q$hTrU-_{GwmLz%S`Fx7DBu?8dE z3rSAL6efIY4o-K$)CaF%yk&`BeAVwDHaV=BEw+Xb1KUIx*gbF_36_cV@&vEo4Cld~pfHa8;mRYx=l%-@ z?;AGE*Kw2Gh#PffY$ix7i2Y?Mu^lHPHuBA|{gU2oz|pnQT;QEbaU5#59@_O7OG=ub zrX;x|>3-^hNwhz8K^4Rj^oJLc^w;9__mTcs4L0fTYf1l8!<9S;u1Ob6*htzJnBBsZ zchNVxVt|S4M^8q(a@{zv1i#rM@hgcPNhP-PWW>f0=oTm`O?>Q~$eQLNCy+t<)Y!pKOAO^yd5&j^2 zFOgrNfT?Sg;X9<7;o`KVc*u-%s?Rl<@j)sxPO4_&_6Vs=`QJXtfiqaBZyH+Yn^=;* zIb|tJ-<+yYoCl{W^na^wP6e|SeRGHtc@7aR^bL+G_!v%SAM9^266l+x>S2fgsok|J zR1ZU(rTl-9N^+rWhETJ+O_lBocM_^SMgF%>%COW;D#2T-o6{Avw9RSCB@zDA6}Qke zK6Fx#Yb$j9KFqUhDr!xi zErZXTuO;T=|Eu<}ibN;o{QD+YVmuhWr7g_0-Yv$6Z_msY7V}GazBQ9(XguFqL}l`H z>oPrpqbiZX0ix)ZObkJnff#H!i6uBM3@n(M;}of!KB z*-;k#i2v_?Kk40iMW=X3Af{9~Mt@tO`Pm}rWB&YV)H`-g#C^BKnlx^P7bU0?Z zK;|@cRQ%M6l3^l2*f8c#crbrA5-3ndYkJ0*L)~!H#X2kqVqWB#>49%FB6b90ge; zs?_v(Tw1}oX(RZ9^J*57O88|UvQMAfB``>?y1=LT8q#S7abnc@68Lix_+R@-;1>aS zWIv|PhX+PvgJk)}Rfy(dl-+Ag zwCD>38nsa1W1P>!5I~7=c-TIlz9F_ipzYcaxQb9PCE7Ck%c2*_Mrt?9mB$es&;p6=vDC=os8|Q1$;T%f=maY4ld{RcE*m7KPQH zU~#2Q%1~XK1J~(?qJ(&M0LPt`En3kGyu)g9Ma`N(cf9IGIDrljmqo!N*?xSo4hLu9 zs9L}--UF}7^G{(ZWK6v;oc)&@d2%ycEm$w!#q|;9tHu6ZAfUSb6BvrZzeHhp*fH(d zif_u4MU95*o(?v=8HzW+NtydQa8k%y^;5XQo9o4!bft#D;KH4-)tLQrm@j_Z2alf> z=q<3n0hC6{#Tl;=eqwz=8{^ohh8%M>mt&(+!%mNgWUTN``!X8BTsAO}Wbv0nm;4;) z!~e4KTG>;IHwhO^+=*j)L-ev35B#}yGu%W~>!=&yh#$qYhoja8k7ozU1-%waWR$rV zVMr1PS^h~qfe!Mri|>~-VP7)ht^gkuPK)NX)l?;(60JZ@KNM&W{p%F|6P;Op@f zfhXr{QI_`{ihygmeyGydhpV z1B`*D!|x%yFy&C+8o1Q>E#6}xtWg`&gb`_*7Ch>hd6pMvhr#FVS-leEu_?b>8_hTT zClqwfY|nyOOppc5>{-2xTcObN41c?2?Ap8xT%iS5J6R%-kJH!~DryUyi)T6FDyJf} zl+S!2Q7GDP8P$OagE~RL=!NnkN;z;5U|b}=#JIP*NL;lC3_b%47V`C(4&^Zi^;Gl; zKzYm}cKWc@Nu}>Kp~S-k7BEZzFhDvZ_jI-VXMS=m zeyf)A*o1J#>=jsSjlo9;gf}LY1Utdz3ymds2Gpt4*=d2I5gdhn>siU#qg{-r;{{e* z1%8eKW?PnS|4C@`icnyYFEkzJ!UrNkqeqNscXK8z) zO0H-w&&NtN^Lt9(K0xClocq#MlDFM3AVfa<(aJ&v+s6yf`wloi&lgXKoX4~Iu*+X?gGMkXHX@GUvdD&v@M6PgSEdw85gp znn5=;z0K#aNpkrVW5VI>w~D@Rt5*YzfrFGS7CpyRNY z{q5iz*02`;?5zR;QK|hK^LwqZ*+fcniL()=Ayd~Tv1in~aQWjMmB#qMK`5l*5u_8%*te1r|-h_zaXo3-fju|=x19$Uz7pht)e-_Jk zG5PLU`S4}=!%-hlur-h0HQ~;JO$1uf%Q~Mz)Bi~{yt?7j|0#%~|KJ0yY7Q%N_d+FE z;|VenDs#8tfmd18S&MD;#x~UKcmz@Xl}hy@JQmuu@O|HyO%c$l$iGTfd692ljl;CI~-W-sRfWS+* zGFBnRB^6S1d0Z$;M6zivM3qDE^SGc6;ph4{`-U@hIVX?nlHuh7Cq2_gaemwh1j{fF zvOjLal}|^8-=XnZ^IRXW1#)AJ z@;M&OJP_w^SWCwl1rz+?vRHEiMgr)uH~rncg_+(oA*jawVN#*}8iSWt&y4mf+<*u$ zOq3Hv8qFe;Wf3qGXBSk1)xd2@do4UEt=!}VZT>cze*^pj`+nLG|4bdq3VVth7(~d{3 zq4@Lt8z6`+(gU}``iAp!jQlB1dtc)B(mqNiAkGuianJ8lq zF@4h;8h6kenrL`KQ}>pI#_TE!joV%pn%X4%qdr$Xbh=lcO-Y6rd-Z21#$LtOYGEc#h1^1Os?1!4X##Cd$GI7cjTru>q* z9 z%?!h}!L*~H<8elaJnu+mZ^gkXm*XuWB4qLU08f9z5kbw^Ns7k6p73WH?<0minqjPc z1|yZOi<0K?s07lBrc-W0Rh2|9oH1D5)yX?<1Hn6CJ%lstu*Pxs zGT()&XhbBN4e?6j_FuW)FUP|}HsCwl-Gk`+o%$1Qd>3t_KhX)lHJqgPehFr~$-Hp( z)wuI2o;RUJO57Ovu#fbHn_Y-89SSCdvj^jnx}d=A+T})>Jj6)&lz!VV(E9Mot8X+$ zE+bhOb`)G!4ofhO56UhV#Nv5K1HkR7mjy`&AUkr^LV1bvvZ@&03&-DR$*u4@hTSb7 zkNE)h=O*J3@$5+nY?JYTxZQ*^srZEdSbq_jad+hJw^@d{Nufxz%w~&I3+M5o85rNK zQ~KcMtomv`VEFXs2+pU!Wa^H?}j7V2abN|adZY~Bzj zHOSi0X-(noonI?U+6E(;{(SCfJqv%7nrkqyxa~i8xa|)(BFqOLU+;ooz(^ye(pen+%D)ZB|ICTfx;)hJQu ztMkp{Q-XOY_Ec@@o_Ecw_vORRB!W^jK{Mpl|K&iPN z7hXLQxtc>8LXaL%^_v+M2iEz|QcV?Hh`##X#*^Z`PRY)Xvt5tVIzdq$pft(kXHm9w>81h{uqP77(ApbNHCz zByIWLkM~J6Mri+1w9CRPII5O~U!_2sf}Wx3=g=qKIU(ThKHpNnU&j+uz;D3Vf#K5< z@IPGv0YCenrhs!t(ooUDBtuzFjD3|hra@Ba?t{Gf-7komM8Uu7Hpg4 zg&I<^T}+xlP(X8q4Fm-=H$?&EUh!+5ZA$BgHXCl>-v)PZo>)fn)xtlLb2-f)s34=~ zYvw2)Vf3cidw>T|9hRMI8@gI*=aS3<_1tQxf4LgE)2D_eYF=F&9_h8qgCz?ay&>^H z*botEiO4Ti7Ka*#WQKR{g|Yf2!RQ6!t;?IlgMdtNmg5iL%v zkEo%6<-)K`Aov)K60LBXH|;TL(n~7^bRSEbd^~OPDGao&1TCmu>cp=!cz80y=!7kF z3VSO=d#j9*5NmyCj;1{ar3sI?4$)mp94g zy1f;f>sKeSxmvNe%3w;(o!Aj_cmWW+WlHe@5w$QBMwq@IhS%s+qbm=?^#4nvs~)z^ ze`R#FOBh}Ac?t8;9sDsZ$&P!7AUSfjZpW4Bw~xo-Gd}g`9lgP|4up!^lwbf1^I>4b z$?|ahN_!4_a>{7Gecr15R!GwPZ`f}=7XMfF+tp|rOgCCQkq2nLCE0KN684*qBa4S= zDQLfKR$;(-F^J+zG)Q$tm2eFJrCM(zNV@+G>+RM>vPq}1-Y!g7Z&q`DDVlSN_5^_3 zN!#;p@SN70M_6w-o~AD@5SkOY#2#ruwW*&1oTmC*K@C8XmANJkPHNR^U!_YvN?3qSSPKVgYT*vXM= zF8GQP>*R36ouANjlltH&dx* zFh#GkUj9j``73B>;fhTiu~cj>`Tu~8|6GX)?G6hQY%{|gwWL)|ma33zpb!4vGxrkd z93XQa!7yl{N#+vGxIPvFEF1))r@~1f)W~h<=n2;2Yp66T1D^|4q*DC{a0BwM%zGXe zuz#RAhB$=1Ejo`9X5MVCu8zN1%q!7@G6=Ah9<(ho0!7&iRrbQZ@eXB<&#iRE6;Kha zfqL8OY^r^orMv_<4vxBaEb)Q$UFUP{hHU^K=%X|iBJV=wB=kT+1zd*oOx*dU#r43H zlT^J8#B-pd+t(!3t?IwPD7`;21vEc1@Ld63)rEqw3tE|K2H?Gpu;WrU*6Qc{74$+& zy}_uXut6vn)X65A`dTggg~L;bBe0>)IHq6>nllM50*qTqb&MZ}9lel8A-n_Esb|7gZ+pnI^RjmLEx$QCs}Bn%Dt0f3T&Cf$w|gm{z!{p zX1+P00=jE2;J^)ez%mvk9K-mpGQP$3BusbOs=e z4<5nR0`7039haRTlri&b6~<3Ej87351ycYk)|MqV5`F;72AeQI)dwWz)AKBQcAm6n z=dx}{W!J}&oC2M2g8&BhBw@rxt^>{%=aXPh{DZ337p}2-Yh(%pM43AQf0GI+L1Zw9 zdEz}fj+rux8($)$sMV5e@3Qbp;#d}bjToNjX0j~sheIta@Z0df>~HT~$eDlK0x$0l z3;dPe(aR)=`nmu17MAJ+L{ZKWJVM9K1|YXC>VYE3#2wGLM5}y?2eF%RR}+_1@*>^v z!lDg?&SYK^*U6{qQD}?B^@eV7uES_2*RT8{nd|sK+U@tJ@O%2LComc=*919(9XYp2 z%p6kQA?I04nCyG45|NGY>nU^B3GZGKlr1QUUgog4ngV7qUMBalNDV$uaIb$t&~!`C z^puHH?&8`cL3;%^EaVGW*Uow2a)GRtu5U}9nGnOM-Ne|BljeL zS&s&_`XQWUEyfnhJ=PXAqIdi_TZoqI4MMG$nmcl?00@1Ote;QkDHZ6UJ%0n(l#$~} zSq~?XouHtT9Hn9G4Ks}ArGoAuq*oYQoIYB%Rv$3O;_k^Mkvpa>NxTkFP5om^;vYYa zOCoe4B{8mlB9lg@%HzNkd2EnVNFhnm_6x#io`jDnNb=qN^rv$QDdaKQd&c!CuQj}G zMF{1$g?O1PgrZkl`rV^9LFK~@uf}d00YwTYWGS4Gcfkoc2}5qJ@a)-ZrK=B4$kn{^ zhQxE}i+mmgN^tX}zDSQ8yKCwpAA71PCK(^_2eK@z5h@2V5a&%|n;AIzYbbl;o!?r% z$hccu>UTBdwfvE{1J_>x*SJ42Bpi{ZTatd@|K1-tzjBDv_AUOm8Sb>z;r~ATUp>NU z+k5+o|GVN@%k^SzjH&vH{i=+id2jj5a2zyq1O{SYDIpHu0f8LijW39Oe#|I`M2g{F$%k zSK>Np8Ck3zk8inp3<)k{nBaH}$;kAlf0AThaq)RH7ROR&eLSP&f5mV2&~Hxfx9cva zR$O=G8A)Plg=JUaw}Zb!I9wp{pD4lhXn>eSZBav6`QG3<>8d**Ty;!UTrod&ZpbaD z|MR&aEXhAUe|l$K=eVrz_ag9UNY7OVj?>6{yj0gT#pw43Xzci;}0s3M4Y z66>oIPi26cy%C*ocvTCfdLtg7S5m1qcS%vIV{vQrM;wvx>(VU5!Xf0Dy`QUo35Ok5 zrZCthv1FfQLpBW+!ft}UQLtFj+J5$rH-{*bCwIOnjkMCV+`GS}Wo z6>8yw`S8wtCA@P7rVr&R%Lvmuw@%n}DXXhOAVxq=J)uPH=E|#h$Frrx+ETp}9G9VEFU6(_(TbFp%@829(UFf9!FjjN5p8Rt&cr2H`dEhNW%@ePwBEwC zRZvdD7@+8DgL{t@?!xKTyLNsZJ^y8=|6D#gXg$J4g0nh?X+@WfYH# zmuvsb{Ysc~H8F0lGbaobuDdZu;Dn))ZNY@$6sw5yBnr94^dvj(Gu)V~h;qX40?|#D z&p7yrFA70wA)qS9|9BZC_z3g|GRj?+kjSd*->!kc?KLcsfCx1F?q#(}&tK0k-~#1J%wlN7kqB2SaCVw(N~ zLc_SZ;W=a{(#!xcZeD#)0-SO-07lVcu)me&CYKtEL>w1`XgtL@XxnzUzayPVbhj8+ zW8H=mW5!Az?w^;2B$IALq2ZN(yt~h9m3SQJ`hSRf7x1czt9|?=CxHVA?tnx=v_?S% zqa})3AXd+Y6Wm8ngw`A0kQSTL@AHCq0$343c0#h;p7QGTLrK8$C)C1eRK%Vcm2XI)1J()x#jCU{x9i2*b#3f+jG-Jl5SsT8 z+6AW~aEuen9QLk0r@aCJGxfcV-J_?9egP1xaE#PNFt#Oh)1?y~M3;Y}o9)4wCmQBR zUwLnHRS;1@*}y>XeQk&g%={ku)62iOQ+~$Y_it7`AMvQ+yaLuxFUI}7V_W=hgJi0@ zAFo_5yT2?{J=_fp(f=(RftfrEXH04qJhUr3G!xjh2|Sc)%kqea9VtAlLn#lRw&|C^ z!&dFecanI>%`rQG2MYIs2RMi&#-u*}?QPruNa3Y;arfv++Oj}JM;uZKYLP@q{o*u? z43DQ_q#j61V&s$siQLq3rg95HKK2ko`$TjZs;U>)10nT(dL#AsNFd}FXDfuz^g<9) z`6-v*d&gwuYE|nIsGGAQ@Ue8~guZ9N{kW0&1PZ*z3#3Vq%6k&j^uFT zNN$G=xJhQ&7^61hEA38Ug=N|sEnjJ~C0cLhU7!HoJSGz06XgY>x9pXK8HbgEqxrA9 zw@4|`v8>A^)Ws|5@KSc86tPP0T8a#>SY8q%ZMz}$4XdZG0kEB$sJ|04XmNE$Z-_Xt z#e*yQP3h;slKu}1WciZrmaG75r^N1%b45GgkSsL({QI(o?Tu+Ab~D``+){!H&iFfw&J8v#g6VqL%aV)DBLkWZ#;WlsBk?z ziTg2fcltxxGE8AxTzzjn^xYpaN%h)Uk&wMrH+OW8juz@&w{=H}-JmTK!tGCLcu~+^ zxDFeJSFY2G*M_t!8*ouvo)9ppv81p?#|dlLx@Tf4pVLtR$TNQcnms{LUHPrtU^Lr! zNCfn{Q`{?H1Pi@3Vg$Eg1e0DnWCV8vX7=~!wfyW<|J~O%vXP-QTed*p{`WRk3{4PDFX_q`6z14ht_qSHN4DUiiNGt$$jHUc65; zP1GKSeN93TgSvyb&The0bA#(g34IH;;M~b;dmA(Cx1v9Ge|-i{hMZg!yT)!RTxGWV zr@vhIzBAfyws)Jpl!wsZ7SF7Qm%6MVJd{+8-hMB)sOugc{SIE-e_Y`+10F8{B8S^t`zTv%*D~Mnj_o?x zcW1##P9bh`-QaFVg;{1dz(CAe+;tQiD2ZOdtCwi0m*_(jj6@e8J8xd!Q23Vnm>1QA zsF3|t?0a4vQ8lR}xfkI-CGq=8h)~Y=s3&|AH&uLyvF7?^XP=0DTesiRmaPY3&nW=T z4+gh<0qh1VK7~6#_hO&|rx!{Fvbh%&Asz1Ju+`Rq<%9`!zx_KOBP2$!$Mf-oM1V;#ZmK{Ah|fkuRlAGI^{?-IjCJi9z6W!{f7h;l$wTXq?^wh=c)eHEAUq|KKJyKcTrxV7Yw z$|<=dDU+m^FBboX-7qW;CBJnq{*Nm&XUxjf9%*p@QNT6$6%!5XiW!DAI%tfzcS`g` znixaPNU_YiVu}SBZS)jtMwYdb0;wtvOj?~qP^~^fc^zm)Ez&oSmZ~<7RuwlZ5XOHv zZN;OnqXWaXxX+%5OUNJ$Mu*|#`eH=-aiKuXpYc*2_)5DzyR8>od=Jh31P{4eSRBY} zmo+#>JeDz6CK_-PpdsGjvZG(c^e@`!pnoBS9<=FYogOp0xAVdRZP} z5%9U)7h!u4=9MuE!2q8XJs#zsjJSV$>3^mo@+6`kB0lyaB8b3w7$B0^1oz2-yDuE8 zf%pJ_G3b$CQks^tO+r7(`5Zk%`I)|QiwyfOl$~+fM}%hGhV#TbFZ>KR3fW)UrMNS| z2o*O>ySlIgJj33&)y>(Bqtj}L$%s)0rk4!hD2x6SaS5qN=A~e5(XhP`jJ!}0jAZZ? zcT9h#a3ffVlRq>QOs#LFKJYD`E`eoaNtY7x*b!kVp*#y~15{ez9kB!oMN3%+tK3io zTN?2&avRMCqLhB15KzJp1s@##Iy!#5wM7CyM9xNZ0_3;?m=RqW(d}u5R>fs9yd0>* z(#}0uGyTpz2Z}qUUF+FPcnvD-Fh(e(Nt33Xq{K-&jQDR5_xHk$<>4dY=nN0wHdN<3 z1C+C-ufoX7r&rxkz~%Ye3Vggu>%@KA2Yha>@uMYI6?WKbj?w@9rT>5Ool8akKbz=( zpY;F0H;>i*mrDWC{pWjy9J~9uLm~aITUY)^0$~5ks=Nq%C<=y*(`Le-q6L_Bug#W~ z{q%SrpZnA5gr5Vt9EP6*Z#R?cdLx?Set91ipjX_A)$g_m@;V;JdUd-2(uYjAM)B_Z zaCZvSO@Mp>AV+N83ULyElgu*#U&gMQ481})bc0;@kAvV%)@NAL10ic{UU|HKPoVHv{Hh3%ernd)UJJ;+&*^0X1BOe*GgWuH(O&T z)6w)!^mV5g$f;FtA`n{>POolkzr9|0?RQ(@q{FZ-n-~Fuq zYXKXYv_`B1a5;kecU;|O*kdsXj-7!j^nhxL(_hR_C6_gJ3R~bWKV3LFxL>xmg=ZE` zb@I_vz7b6EjbN`NuL6vro=59{%;Uk!8qR~LOZlll={*pUP+6d~`5^l11rwSGEMV%G zM(81iMHZ|8vwbR|y8tPOY+_h(2kIffLp|JcLW|g9XFg~DWf-c{L(%i>#&ZYZHQFDp zUZZ`@_S4Ekuz@%^YzMqkovZL!kp8LF>3#8ytKFp*s{p|ugrVmyKO}(Kv!Yqy_)iAI zEMhzo8i|Ael$8$1*88P>Dv?B;NA+q6>h&rbj$WLo=s;HVI94>Q+qk|`KRFhaIk)_F z^<5CVmEZpIn-kwxLq3KJXiM)K3nywjLe;haZhqht1>)I_sB%%*ra{MeX_y3}^(-Un zu#kT4o-05;m@3ZJ>c;i68_gZ3^0r72glUINLtC=R($%;%ugHTlX&$6ie^pD>-!A)U z*J3VH+i4!VF6H6$1`e3J3e8$i*-{G`0P$-QABp?GsiR9z5j?t zyPtbTyE%YjJcfH5-FafI`)-A2t*iE1xz9At7=b;DD17Q~n>|9b$h6s0@g>EZX}Wu5 z(qwNq>e|&>5E*A-WrRe?m$32GkT7Mns~0wx*!x3%mu9-1_4@bhqwn8+F6Tc3iSwT{@q8;A zD>MHu)%i~J%NQ>SLj|lgONc z`f%JN&Y%8ge5O;wZP)<*KcI$f_x)#T7?3jfZNb!)Yyhdjv(dmd(OS(s3qv*83MK$i#g`sJCuqu<8(xC$m1%1Tc7I;(G}oB}{z# zp&G)^XnkWCQkRje%Y|eCNh9MF+sHUdHQo>aoGDQcvG-*?u(GB%d{m*tz9&m@Q~!Qe zD_NW8LB@&NRAclc<@KvsAM8*@k6E9)kiDyEFxeRD0|2xShIVL#7znRLTayOD>DaPp zQw-bSduSg_p90`#z=n6uxc$DKVw%*}LyU#tNasW>q_NXH6l(7KM$%F^#qSq_#FVA* zkyu!8?;0phb<_if!k?4+1TtkYA;CXmSd>^pl2iu_w$ZFva0?a-@yMGB3!4>c1*Lk* ztT?f?hiSEE2YkVCSIOJjL(sl<1bq%9CjkNtX@F==oN7xmnyIXbkJ1(``io?Rj(Jwx zv&zi2CvumXXHpZ#jP62+p^O>MM&;7BsqftfabVg#xbt1;Gu?jp^Q_pURKZ6#sYZ+6 z1e6jxQGO1~-=fNw^P>5CZc)34EZE8Kj?}W@>mGzdBpOMao$MqbiDXah2QTc>Q$j8Y zS*4`7U8{Nrn5MV`g+{Mu_Oc?%G}hke_IfGJE)C?yo%rH*nn|vkRt8Fh0Yw`QsJG*I zlQK(dzzJ*|t=^{2HVyDN7dGp`xo%HYhGSnC6Zi2E^<(mE9!+;q+ZYxwoUHk0Rd7FK2<%PkkwSNZ-LZk7!;pS{ z4KmWJF(fExa?nIL)1qA)*XlH9OX60cwL>%iB#ID4<0aNm3T0#-dR!0}wyvDQ{46JI zjbW6SFB6_o*kV{JO1vD=;6r+(?R4A@kmwe8RY?&lmLM;LP#{iwht(l)>Wt(xxP1bS zg)@%5J{~Kg%{O)H`7Nf8l-K)-rQx4}kHWzhpFPoOw^gaX4KN5X% zeKlT)^Dk1Ne|V+#%0&T+R(WnbNvA)1@rZPKBJ45NX>)%M80o|cdyEPMi9N=#2zDOx zDL&VgVDCayl3x)Er*Qd%$QAUL2szOgugNH06OC z(okpNgS=L?;<~Q{bqn?+P&XIDMOkg!O8GM7`sTk`C>+j;X5qwAVtnPFj?#qE(RaJP z!Kmq-Ec6R8*ds5d6$aK)>D(#-!d&$g?Qcu0S>qZ$@1SCvjx`rY^An$gBvGwvMo}5K9-6HI zz@Mh@7sSJTcZw*j(9j!KtyqLy?qBZd?Kt;#n627jpVWBjtr#p=Pm zUX+ljVAiXzTbD}8P54rTXW0`axjlss=?;z&)t~Ib(=pIM#}Qqnck=)KnRJSKPcXf2 zA14!X@>k>G#_ve$TUus$c?rGkr+vYrC=I0w>r~zgFls@0LzCs*<(1c?Q+Z2OdH-U0 z^V7;hix+){vA|+I9jph*>ZFNvvOBPEdo-ju;&sjx^h&Lt!D*TV@92!5OjX|tQ1G@* zUcvfuEUOa5lYl#yEf8-2L}+b2jHmGZ0*Xfa39lvv4=1<(1H7J{;K5(!RoETF&=)tE z=t$We;|x1-Z!inGot-3QQy8sJtNItd;4m`}4m06o^WFkD%-pTNMD7B&nQp0dH(Y4m zyIp^k9T%#aQ4r0yD=P4=zod3qN(R6&d$XUrOLu`i8jiT_)nCSn3`^1=rog2x2u!yR zs6D4UuqpT9w8=?*5_jjCWp~Ey!mYqo*So!ZYNJUVE$q5OH+b0RN7NW^~KSi|majOeCz0{;-ljpX&w%TbRmJAp?jCw8J&iU&HTdEcDe zxOoF#3qW{>%#JLFJbns=0vP_`-dD;HLAsQ|On4jbPlaC@SlFT2CrDMwa}ry9R2FFR^eJ+-fL7+QP+eXl6TU20KmTFw#%@H*kri=tL@`u@<>RR`ku&aWz7G zS^zdNg$H%(61vA~Kt1gD#B2{6Ic95j+4l~8e%xZPicZ~j8B%}={m$D^l6p`g6>0)H&eZU!n^ zAT8x>*|~R1!STBP`)KOWk72ZJ&%#k@=q$Vz!p>G&I4g@yq#>*Q9xQYkVt!a;E{7oE zLjwyNu#TN;;{$EzooL?H_5hpb??|-nrey1ed+mxJrCrJKVl?|9;o)*;)kd^G(Z&}z z;kt(orM2Wb=a(6K1J2zoaP}47UDP$90a%8r3spgE8s=$bqnC z^Og5OEX>(xkm{LVx?+%eQkiG(bxvA#vAu*nTm7s)%HXSSf4z7UjJ-C6{OhpYxeE2o z>aY77#DFEey;J_L+AD;AFquYlCTE8=Q&ui1psl+B-nn%j}0W_|xy$V2<*1 zd+#)E0j4DqC=PzfoD#BkknR6+C#V39SA``we<9Z`vB$!^V7f79e-Q37w0S+jK0N&- zcIIB@o%Aqe`{!+V>e!+GpS1H>`jN~vN_@0pUGK&_$f32W>ByMIrS&83r_+*E3^q{2 zbj$}!STkspe%Xq34CaNtFT!NlGu?psUz%M)qPPWKae@D;INHrfS-SRW^&Q9>Ds0u~ z91u)62Qj{Ikx5XSmkpeRC#{aqxVs&Gck3^ug${1mZ;1JK*(PsYRK19B+4Cd|t(a0IhEGI64DJ^_isE_!%4z5#4s zrvW1L^m9I}N8!pl53G~5s^8%gFVP{eQP!&egiM&Hp`7}{{I`bN85Uz(;1mP~1BIA4 z+vp_*;v|eiA#8A?|4jcgm3gMPbZScEhz3;ZSPvMBuBmU$s)cOwX?NX>!wQOf45R$d ztY9W&kgA^RmFkuEEUM&{cYLC}EVC8%x|vd*?>m&oI%ax#3Q_Duf-L`>td&V`Vx$5%)&zQGm9LIMd@BW8LjF4Xs%@Zg^5N?(;*N z@B2RV)3b)?&h$7kzquKA=B}mlp+y~B1(H(-w-`^dnQ^d+P-O08KMt9WG)@2B zznAyuAY4osX~Fp5w>>A9BgVQr9UVsJpP9q*&nO zzkr8(@D^`zH+Yp)6T%amuBZK@JyburC|w-^DiE<7SDWmiLaFBqa3zczL%!*a5%UU% zZrENOw*N*%!5qY1CUY1zZ!w_HM$u=2SJM{B$DP_;ni3rPsX7N?dPO^i-AW*?#GZfwyoK`EzA@tWB8t=96K+KX z)5d!k2M`)|c7t?(>9m_6kA>qcB{*?ob`bT&8#QMLfnt|6-Uxb+o=an%@9_^873F6J zdh-sjcth-DZCPV|Yi1xL2B{2hS$Kn)1KzsTW&ky_pAxWtOn}{j7rC*8FJ42|pe=3O zpEh_)_q^qZK?^gqWuw6FdUUd}RRMj-oXJA=**9W@b)IkV^*rJv|EiR};&d=x z%!FLs8}@=$A`Mg-pq$qHGwS6MQT;#x$*5-}D(TGr3Hj{g%wCiv|K8`RUAR#j5F;se zi|3`j)ZWeec0kowLvPm2l`i6Z(KAD~MRWmqXDA#@`w%$z#ZBH!M+mT)4MQ1-x73se zO+M$lDV*;x)!oXe4yTM{s)NCoI%E~L?RwVAX+ft$j`Z_Sz&_BVy0;6Z3={xj?z zMtmKkM`Ay%e79hYd3USX)gLsTe*po1QsS}LrwdfVtx#7y1Y-ad0+$=Rk0iYx0*tXE- z))~-2K3S?Pz#xDvtiWf9y@X6RY%ko7hv8fRv$V&_Lv?#4w>ZM~k`_El?LTeem$g*E zc)S%~a)Us~Qhr%NkSGX=_5nEji943^(M5XU{(El6Fbz&U3sb+jE4c4%6Pk;yAK4pu zH`1wLvpHaBxJ7nVc&i)9sgL1&<)MI9$^BzYaov$6z=0f&Hyb(Ik@%idRf4y@1k9g| zXKH}5Hv(9A(wfM?dSP2TFvPcp=d@>nK()$7{Drb(YOYqj0YJbadd9M}WutoPwV^>d z!%K3shwD!-$>mpW*g9tr6Y!%a?uHDM#p_{j7#c*a3EWX)dYSfPu)O6|r0M4VTwP3D zLs(>n9dq}k(2T%aB*hVUdP5kACC%?-N~C=2_cK#X9fDsG*cRq9OIt<{af z_}WQS260g6ZlLKQ@M{lT&IHmDsK_&+Jj&5) z!{Cdf@YIpK0WRWp`P+Ujv$Y#8Zqnu#BTL0EbK!sK97z}*PQU7KsIu05d{=L5w5r~X z6n-Q2r|^NRRs8@M6yMMx%)#vQHmJlwi6!w;hqvbTBysAsLA>@>g$ECX!6lM05Dgoq z;T&o(fO{iV~ZQ>>k#*Wl(^&x&JndG#>O1ICvpb5z)FO9umUV^Bjg{CDwupJj2#wGGeXeGGeX8GGeVoYQ!$!z~+E_U_2D! zDb{)Rdm_#h|BG@Gj$OJ#t|R|!`vFn`yBWl86|ZgASHSWM1Y)+HiWF_Yr(a_J7Ec;;tv!E!a^5-@J8fiSve086R%h9_+` zig#+2#4^^8kfu2BeYc9xR{-wpq!2sH7P^e>A>VczAZ`3OEstrNYp5qLqZtV~O>Ni*-pC%DPwnBm9v zglcM(H^X0sk-P2gZe##4Kkc?_FUx_fl2-~P-6eW_l{evkn~SM_yAZB!n0< zmdK=*FsAuZzoY66D)GpMvpU3C9ORa+oH`m^jbfpc090Z-xgx>IG0P=z#{75)Q zEheV0CBrz$pTLzo{xu!^>z|7N5p_B<8GnTF8@ng1q?g$5PX6a_CJS`ej+4?(l4;P> z6<{5t60S~5xJV`3!~NS--CuZ1AU>`V3Ns$y8R(er0LmnVHbw#G6coC3ur5 z7=3jG+U4mh@I}%Sr3Tp7cD#oz8TVmJaS2Ot2}^MhOPGb=dsL^1bu(&+rhoZHVq)C{ zqQ}H~8d4=$?os)zcia)aL9pcEt*2GIKF6@Dc@s3w&rn66)j6M`dJ+4H0Lj_@=Wcvy zb&pg@;IkZ!hW#=*n__IBuqP|=h37vj@RSh`vl|X5Iyb@ePlMAzWng9n&A3$s0DNV| zE#>1y12~F|$9~;h)oyJ4RQJDcXe+)5VAC5b;;k+wN6ezQK5Hhtg|s6K5s6TYEUnc4 zK7@BE2LhgyfIC42F7I+otYaN5oT{K9FYP%g}RM*e=!SW#ku}j>5BP}7`8Z&8= zQMk^)nK#E`grS9TAU=zbS^!0>`W^to8S6U{SbPVkonKmbzmLM0y{^=fHI;kQhe`!c z?I<-}3xF}o#KTK%i%GS*5Du_HWwZ5Dq9v!Dc2&;IPHjf@n!p=YQ&O#;DM^iWE!ZXWvPL+}Hj84MG$a1R)9+*afnrT-y98B1ot|6$z8l=YJ1P zgU}C+;#x}$T}wu3#8M;Jk`ZiJGG-NyeSlw<(1BUI_z)Wnr*0WxW@@mUn)jZjLgiQnT*PetX7=_Y)CAV6?l9>lAponW$ zOi8r!gBl1L4Q#9*c7G@O2fcEbtE~>hT-k~m`^ry`KPX#6iSIt_@$_@^xWw6fm4#+< z{We^Gg=2H(9fn;)22_Fl@}KSvW@JQf0?6e8G6E4`{p*;WKo>BO%OA>jh=j9CVCm(Y z+x`_NT|qQ?-(9Ahdi6jt<|Za`=5Tq5ukH8}lv)dgF0F;6OT${YNIe#- z$Mf>ATkxXWGDgyAdi7JqOGS~ILZQHgklaubH)RbghkfH!3- zwM~{7QEHBSMum1BjkvXo!!~Mx+6gP+t zj|inO!+O3I^}vH2<^Hxi&F9dKqOdYXEM=rt{WSirp!`g-XdlbcOvbPrdVIT`<)Bz6 z|D*LNYVQ~p6`QtVHwLOM_AklvNh+W7V;n7S3Dt)3PJ*VGp!hyOk7LxyXR!9Rypz56 zGV8Xye%?FAMrIzSfMp&PY1h?jz32GyP|MzP^6&urCmD8ar-#wQ`hSJdpRMX}PgkuX zC9qXIVSC+%M5{{Kssd>h0ec=!^-(txf6 z03c_0df3w{Y{3a>=@v@ZHoB3kl~+iub6F7oxo^Hln`6vo94JX+3F%MFm+7oAY`0?( zjWg)xy#Zf2kNEW1Bs}m2j<%a&m!6m}1yaRIsk$WWrxKpWgco#8Xx^KP&PNT(PpDY= zYvQB)RQGRqK#r?+@RaIxf^FLdTJ0HPfL(8i4n}o$Y~)VfT8w{p9ml`!wX9QC%9BN0 z=<9OuA>u%RYB&ptan2uaUCeT$^Hd2&Mr2Tt_XP$ZyL63=D;C0WLd~8y8T(ie!PGr zV=oql;$`l&6Y=!Y7#WorvJ+v{NA7#b;1 zrmobMnFJDF6Y;}vaG4)l6XEzOZ5d1;ny|ltO_=)3;w4g}%6rMDOg7M#zs05x@8#V? zmf*=YNh1+|d!%qTbq4ca0t@y!j)n`Md4uy=klTm!>mjz7H?C?Por@YkREcd%$_jkp zelR-jNzPnOep3rN?iZJO9Y;$9%ujPZ^C7EYXD^sIz-J6wZD8F@!Nss~BlOkK_S$d9 z$6>m?qF=?+WiM1h#2rvfc=J>ZhP~## zdnv}*oYk!2ji@hKPGWptj|yQNfCy1d$S`uT$8hc~7|Oqjdu5S~i$PdZi2wlltf>dF zP)n>&sVmbH``s)%`<7(-bD2KROaEAU z`t-SF*p_$=ui3Tb@4mmc0?XA~$_qU{`s;K)I_ZYae6*?NK{A=t$W`6!_3s)A5l;Tz zCRD@vVS4|!!8Y~;}%0qZ5?-d&H6j7ti-35S%CL4~P6t;h#j+85}&wyOGgmIx-fnYZW zYhNirW6CT6q-)RBv;u-Pm(T!bGKLd;+1AaSffqO+oyZ5)X3k}O*aV|Ew7nTLm6O zQQ;7UqH5GR(Popk&nbPp*I-nfbBb0?Kgo(8+AAXf0l{XZy^t)!ZiH2N^VCytEZ)>cqMaA9hKUDI5t=Q{za;?+X+hYDhPMCP(-3V z`?2%yx=`hR3@NRZtX1s#$cQDJ=*v&C7n0QxCv~GmDpvDzY zn+3GV80^_(U4VyWJEy9SIDK*|WDzW_m6@>7nVbS=tWeH^T$c6%dy zf6`TUTl56XfCg#@FsEYJav^o;FW^3}1m5`=H%`S3^x_7pI9dA*k4`|Y^SqcIhzXv* zH#mGLL@(d83p&kr=$|H}%~xr!w5wK4Mk4pk$;fl4DL7K{Onn1q9A$$ z0zdZxpJaL|V6#GiX`4GzZI+ItKBYwCS zzZ~&cV-+x$Ebbs$DYt|WM>o(dAtjw7t89W-@j#7d%SUMlhxO6>Fm2ZAc48)lZzTOC zUw~3c1@TuF8nKcbLaXKi8*5my4X8A=YHY*d{tkN~c~Pi#CAkY7oPCT;u;S6GHu7aZ z>;+np&|XOPRJ?FJ{+4UaCNoi1ZfnIK!_MJEIi3z1#=AGbtOKht@~+Sbx(}@WJxfL# z?@~}CE%LaVe#UK+dN0*IQon`FhiVSySMlblC&W#b9I;k<5v+ggc4#xB{fvE^B3L{! zL-D5RJuY{$G7T7X^rTANl7_0xUaMn2Q1wP<_+o|V02v(sl#c{58dN5)@+vW^A?T{w zis2p_E@*=9N*m`!>TyI$RjPIzmT2(>lkvC7BqFhyuIlBiti@-zcr~H%fmz6avSJq|dS%*WFw{8| zvYXux8o}o>Byq&QuWZOtrY|eprB#1}1$t7-n@G}4owK>=W@rNHWB(Q=L`EV!ARz?7 zzn>*2Cd~{7I_O3}nA|T>^b@RInxLN#fiR(;*Z4yEnS@M7rJwhRUqwGfpyncX0Eoit zff4xDs_8wB=$VqD9tayb?n5vr2lc2#&}sq9QHaN|mj3@tJa2(`Dui}?|26Tv$kEIj z1Bx4tK|ST3S{7nz@?5vPYIQBf5H;#EY@)%VGDQuFvdD$Jm2N`*6j>2Fe{iv9nMLfu z@J*J@)l=eDk?0Uy261c1(c_jWbg`wxzI<|tzX6x?g)IAGNxCOg*cdxgB`C4)uR=E^ z;!GSH>Y>tw?6o1gA!M0BX42{^E0L~@2D|-G+Ykb4%`x~3)hE|M85uD+4sQ3u026B{ zMq}pvYPHOmGhgBayw3gj{KV?8-QGpK83(GuK&s%K4 zK}vk_0j>H2guzJJue>~ZYfLnnajOtl(SazO0*0PBWWTL9d;}Mg4f?*Xu=>tLwO&HC z+Wv@WEJsoN7$<8DK5#7r&XxP?^?kdUtzKn8SE2Fs+H(zPHRlXAghCL-;-Og9flZ+U zrRQKa$-#{-K|0$ekF;zGlHg@R?1k%^ObX8#hJT@qUu&Tf9PJ=No6H3ghn2~VT$y|W zK?5_?B`X#7o;ojuy_9UiH}Z$H{hUs&?o+}?f`LPCiu0w8u*XMuO(RS&Ft~-eLp%dQ zVD3#t#iiu+c@fKI7#?KDv9moXh0GovA?v~KkHqMimRW#;i1Q~hM!WiBU@hXDJK?;2 zpw96K3fo^J4H1F;32+NY&bDwzQ>I76A1FVbYcm`*t8LC&rRQxinDme?E3 z_Di&yUozKYI1X4fIPhiwT8Vkp?i&G|@7xgouyZ-rdgYvyDyMTXWeuMO5?Q<=RSi$} za<)omNL_FOFyaI=5;ZK#!Opfsl=0+8<%LM8&Akw##iO}0^NY-~;{94(W0^Ll8AMxF zxVg*{a>V86AP$weumjii3PB3}X>~}t&M0nFGbENHV>WUY%urKY;U?^?uzT9pOP-gx zEQ1ej_K}ZO-{}4X3SoB38B%q*9bH>iq;Oj&ecA8{8m+Qm@l8CdoM(ACV}OZmDMn~@ zk4l#KIy9d!a`t#x$}AN_oBrwvtOb_PQh`=zf?0t-r-6|QcsaGY8U?eZj5V>;7u4{Q z`;T7kvh>_ibbP*KORGVh8vS3ly+YcypA}^2=F3cnHqj~mRUSB6W5KXU+N7{ilJQT0 z$2uhPz>q|tgIW7|S^ou0ds#uHIGF*P;ltly+VN0xfdtTIDq4ToFd~-60oIL)(ryU8@?6&}JWl zL4tu5I$oNCS@Cy$qghc6N`I!xK`Qv54-C>S_G>ktq6C~Hk2n{sL2};}_QT(Q9zmX3 zd4v1ng$LuyU&R=|!g@(!%KW>v>bo(}$ON2o!>FcW0x@{u-r!n*9-~)GO5bh{sEcL3 z3Xl~m*>YdBSXi!FvOzY-;*Ix#c)BrNj?;Nb%iko78tnQL#=Xdmk^YWW{Rp;15=maD zSb02(^p*dGY2WRo(vC%1s3SQ?oxirp?28ojRa>GspW9G7uU`Q^sT!2{k?W?md9&2t zGjMdJr%5GdtvL{hMsA*VTDp9O?1vhfs`@dm_ehy6r^eJ=gwiduAHr>!cP;Z|yf>Mw zTZa1v4$`s-%TZBQGXx=o-;446_l)5JNSpgHZnV19Y> z6)yfZV2a84CziBh3OT>D{S~PY*^-Rx#>gQm(ovD?laW0bnTtrdK52uydDuY$fxJi{ zvEyV0`}iMHko)o3Qi7o(=Mo6~93#?Qr((X3n5z2ncae26Vq=^IPfV8eGp1amQo?~v ze8Ji+xVI9&)8HyHfZwFe0pGQo0=~%`1HN@&(mr2zUq<)C|7CXfXLZl+-o0Cwf1Oiy zOHQ&_-+3B6Y(&Z%u1hoRfYxei7U8{DzjEfvy^4GlTd;Vxo5++Vxa`5d3SF+R(A=Ifze z39yR^)>dFK0u1UkWEsH%LRJx=mT~m1jyPii;P=7WS>4MTaHEsGp>|9+SKp&X^L!u+ z_WZUQlTgL%FC*?Cmm{6hj&RjVpG^2&#k6-+-L zY#=@7?)025csUs;IomD+3qXT@4G~e{Y1<2E(2BvNsJA$M&qkKEQ;{m!9nd$^`TyXg zXtT!~ywQ^ZX(PlXp!<1(xf@_)yJ9f*DiTAzTkS#)WGZb8Dv_Zd7A5<7W$AwDanhp^ ztqunmA<^b&mCvBI6hRfsbpu!_wk%)r*T4Q%-}m9>olfqLA*e=&;rN_%`7Tv~p{M{i zvc5P=>Hy8bIO-6jg9@lPLX{Fg?46rGXLj5^BLXoNk?$vzP!(i2JZm+HvnzB5%0h*=uU$ZBTN9>b1}_ZcoUSk zBRmc`3h4wB#U|GoclRw8zH~Rm=w}J24*?O2idC`44gwU}QnyszA}{Z7KKmf=UznFG zuwoIxrxD&7hBYEgalmA=F;lO1+p+OWpnpfa*L1JZagiAl5>D}kXs*}OZMP%suy`4- z594|_slVzB`F9>f5qvWmBqFHos&oQ{Efvm}ssu3hSEk?27&V@++Fm31~=0Y*fYm-q9Z>zAj*m z9+v5(VkHw`K}*<}rvxSlfs+wTj&oXyH^=fmQb!rjTQnO z*`if*m>282yME zlN*Y%0VYf}DAOCZ7_%!w-fp1mor$LpUh8PS`WT9Y`W~=fC2S|Zm4J^Iz-<)%xCWif z32h2g#^j{9h8a_0Qw?=czTogW3Q^kJKjH5J@X{ur?Dfm-s%8Qfsk00(!K%H{<1R0* zYF@y^RafEf`Ss3^;?-MbodGqoB$oZ!mPm2cMrMU`Q2aeqk9n(j-ONwCbuILOfRE|p z;cZM5e}q~2x~LNOex#1q&!AX6g;Mrp9-_0xLK3)e1C05#S}u1m+I_(|t$)w!MW&j{xCaBX~aUAP@qC)-6eZ z&nW_Yh`j`#55UX@(jVbU_g#yZVAbb}{$}6<3nBbXqrZ8QI6;5&HZrSLbtnEN=`U>0 zr(Q+TAC?^tZ(|}o{wN91i%cUxL?kJYM_ke=Fm1hd82#PdANyGp3#SfFh=p1e?%@Fa z6&;iQ5>ywgogDD!JcLFZMsLZg3cY#NOd~klTO|ay36&PHkUM&Bo+Sjg2C7|#V-Z9| z^8|mD&>J{X@X#8)wkn|bnCg*A`0q=o!Rc=VGE#!x(0xgIYdKZX8@A?1aCc!X5IX@P zA`89=1%s?!Mfg3LLL4XkMYjChsoxWVd$KdZkyHw<=``zr$E}=4Kj2BshGfqOpDel)l~r8k#|G8$oZf6DRbxi9;9H z%8}o#n#degFC!?O-Xw97-qy2z$}x75-emF4k@br+Q-nasYW)s6^j7Y{+8Ge}g^8dh zSX4i}mEgK?#%p`%%Y(?BV2r`?8A#oXRXxsQ|LS>UNG|BzGjLMOTE;LYVH2gN`_p@J z@KE!p+A2S#158esu>>!bU#EH+*du4baaZZ&By!P((;zrY*Rox6Pz<{Eb%g)UC!KQQ z(|91}(UYZX|ADS$e|Fj*5kt4^YZ*ODDKe2A@pY>B~oSy>p^S=bO3 zEt*FhFcLUP>3U@sX;{6d^7o_sthE$AelbrKfn z_N%Fjyz+{d^>Z}%*jb}Z6&>%C&po8@gn@Mx+<&vw7myV~R{}XuT@Za4*ssRq4k1%T ze3)%j^(SJy5L=<7LBfe6Z?i0^4abpg1=FloShI5bc|ls8lIs0xmxM+e*1Ud1pqGHi zs@$F;D0YqPmXtD6nUmh*T$?zu5d=>MC76~2p*+t$3I1K7Mks;rND)a@4<9b8meGBQr_0r?<2uvGn{W#Y{Q&Qn zE9lbE-}f>t2l-&LrN?o^6%cmhvk0EOL&;Mz;CB51T<{*8;+M=^xu%&$2!6fv7jk4e z`QQH|(s%R|kuzZ*;n{CtJ^f-OYJk)J9iG6iRr9_Zc+>gii{Ek!z;wHnRYREPRuxe= z4zq@~YzeoR$au$V%a(F2gPkL;#xpY9_$O3%*n8zX8PGoa0Bp_UpxB;+O$Qn*B1*yzrh)`pq&E-=%uiQqq z+&uyNaj7|CDfxJ$LgkNGUF=wJrvV5{+_u&g zVQ^ytoaISLGK>>VHR7$m1>zky;Cl|gSMc7N_S5iw34XVyg{8-*zi&qV1PQ49=ZO6v zw>(t0hj{+)ZRz>XSPv(^CVwC7_vckk`7GdrTN?Dd+^bf}&TqRPf7B;?x=nQOO_ik3 z49t81z4m@~CtibiuT-5W`;7?lK27q8Hl4|AQ7>JDS8O;>qjT{aK-Z|luqQy?9IvAE z!!9a-vEReC5#T&V4MC)Evte)Qw7!GU>*ZEeZy^jP9FQefOzySzisEs^L{TTIqFR27 zqK@xe6lo?=6s_M>QSjHP;0q-s;m7U~;L)iGz@PkH+HfZUuSoOfj5d(E6yWISqt{tb9L|W3EC(nsd9ayDY^%_hnh}t}JeXTl- zMHNm#iTc)Axd<(@mexXj3mysMmp=G*dw)UV%)VhO)LPa`gWG)Y?atxlSry_Q1G%tq z$wb)#ggJ3{cODd&H1!%sOPF*-Is%*{Z%C0Z7ET@@3L28DBhhmKS;y0%!gzS zFjF#M5AW`4_UjDAHP3#B2>a{O&{rdpN$KdlB##0=(fE5XdoG*o?7NMzaC8 z68D8%KQ3UuWlLjiK>-iyc}Eq@dZfv130p>981EyNvdC$t+3VtsIE=v78-ANr4bxk8 zeV|xCPyN6H_ZFnOfnH+4kKblHyu>O|@usQo*-SXZvk$~ca%{YMXB}{q)Nix3s6ui`JOn$R(dYC@>EMfPuQflMQUj+1{A zisVx78EDjFw?IteB!Nuz826##b>*jcEgNC4Mo9T_O(yNjGh|kcorfxNB0(b}3MAy+ z4K^H_gI2G`F@Gojz@wgb$16|(O$TpM^4CO4Vw1t-g6e2)SALYT^;G_EBF+!3;~@78 z``pw3x%_hqUrn-0&ypw3zT*eT2Q!?Q4`bCx?hWobP; z3xhgmxwumn_wXzX>YSxVr!2b<&%&V2S>9rQC%dx!@GK1KoJC#kmFRsRNTW+vGN^MF zIl!4LC2)8a26fKz!&JqvMiyCtzGtGi7v+9ZXIXP4$@4v5QwALA%F!g!pfi6j4zlgA zoy!9ywSRm7A(<^$b`vb+L>7ok`DhklH=sb|V%dm!NX3Zpgcq|=#XKyJhaSNL)*I0U zERiaU5^Why-r=f&hS5&nFl@Z$jbe#I+9%{6dAbr$0vMZA+61Ox>M zAfV>Vqs9xGuijp}q?w_S?@V>jD#yrnat$jdY{5y88lW54^|qXFEIEIRwrl~>5^)}r z>`i{G(kh6OcYL)A*na17f9BfSTA~2$xFNZpsV%GZnzK&FK{h{}>i6w|)?{$csdio_ z5i|-@Cp*PUi$qL7MJy7qJg@Z7$SqT!!=7ZQ_Rj|MAw4VARAmsqmwKO!C33w_C%2SR zf|XNheJ@@iyyr`N8}=(?S1@;fdIri?CRalt15vJ`y4o|&vY-zT128Z$C}1RUWW>|d zr)brGK{{yF@y^Rg`BsJraWJC>(F7N(GMfOH`>^5(tY0K`X zL>O@@6?T1bN8fa)K@nZ8#9^l#XYy+Q$aISRmRjAKrK`9n6g$o9E5oTJj3()vw=otH zy!yD%h=JG$f;r!E;0*1T9TO@yxvE#|dx*~ByX+>~cfYsb**yW@+xX>v8Sq_--&Fjb z#BV!(IbUJDhTmQI{TaV)`1Slc;QJwdkKp(0HvwPm-hl5o%q7?3*Ll6>-9zK#zx)8F z(YM_-+o>a74;2xYOxqrk<;L#$nAWf8o?0@kSi}>#n8%9TzIn_*qcAxM|0Z)loOSY7 zGSdmj#1`@_9@hh_U_HBBGDCCNvG8DAe-U^Ds8dVqhNhbFz(~dlqPDELh7);aCKn;& zo}nx#H={#h{^=jY&|D6&<9;M{N0UhA@N>MDGJN6$`(rpTj;{)GUnhJ2D*0MK{$+JJ z&ptsx5q9Wg7rmzPF{P9Jf`U@3zE(F$+!4>Sw=_uHCZFr}8@PWHdBk&9v%%S_;1 zGNq1JT~B2kYZ;-YW&(Er>)qCQ!5^C{;a5uV8spvcWNEo?*Y? z4t=~gmcY^O%C-f{fXJZXE5-rY`tm72u=~H;Qc$3+ldS3vcoEeJ#@+Cn-U)(%*9D$m z>Qcx$BuFbnTXwbDjv4O020w|3N>UjZqHCx$C-iAGt?mqjw@P9#Bq3$K+ZmE-?=j$A zcx-q(jtK9trhW12PE8a1xy$}_q`I(1O8=oR7jky;-}{XkPvvi>kEdI(ZpY9lcpO9H zTYuVkYL|W?KX6CqlGr_;$SoXKbOvz^bIQ2-2$0=Z(lWzOinZW*8AS`k>QA|nv=+25 zEJ25JTz)y(A(%LJrNcS9RorA1Cv=GM^2DKd^PKI7f)N3#^dQ;}2)+7Hmh+rQVEoCK zT_K~R*RS}%o`xDLVmNNuYUK3dZ61i5tl~Z+Fw0is$X+b@?Bx>ID=2YC_B^p#m8ZrS zm(3ir?s2P9{Q@q7{t$g+`gwo4?s&8jg~CaOz_0PfqBP#BVXJMEZCsogJW4XS$-;E}2dAOXB)ErqvYR&=%{4Bnqavtv!vMXdO$Q=XeY)!V z6N?0FamgXvul9PUoF5Rwf~Q4W-!u)od+Zu2bFkp*1u%z zYGc~N#h>ZcE49d?je1YFen(Z4+kSeEPcM{EyTxuch6o6~P-3AkEOaq*MvpT)4o0uQ z34ng^9yj|@{E5zB#S1`&f5U1kHZE+>T?BY=jDOw@{V8N3ri$w@C;t&FmtfHr(Mnp} z{u!k3*p*&#kWOYY`MFGvMD!S15V9Z01=^7PT9w^>A8KP{Jw9wp^Asbo9#EL!0Zh!5 zP=nK&7qbhOVd{pAo08iOo<2IUzj9sj=$*QoCJciNyG?(UC^oD|E6^NK_a)_}aPdCq zff=sbA82FV$2$1;M5lYao&%Owe)EVL; zYS?>T(l8vvjcKvwGk>7~CGKG$vUj#6EsdQES!WSqf#Hqg6Bzy<;>O9p>Q}_@2ElM0 zuK!YN(jYMcu9OJ z%I5i=JG?ue?HXx3*5xCO!Uhfjt45G8^C3aPU1*6y!s|HttdJmC=sX%okV{N)#drBa z;Na-{O`!Hgs1We+>U9Zx^dTaEk4K1)je?J-ad#%jW?7f<@7XB5y|;$LHiPb)ghSaT ztLAm{3PlPT;16s74m@b1Hd&8KpWj)WgEBCnhpmNJ`f!8YAR{|TY)2{2e3j*8Mm={? zfXwnZcdxscda<9h^d)l}41M8fk9 zqM5cJSq<4PyDY#{;@{Eg-?3MCYZ}Ad@q_g0D?jsKIA1;4-?tnVZHe0BYOWXACb&*_ z=U?8nA+^^e8nX30X~+Q)R2A7wIdJrbWFDm<@T5srZ#SNs@5}Jvs*3hrQ8=LdgNrKY z_MBEc!gjz?iY9o1lZiAf^VV+<_ZPy6h&a=dCzcVTWWlq0CAwM&EO=rvkr!W(7 zYr}$8SY;&W-#k$Jb*u8zHNyJ}9f2mI;z8{)0uhFzI4e|Yn*uw7F?L}EKyZoHTRozI_0 z<0aa2KOYY?SKwW@h39*|@043MM3LL$M(~U57Ti3G_bc#jV5Z;=Q$GYfDt`-G+3CA* zKNyaLaL2+ZwznhkEK0pUPo{d7sajO3YmsV!TBLZ4>(rBSWC-*&+Yd&kV0IokLQ0(e zwk=OEwfm?q2FP0hvc#UBkT(F9)?vJ#4CNnSM<$8eAytZS^EB477-@r5YME*-Ryo$C zazMVhF_}Zw!3p^$_JF?kvb+jFu0YGeSla=mws;D}hs-v%_|K!5HIa9U6h(8yP!j&Z z9yo;k^QQ2m&x~Ii`wm8Ms{?4}v=aL@If{T5HKI_3%Gw1$(pO&{jF%RE179lQTKFVX zkdjS$r=QJAJNX^^(CPCk=Siopqn26x6h`cg=wuO+b^8r4dwTmVaEni4ri-6zTaGp$ zDF?z)l5XlRN$+f<0{_@h|Cz6n#(tJ46EIb=?mal5h7#|Lg#m+O>?p;3H~@N=(~q5| z*Y^O+e=y?z99NXwQA+=@JJSt=CeqD^Ok=QNy%pAl=IY^8!Q67=DtLY$8wH;Kh~5X* z27(qyGR1pIGO@-)^g}F!vp9g9UZ?Ke%YF7agL8XepM5PYEM!0%n|IkY zRp=Bt^1*n9870uZgyR{Tb$5<0o%HXp_S|Y*bu^2EG>bcq&$kbY#;C?nr)|$4N5_KNhF{Y+M$wCCftIPI%tp( zip8u>{z&8l_S`^ z@8{k%)a4}&tMHW-?S{V@<(KI%f)!!{Vd&1x3vmrV2d=fNM|O}BZhE?uNm`J^eSH4`Tw-1!5fQu9wdI@RAMAQChpp|p z(-@dl;3ab1GJa>~$+ux|cdzAlMu3^B2DPYCTpfYJ^CR|l-T_xti#`%h@=?6-zP_se zm5_I}s-N=3d`a^9a2i9xA)8)~mtk>xo4v7m@2o-KeL!AAyn*O5CN;(z(cJ6d7UKq7 zzS=w2EPj3F2XhY5U&ehS5N$Z;m?>mm-|Wtri#|b)dc(OrE8g^_c0)b#l^jrcW^Se9 z^a9&Fa4HodS3qa{52=v;;u7G47~VAuw-;lDCttlslJ7w|{{UJ{Kh#u$KEW;Tc zNaXprK7&LEeZW#BTXw`XS2k@$BZ^H~5=KYrQ zC^nQjw;XsG2=s*;VwqtlItbU@th&<4eF8zak`|pY4F}b=JGP)#@yiRDSzl?_XPNN8 zk-^^DjP3>cwg7dTVGCOynN*MKoq)G7U!!+7F_-R)%lK-PmX~GX@AUxCH6Ieb$%G;8 zvPS0Ii*m!0S|p#8=#*rzQ2PiOrG!Mr_O2O^n2V`(voQ_wTYM34oE*B9n(zz7&cwK^>{t6{L*o0NDyAW7unlN z?KQyeI#ot<=Q7r(mr1KmzhkvvA)#$8z*#(@9gb&4Dhur1e`GC(2ee6 z-+(be9hqa;I5)G=t;ILk5oKlho+0t?GG4T@llhIR2xG$<0O6aMZ=8hFI#(^fHoBJ} zWEgahZ#A;lZll!A9W0Cg8ya(0Tszs2XqRov00#S!A%xB7-rDKq#1!e*4g2 z`ZrHAEm~jfyQOq)iT>=Qd;9%4(7m-MbZ-+9x;IaE)DkTc-5a&xTuivW*&;vu1Tqd4 zPM+co(mg(`xm=2w@r?2(paGVJC8QV#l{{l1tMZhtZC-Ukka((6goNo;6eQM*AW<9> z`S&Gn+Ex2UbEG_F1Zr576(~wwLuOUh;@v2gYgD2sfcmIV^AX;pOE*_jSzjj(C0q62x9{ z&z=#@7Xl_mJ0X*cIm5}`pnV&+e{s`@zf_@G+8BAjMRWyf2YdIwA~2)82aX_A;w_df zpm6xZ#TOjygy76+*jlY_lRE~h&XB!^&Ufrh!`8YN;hPt)s%<9;8i*h`d|_6@zXfuj zR`nac(?{Hcd=Z%q9Dg?5tra)So{i}?lf!D7H>~t8IscojNF2d{0omQ;siLeUT$-Eh zaa_Ucj5XYS@bh7L%7l1%Y1rPv;k9QE22(w{xSdp^00HwW=ExTzAeD%p?p`+`R%7ke z1#@a`pHx)(AL{ROo6ZmoR0QW3Sv{6!dZqPxKUEsa{%kGOd@!nHD)>iY*=k{rJQR+x zHg{*B^jL*yiwZ?>-gXxdBNW|5KbhzxbhxKZ`7Yh{C>DVswc<*4nTfD2T{ZmTgpnNX-g5pa7 zzjy@%ih+*z#H1nZgk1k9PL=bw4!`HT=MFr(?1$ezi|BgW{n;|=IoCr)NBfeE#47x7 zAkvND;zFhJy>Zow;jE$9m;B>%84J|4rr*#lsagD-FE`doOP!q;RL>tsK-Q@$4P3z}v1cwWVARhK4k z8yYEprt(#&ukLWzgbcOnYlJcZIil&vxvGSEl~QYye4F@{*uYm>Zut99mn|&D%t4OE zhoy+z$^KNuG0>V%t_D;$*O1oPbl3e8LvXNjz55LGq>A2@UGvlk4PF(Vv^`{R z!5!W6dSVgKW$W7f)~{7_1466Ih&b10@zTpMp3n+p>gG;AzVV{f`O7T7RyRVcyNh3i zC76XCpsSQf;acU`#JL=V9Eah7xJkJ@BO(7F_2|q}=f-aSb_0Lmy`oGXSPuz0)c*kE z4#786U6X`aqv5Bj&hK}%x-}{QYa86>_!8M(Kk97q*i^L8{1&dk*zKsb;rvKyU7D&j zzx7P5E)!4GTJOeh6y0B|y9dGNYjwZqCN0<1H6F_B290Hj>2eG!*_SePM_V=^3Ra9 zE-%jP@d?(FxE~T|u?BCK4ro$KGU+wJVuq%*nzTS9t^~?i$)o+{jXSKx8T6o&B(F|* z#Mm{y9&!{y^zE&TUE9NH8<=d`LM295TIH-srus?s1%11uodIX9CTn|hvKJn?(UA4w z%^vYt*JjfXr30&R8r7u>&VBex!9@81v0-FmAFoE(NJyKxK z+(_r{CiO>wIp<|Bb&5*5FlKn2C@7yS8Xm61c4?czdwLOwtMO6k1k? zgxjJ93#(IDP=sCeQv$`q%`MM?sC7uUAK5L<-QcTNK;y^!JE61fIwE*Ql{-N^2T7{8$fE_4PmD4 zzOBxy-ThTk+$^V%`cL>GC9gIm&u6kLKAM5xch?S`fJzm;0+y}MXbW#a5}P8 z#{&t0Lt2LMf7Y=@L~Fy_!YDE%(5y+)Cm9P2Fj{ zjwSe?FD-@sOQC-mKs@@VsuZ+?U@1Lalq%7fq6#YvnsZr(ois!?6FGoQaF-my$ zrA~SknxsU3DMchlnK!*r=1*pnK`%VQ_@Wp(^vl=0Q3iAM5k{FK>m#d_{<@LgI?x1Y zJ=z0Lflk81N8f)2$5zTHZseiW-0$o_(`aoy4Jz`;u{ry!KvORzJ=y6+kfBOSitb7~ z_Xp!MLw`Xbzz~}UdlcC0?;pVGEAJWQlXx?!5)hHrNtBuhkE5$R<#oSPP1$)k;d!lB zRZI!5*-tmpyU<;8KYB2lc-a&`HIE%Y-~;DyjPB9!mawALoPBzrDdZE9yZvbN=I_>S zC9AI7qzx}Ky-6{XCK_7vZFW`~el$5vAAjtrVv1+&Xo|*4MI%eRpx+365li8x*>W;0 zqVH{wx>hHt3;sVEeRcnGheut6^LEy%M5XhS9CX}DXN#yYsJX9tVl7X^T7gbKgvYZ~ zwygpk(*9Bun2f;MbVOQQwuApNROR>hSu_|G4TheeyM7k~?!iRj`7Z|MhTfX4^_4fJ z>!3GUsqE@bDhuL>gNi2dZEYX}3w#LaLKwO#9-`x>1X^>y0#Q7=a&>cdK_}V@Ai@Nv z)SGJE^tvZH-lhvG(_}&*atMV+H1@(&^OLH9Nbge9iEwmyK3!#-o~6SANlmRee7OY1 z_^+UMS4cOnEN{9hy)t%H20aTjaTqpzWUQKA9vhPgw7!>t@tfA3KtHm4yG*ap*F7;T z;3+<=GyNp#K+v~0km^)+aZ;S~fiPKl*FLiC)_;Ya;T$N-v_|mFBA9rsa!0uK>KyjV zMx>RBNCUn{q_>PvVx^(C9n$#`80N{7XkT+ytz? zA%7s+3tb^g9w09!T0+o=3$X=M)n)uN@=IdB;qdLA6qDi?k<=-yq^?CtA?NrPX_W`G zF4XJ2o%0i&YxVc$S~3T9nk#)%`$7E!k;VCDK9j5c=Zth#4*YUE~>a zvQ?G7mP6@_*+F9y0omOJbDL&34uw&OzLn+E#a`A#bVN8 zzX2U6W1|v(mN7;L%)6P(BiB9sfo}uoYoQ)efXwSD+FwR$OHJV#E^f`aYmM?PIX^Rv z=~pJ3l?MvflKErF;Hfy;3TtULubF@pva{6EedaZ~+=uCP-|ZMgt0D)P7k!l*X*QBh zkW*C|yTdPqM?Un66HKW%!Q@b7_kOd^t38xyzXFDYeChIeViu6^N#K+6=q)`22u}gd z#3sPd`eBAbAi+8w+Ct}gGQtddz>Qg^`!lonK3lrqYP#QHnjbtJ>p+?Io(vv*=pYY! zO^%Tm3$#Uin*`5l`u~=BjkSV#D(&NS5cz1m-I;SPO9%D`7t;gx#DDJqx-^sqjpp=+ms`fT%@^=36p&5)2yJ_6r7Q z3mGG&l5{MRbkCdGAGYtkTect>kr4W2PU`E#P2nmE-ELqX*ejV1l3);1xQ3&ByjT0> zl_-TtqzFlWfJVZ;no8^rR;oA3vAAL1q$5!4q1@mapp`2dy4I1OB8X0Q zc=$*a*s)nDc0hUR%5wivB}0x>iSPrwAY`V54O4h5_aD`ar_o4;rkOd?Sy7z~M6Wp>L@!D~^xPDSjie#4m==CCK3fxX z(2`bqY&NnBoBc;sZoBFDRjv-g+FGUXnqu{T(aEoUjvAG{rAEQ=NEO}xiyA+iaQr?h zk82-2-7{Z!-1UaE0spekV7>nh;m(2YbI-W9P983Ln+Lhcz2PjFml5ssDKN8)XzAQA zWMZq9$D#XYoW^;GKcl(bqWrz8+hEs~_n?$bGkYKcTH;^gca6!&cyy}i zmr%-!$uSSFQ^w0ko2*&%2u0RrpecN(yzoOEGft*EmCn1N)^{>IeZzL%2snE}g@5&) zwS60t?b{t6d(8H+xbctO@uFn=cEtyFYu~IJ74BBSu4EHGl3{r_mGn+lVaEF{GgbDi zXRvS8!MGj9?JGt_qcvUs57A4HM*(H}LQYIJ99mno^tc=(0A1j%hQ03=H28bc^bIPJYkHI$BSAaSfSURHVUb8dzSIjTsx!Z zvc!D6zb4m!!tL^eyK?+mTsYfi4saKY_gtWzmj%^=mhmgy^Eg{OK3G23IrF@LHExYN z;fVP@D^5%6lUAQd#4}`9Vf=sF{5CXfv-Ebq_&g~{^TM$oD*{5!jr~K;op~YWo&w&W zrt`~eir=xKw1U0K{08%<3+n2Drd9BaqEJvJli`r_w%Hdei4etyZ0Vu+n5y^~2Py>b zwsQ-p*sGeexaLoHt#P}PC@7q!fb~$&Xu#~D;7Rk&L%~P4cSXUNsfr#C1qXTRzW%o2 zCJxTpB=#w9KID^7gkt9uW2E5J8^ZpqI z{5MN@+K&~8A?H>FzXDxA&m2&JE}#z@cT*t$On$urFNw3ayE1{o`xSi;{U_lad4IB@ zdk@&}39yCeFM_m_5dZbJyF$G8Hx-T^#Q(^Xv7fFus~h;3UlgRkXH~ZeeYObnTHRIG zEA$NLeAYPi-xun`j#f_ez#2brnE!OS~y({xwAzYXon-KCr@IB z_0-mnU3O8>$k4F!R>*0Ao9!P~P8pRQ+OsbZneQjCdskg%$az1W9~w5R|6K7wtzaa< zhiLNze28vs5&xr(^B~cXGY$GgT7_eNj)xR0Z8ahHu3gD~=FU&^{79WYWdYle^XCE{ zgs^a3YTRutZX{LVLzm{=V>S1#-&a3ln9XrdbH0t8yDZ(=5^&ZbM)A?uw$tWBzQ}v? zYAb7&U|cC#J2zYt>=gtii5AYTdp|zZPORd9O|qrSshw<<+fGE)*^={1R`bb}RI}|Z z^3?Pis~<_mIu0CNJExwXy0Ze2jw~zsH3%$B2%+;5achCZxIFdwiJxC?wp{=YlfDid z*nuFHyXHoTZX+5Cx$Rc35Rl;TES(e!bT$6m(t9-v2~waYvkTs#+b`fBk~;3Vz}poz z?ED415GeLTf>0}`TxBqGw?CcmmAcGI=aYDGr86U^a@g1V&pn4${rYQ)ov+g*cLN@1 z>K#^KHb$DXs?u2i_(P$+a#E!~+cmcG2e^MW_* zSwnV9Xv^XcK)2#6L{QS)%L#Wi0sN`RBnOS@GPqDAuuI_&|<>#))J~pK->|0Y=vU=|6W!4J+$iTT+l2)uM zX{|efT~`tf6f9a1ALTB2sYp_nOU=~lo z<<^Q;DXOHU?lg=XcF6{70UP}=dnbc=QTwi4@^35lQ&PLwOO_!8!Rz1b!q@G{r}J%V z6n676U$|uRv7z$4Dg%``pC1t_O{a&TZDJD|chu&G3t4@sC#$UA`)BgAp=R4&Bw+`@Rj$()&4A#wzAXt|l>P`fn$5(+G^?D=|I3mk~d=^n#7H^Y8lBd8|1} zS%Gc)f~-WPGCT*h3HWw_4C_Aj8&5FXhb7o20#3ePaIMS`DtsY@?faE>plgUbdEmR) zO7pNwrKk^)|JUTurq`4|YLVx~jklw1_8O7k{6gaL`m!$(u~~@u%(EsbX>Ym-(*Ah4 zk~VU#lp2aAt#U^B<&0gN=B}<~Bh}v60m^3TO~bwuXz{Gl+T4bYUXWq!;7EtB_JW3e z2O;CSVH#!@9py(xT*cBv?eNIHjM|H-?v06@swB#iM%Bgt+ORL1a%wj=D z@c5b`>*B3#6><kjf=_s1zTz#`sHZ^{d6InpAGiHKwb#=+g85zz> zXA6$a;;!D}{$!ncIor{S{#~8Z7m_TV&RF}#;bgKN4|R7d9*yM7k@Otnj@Stc8h-0K%kQUFyRnLmAC%{s10JsbqjK3+PaOMcahVvK3>KVONp#rG5{xQg97W0N2t?~js zH7`i$lK>qvFO)HQKow&&5q;0soW_zLAzhiiGR&4I|5ZlQ&Y_ z%wg8JKJQPJaKTphucJ%>b5aF-*DD}{0^B;jRYlBHo^*KavR_e=)2efuR+kO<_dBnl z3Jpv!H%3Jn_d&NYHZzSnq-nEh{>RpYOqZ*B9SyJwTpIT88GVLqMFX*;r*>QnQdxYv zlHX5%&ab7>`9rpbW4V`Hj}O?N9tD?ySa#o_vuX<=#jOa8;L0As!WL|-^Zd@1c;;Oe z+shMsS-28{p1&=g;cT(Sy+hoQHEzep)&+l&FJ9vO$6PHbf|Np4j6@jD3`+yIbX!mLRU6@^ULhW;^%>CAY{nG?4W zjM&0GK5l(`a!=4z-wI|15SmV6z*maagyNLnWn9UTP@W?2G>9Ry^-~t*_B*Sbj}&dl zRD-r*T~wpY(9H&IzlZw;ZC|4g?oTT{71K3(Qcr8#MGu2t505R1$DYc>Kq)tuGJrmy zch<7QB`1S?Y+D!XEafaGxuM6^1K*q?^;8ddO|Rnz4%7O^5BM@y1JQwhHc5R>k>Uyz zvg^HEpXgU9i2AkB|3?rNt-AFk~q>c{`4=d|GcOXLSZ`CTq zW?l=b)A50a@m0tPAPi~Q&OOl11ERkmMNye#7($DmcWF{T@y!{;@&yAQM-^O^-nui3 zk)e4+h8*`1S;;UlBAR`_h8DKZ*%FFAsG3mpK`n+|H!iCzY(u4KBro3gs<|$7u3gz(mhNcUph{qG?_NKJD!o&bexLd z>Z*^6g56aoe}KQYIvQeh7VOW{F~j?@Ge@oZFKMuDtM!(f`1Sn z(nSS7Kc#{X5EVSnsNkxB_Zq98r~>|)DBugbDB#nNtAM|b3^oe*%~f3#@K>J}82m>H zxJR$uoHTX+h&+_Wk7Twj=gM@r{bDklZkNG#2*9d6&(qJywNcNI0Q(yf-)sUbCamu%6&Hz~R4hDQDw71E=e+Kd|4w;%-1dC$@&B*wN$#K3ZHgkIhpA&~ zf|4ZFPvgTw&fPhoVKWR)e&=E_rnny7$c+c0wXfP_h z$xgSLEwS@7*(A64sHpBorfJC}JDMJ=UxTW)kd$Kt2NU3LSOna_1}1=msL zbFYn2aQ&eYa2zT_r{wK(poXK@$#Phn$pWPMP8nNWO*q;UZ}}+NrAcZiwexo z+n$^M`~PEmG-|yw6gD}*t(B9RcQ9~uRKYc7`f4@a3l+%}mY^X1rRK1a))fu=R`G7u zWlS^BNM`(QH-~dA$k;xnR~p+&VkkjzH=>+aC;zB;jupI~OMxLPwKeo%_%sMXqj zk^LF9nWV-0GTp7qmb;$ZvDHkwnG1hK=E4Q?bGqzrDvhm?#y&y`Om4wcTKqI`maFsL z9+D#S-fV8Z*u3{w%uZ3?%)A$Ql4jzx7t5rT@pDje-rM?ChWpwxN1FJ0!k0#VZ4~m7 zVIY>fR7BJqfh7ql-lOajq7# z%6URXxlotY_zOX9EVCaV@A$5{Z(`}XW1+d9Kze*G8Qwm$j5DPSHrdUn`#P^*Vgvg4 zb=<7CxCwKEi$YqwOd_}+V^?w_W&40|oh;}SlpJXq9%`CZ#^O1p?e*351h66{4Pg5Ml)77ZGZv#$$Nv}@iVD#2U*>+! zo@S4p{2zHH66TnS--(d7M1P?E!8+dirRwi;FR5NVW-MrloRbZX_ zlndX6tzbLdJ19@F+?uQC+33fP)HA+(`0XT+nGfmc(=nK?02T! zYeTgAhyUa0SeU3j%vFXkuM~+P&Q|~p*G%Ko6>Rr0)!Bf}6B=VT` z$Lp?7tpbO26?m6fdhB3Gv)v_ zcr^Nl?1+!z4AQnaJ(r8+FFqnNH!H2KckJO4KS?B7Kh21L8FP}l2*?84C$iM`uSD+M z_w>bDWE}Y<39D8$OKlU{SZ>@-@fks$2>2avq8EnE-lVm@eIhf89=*2*qGz$@&$=Cp{v%*AR_*8$zjTye$e-WiEER{H z=khm01vb}qz5Y1AMXn92AK?<1IPs<~78u3f0)s!$7m&4M$=!)Se3|zd$IIDyAkiW^|I_zXDHSl=hoo4D8+xh(pRJD@nVZrEzwu&JXL9n$4~>)v0}nISs>^=AIC zp|8P|>HdJ7G&>QojyEmty`&jLWOqfx{1_mo9sJTberYkkbc0`x{N#76`dr+XUr$v$ zF7TW#p38rP1X)jhimRYwuUa{pZ{R_0wwdi+%XTkdwViOji) z+>d7W6^ETGQv}8&tglC~f)kg$6SB^Hj6M@v%JK>SovAxEb(CYCp+q<$2-GKuSrOV4;9cOl-U z#4&S2%tdsBAMgGiV&%EN$Z)tnUkEHm?Y82mT_xjzEmNyf8S$!(I@Kv}=Z!f;$*`Tf z)aAzc82DIv#yu`DZo23y&MS5-%*-q{-|wrkxr^XZhCRUo)a0 z&y6@28RAI;!E0Hi;8T6Ek?9wOFBg4fc7Kr!hH0! zsmS$2#dYS%6BT>PJ?U;l#V+%h6cyu5-lV8_%e+mBiZN8zW&Jha;7_s9S;ewXa=EAA zAMx{2Jmd-J)!=Z#8h83oS!K$(Xd;DJ1v}x1f6eF*h?nq!dL%O1Jy=uU1MWT}TO_%@g=2`>;{h03bmpoLHqKRblpgaEh4vuM|A z{B5-g*6R|@_{=GQ1Ns|KVy?N7t94aG)@WqF5rNU?eogDT=m7cN0Ohh$F;P}%EJ|QG zN4JBlkk0ej1Xu=SoRrZJ5 zDbEe7g)l{EdX#G}DxdE6Aj`(y`H@{N3TC1%=BzH z#z=s7R~{}#1^8%9#E)hU{x!-JwfVC}zEz1_D;2p`P^RP^G-F+6#|V9dOGVE0xi=&P zoU}(7{bjvqD$uM^POR~JYR^pMzB!}2V$uR?W#pLfk>o}jp|}foANtkfNBs%`wU$7R zS6bh~(up=xae!X#%u&r`bMzD>2Z{-PZMPV)MSHt-8@$t_P7fmyWwS+joUQ=rDqrNF zdgMzg=tI<%FhWeWQb)9e9W+McT4l#(_z^EVCE|mFTgZoW>5ThGiWF55`z$eltWp&* z_qzcFD~J)W4k)x$3?yFziE$<=pWzCB7O^>)*U-_ zguTKMuARw-qzUVW-OS7?cpS;FE2G1B9Xe#h;9fYeU6hm7JI{rahQ3vy40`!@Xad}Y zujIsi@_Oxz>>-JGG0gWb{tn8gAE5|-K$_40MK=LY%IDR8 ze*eay`VV%G&!zu-^%(lkm|z$E=a`DmpURG?_?!;qq6T@2k01SsCr|Nt!aOB~)EmR~ zWl~7ZHU%bylvjRINPUZMYgjM1SoEF0;W5$02lpTGOS@3HPD#ZNcfu-n-i1cvnM2uV zJb2@Fy5hchi2m~v5x?Vhpc^}DI-Mi7;~cR@I7C$7H~4#1o(h2(?(LxJ@lDI}t*=ZFT9$5zV8 zQ|unPOl)GWxlh)JjYW3tV<^qM>#J%T`wK7Kq2Ev1#?&G-k*)gxz9<1-_)n4%+oHj`QCK%^zq;I-DBpd z7K(O@KZdo#l+r66LIvyDu|vi;jj4^AA{ZtjtKq4}5zVjvbJ^S{8Od z#a6+7(leKnZpgdO5^hPl{3&zIovzmjJK3?GzpV4D&Sw>p?D>P#0{wrvNJSXDkslDLhwOYhlDPpZ# z;T3VGS42};hRkS7MIjWk3E*TRTXo2Gh>Yidy)G~=6nos2Jr*0@7u$5XHR#dVP$bvK zr<&{2)#kd~=4v~c*FAlDnmq&${KhI|b>#A2=3++UEbu=4OsL}J{$fGT7E%2MZigY{ z=AtV}l$)W~$c@!kRBo$pFu%ZR+`!_LRggQE7oq5lS)u5i%x;H%hyCqC(R=z=M(=b3 ze|}UH5o^$$+xfXi=eDn0ewwtlY#BdS8>?jrmGLy@VQ@JucR;CTxY1ZGFXNpx==-HK znM;wmbaR<(E>-4IYA!|Ql4mYC z=8|SEGR2bm%tbUVo?6W1DRX(mT$Y$iyZ&>vr+C zlfTXUwea^8e~<9Dgui;>vFY+NS$?YIr&NB5y3F6L74!B6#E0XbSwxk*fx+)~!m<9b z8wS}ULx=`weG+K+>=!hsmQAL1*Rt=x{7m&3XxuS-w#2%PJV4e7d&(I>U`6L2pr(U1Q-^Dd70qZb_D8KVdQu7fWNA6|*%AS!s@RIT;*3+a`YvEcx z3C6~JJ)mp6<*^aJU`iQ;eq;8*WoI|WNAKxq-Jj{KY<17}ZN7Eo&4ul(8uMv*b&<75 zHa*0UaoTY+evOQjm^g06OUS61SVj))agScLEc8%f`f*Eq31E>i`@`Vm)YOjc0b$r-7)Cuhu0(;&&I<#+9XtN#L@hD=r z$@tlEGxjkVk56N-D_X8PaNH7~G#NiVZpM0(asP2L&brRv?>%t17aaaZak%%Axi<%$ zZRLfVIj7=gEh0b+%+Y}-m~06oUZ4;UlP!wL7R6+XVzNas*`kk;Ob9>+w zep);Wr<}s}NbAiMA)5WNn!b zop^@GbkVOTs8#b-R+?nZd+1f<#;eq;fQsN0972HS~=7_x`F=)U3f76J6j{3Rki ztb*U>*PEMX@~4}d=kh0WgYiwq>45Ae!pT``y=T>e*s2qyT&nb05&DVq7~ph>kI-*nZb`j+HNiR&|SH&iv<4ov>Wk0#GOfmFeDbYx3b;yDmC_D&PKk9XKwy^F>EG@43<-5C5?vytE-%V5Pof@2R_qlL zk;9koujj`7@1JrO=ps$z(ewRoctG61kK+5i`do8hqPG-rxc@2cntD7UN2eywUXCr7 z%Is)Q5|n_WdRCtueehw@!>I1^+8Ipvg!6Qh-g6$@kMs;eYk@d`ME3TmJ5M|jGJhs# zJ<92s^7KEC>(O6l+R?$`sD2suGpV}Rjx3iV(`Nl9eznu?E}`pTryc);=8I(lwvjng z_{*T84d=7?AadMJj?Pn)mzZ4U%%)i8csxklAFH35X(?8|^Ss=YbO|L<^o{b7xPMc= zdpo&tggb}XNeNd_Z zic)sUe%yIJ+Q$zokR~O8Quh@|MA#Sz;xi&manCwk9bs=4;*mGzRJ3G14?)R8(tg>s z<+5TG(I~5Sw?Je?>MY1_T_muk3Sa`5ZiVIC>lez@lm#fkU+Pntr5!>~9%U!bbFsS~ z=px-sdzQKY`(k-;ExOowo(t!+EPh1Zdj7sR>tE9SK$pR%X?Ls1VY;h_xFqvO7s}Ui zq|1+zyYqKCWJknP4AL78R~ef6?uF9N^>pzmVedN|74>bMQ%}7+62I$FibKB_9CdDGFEL?9YQGUDhn~kQen?%QA6+ESv`f@ES{wg!B@Ai&WzzT& zhgQxBAOE7IcI+WJCMYSYb|9)?Jn2UZ1)6^Bz989;cPP}|6FCG9hxa3i7UK`(v5~_v zaQAcSV?X5hnwCg=dQ@K-iU;?pY3z}{#|F`Yo>A7Y>nud70=A^ z95u0P{F#1nbWi5%-c|Z3&!+$|xqijFUhiFNyz4yg`UCI!gm-QBuK)C|pUHK})zmnK zzZ?0R!r!g@-O1lQ{6+Y4_i=z~(G`}lwLPTQ@>$f&&{=tK;OJZMP7sfQ%o zWj|ID$%90G!XRr%#5YLA5KPk-Ms;6mFcPRcb)$c%t zyMT?CyLjn36a<&iT#R%wi5DYXsXO*NVx(K>BA&XOukpHkNEmo5_Zj(ils1Cw$pQpA z*t71hrl+!YSv=$eJNlS(ii;UD9+L?;Ps&@-#~v|HkC}^1)p@tfTw2Vf-CQ=C%XV|w zX)dn0>@t_V<|6tdr&T?sBY@E&VwoocNjjv7&O*^5U~olOEc1NxP7^s2gwL_2q(z?; zZjwzeN7g>pv$m%)Pu$n)`t0caVt%k=KNG|vfTD|J3yWvvE4yux;8Mi8y8`avxj)b6 z$g5c9^QVg`@@ILZa31S4IU}TPQ2|dP`$4j?2hmslc;e3}O=+Av^Q5XAgJMPhSa^`bfzEQ8|Kgnk=&FlOOzB9OP5L*=e zxJ(>H4zaT~6qt9nnsncA=S>a6RJ7q?z#nZ`qDW|Hl1nU8u-X>LzM2lT z1q8Ju_Tfk*YH$QTJY9xUFZFp?8;0X4?>ww6=X2h9Si31p-+5SjBU9gbSo^tF>lmy# z25XLowV_gNG_pkMLya+)r??oLM4io&)K##1cu{#J+P%i3=5^7xh%*w1B;zO}3Lg_n zxjS+uuQKo_ja{ANuKOSx$U6d?A-ionLeFwfd6%S^^9V`q>D#%FKCPg8T0lt@l7fy{ zOiQ%eeT{<8r!~!a$d!hY`nIHsTD8=qh~Pk#QiJ!Tj)BDFYY#f*ZOEx6UW0?m9Z~hX zP^VDLKg=#!Id4$7@CAtEpGc*!Pfq6@d%lv3``bB(4W(Pcq7FHEl;Y0q1zn~uml6#m z)0a!SA#xGnoih~!P-#zI*Yjf=-men8IhptV#53tG$S>6tRr<;=`JmF-X-CJ3W-J>* zhB>8=*OiUytVV3pX?p_Zpru|x=Z>45Tc*bQI}HoKHmAZB{#t?%NUtt&tqRwhb%gPU zDz%-cv@;wF<_DLn>?m1fRjhJ0yM-@iqhHiXG(#TH==ic05zY_FCfDU98?DA)QGLl8 ztMMmXpOx(b#KWq}{jPp!Ex217ullqUk2lx-3X+mlfj>!ZQ%!KaP(V0;HmAk*e}yV{ zSdG$cYw20UIRuA=^Q!~a_glpd6f9X^djSR`UtK2KjMttmcmg{DND#Gcpdf0K>$`^o zh#!>lpZr_Edh+$4^J!(tyLFj?Kc>fN!w-@qbwX`p&;nq?np!y}XJ;h6BB`seYT_~jF;6k&og&Wkb{XXlV7KANN?v3vV zyDStMkb#}{mD0We(!Pa~7R&rSbMOwq0t09f&v)<~go9Z@%KcToLQCc%?v}fNm{>6F zDT}4Xkh5COg5M`W(9-A7zP@Q4Vz>-Dip>z--DV>cx5t}8B(+5xIaXU3*-Ll~`CFyl z4DzF$@c06c$hK`QtAv$_&Y<|#v;H_+`l7j)Q1SiSI@6s*3zN8>vW@#T#e;kz z08ESbr@~9L-?=5{8oIo7wh~ijzOw>P_b(r9Cgw8|0cI1~E?9(?beYq5) zEkCNj!m?73jLg#WF7FY3i{;)Xb=+_2Alfn&2yobWny@MR)*e27$ad3=4xX@QZx2q2 zFYAv7OWl{YMOTyp4}9UGJ5 z{^=BXX*I3}LqWzNE`eAe!9jkrrqPqDX6;Vc4-+BwaMYW45Vi5U8~UcjZ|CM_DefEG zMC4`yH$Rdaj&koKd=|foo9%KF;ASvf7%%2#q}&YV<|es0kDJ@%W&rKGhZ}lA#dn

g5D^IhdDlht3B&dn;eJmCdFbY3{cfe>@TOUB2zuBARIDq_y*- z)lI$9Ht_cfe{b;T^7j#c`}yLH>j}LwnuffSrOy!1QHLZ0%NoQ!%Qc=APEiXpN3#=BJxus6XQ}7zU2(@quI(FM4VLP6(C>j=#<5(J4Knlhp{l3e+-pNFTFEajZvpo)nMh%svT4l*`Kba zi}OJfLov?wtX&_thCmzS2p^B-1~u@g%C3 zK3a`g+&QYn>K5<|R@R>Hsj%)1f9<5(i5s#RpV6p=a-$I$H6rb}(_WpUQ{kwV;1p8|!YNrOXOFDGr zwL@Vae}`|r0^=F@{gThzhxkV5&zrZWh>!8A^ZeC3G#@sSa?@+iKts?&SY^TxZ~|E& zCo7t+rLW?#YqT1V*ai+_WRS(VwXNRZuv3=8KN^sgV!*%W%^!3x*4kkLk)A88I zo9oBvt_3h+gHidh^Xoo=_|@o&5S%|5g~C(2QG?ASbJ0{uM15cI6wQ{MUPS2%5rw^73z15HErlOk)WRcZg`k@VlR+Q3z9}2To1sld(wHTxmk^;QM{u@ zhsfUSx`{z&Ty3SZk>Pn@ z*5U&o46)<4?){j%uxtn*OYNfm#j;0-WBpFIOJ1ARtFmN^6%pGGdGoA$?~^-cbHiI_ zr=``;?U{HX^1{xr!fs zU0Y*)v&9;_vBr93#AfbU&3ff3T%4x`aKW1v+T1Wn&iO~>ly(YZLq@#xJN@DHD^5lVH1#7A zs70!KKe12-FFUcp_Wew03?jK->{SXhW{Pr>J@svLpO^_%IEE~fYcYl%&0368F?*O= zt!HElNlXfSCPB760vdzKF>kWXt1vz*2JDfMT<0tbOq`SqLy(<+2s;=nhY*GHv&LMP zJlY`gK6@nmTKG8RxK3a~*!j4yLE24tUBJ2NQXMi%w$IG*bdS28L@UTJVn?6Je+;Y+ zNyvE>c*(F5D1P`0#EQX|8+i~xO5e&zYohLhczMuyg*;ctgo->nI_ZlQecNfnd1u~f z${*I!6J*yzzRoUHdRsf^{Yu{|jz+3`Ne&Sy2>AY)U|+~Ltovj?P!R{kFj&6yI?+m~ zSC({`eoofDX)goli}#&EZt>|6bzFj7mT+a32FjdQfwM?AB!eJVp(PetBMtr`cd=3g zK|9u)@HMgQFNaHZi6D5&q-{HU+ii(&p$RP z0OUa&%#i?F=Db5-6xX@qL;@u96QJTBJEF;diENZYrVr!A_@_B-x~?w=wlD-4HfKn$Hq+rrH*vHY`xb0S@@f@#?ishp#$2-Hth@7$1F&s; zxv{L7UulUMpG9fPV~i%GSG@yN_OLq@Bd!djKO|C5HYV8fyy-4mRjEeWmnwU1qN0p% z5Gh`v#BaW_QF|}QAH^$eE#u8AGJsq${eY)DF=$}GyiM?2t4sTNf@IlmIW<(EP>uCMq9X5? zdV>YSgbWbY(m(z}NYyDXVh6F9kgc6)4^648wtZ_Wr~FD}zUWb(1wg6w({;d|k+`e5z2o zP_gr{j4~4Jw|EV*X^FgJbJ7o@_o)O646B@AE&eKRjA)O^@E}5uqoj~HHA@igF;}`2A>lkBEtWl@e=0~vJI_tUgQwM#Ks|P#kqUl>8bqLBarh< z5#@srJI;L&@@-*{uUABw$dls>Ic{+la9&^Y$*&Op9Kl#FXB3SA_q0{SxC{aXY!Zyn z_rO9(3`U?N6apmx>AsIuL3zgX&P+d^%dhA2q&(^}*gjtcM3aN=Udhr4bQrLlVjDTvt4YSHmz)!61NgsgCE=)NhtQPn1+XulTbz^Wl15Es4OxhJnN zQ8&vTc59KfAdL-eN{eqTt{Z4OKJ{T5LrqOp@JeFIRN?qmX;*ylruF_}ON5e_yaM z&k4$p+?XH;wwAskgPTD*L!7iL2-Y$0WLWpk=i?f7`nDF_d{FifdjXYn7Ka(HwA0B} z*eW?YLcF4eqMAVAX0k+Y&4c=8^|RBjF2IedwCUDj3N7mRl4OhCTGW9vRd-rCjaohj zCO$?!e8JAI;FF_t-fBKFChp^t&(WA~eDTIya`eVvqhpH-wv_E;J~WY5!+^HK+3igt zE0NGGoRJvoH@ak{)%X_nhi8!x^l-g<;Iz-W19dfTKSw`)Lbfjm)Nk?0QGgnFp795s zdzmJoUKM+SgtLm@r7wY&_x%t|p#ELU4b$GRb23WGziY}%eseFMSrM^s*s*(x*pJ7# zIxkSNVaCaJ0y%U`0-_=?`NEE$Yw>Gp3R|tE?Y7fXC@sgMG`hj4&@+zP$Y3GD$d&9$ zCJm~;r#P+dLcn-*5&8qN(HyBf2*Ii(#g?5Eq#@@!B6L}Oaoj-SyGD$%v^z-}tju*Q zVsx-DkJOx!qL>;?QvJTZR^z9FD{2Uod@utUTh>3ZA$~!C6Bgy9%A@tBr`;wvPD6E~ z zY0J^d_gBmK>Lbghn&>hqnx~p*laxm%<7ki)e7Nda9g@Gt=WZLH$SW~5JWe{bQ1V^! z>bKr23@Nf@Bx>$&^XqB0%z6O<1$Gy@9A?x|)OZV}Q zYuA4nzVvi?k$%X(u6cN?V>aWp9ksK@>8z;Oj;X~m>|7a$tPq<*nzi^ne%Xb9NtBG; za@=IdnZ;J9Q+Ec2O+&dA{g>h04aHW7avP3L-%e2RnV$aWT(iqzllLbVNohgnyg=(a zKK#RD{tbMV7M{Y139rvRuhZUOJ60u4a>l;Kn4bNbdm(XfY>iB=IqxLapo2;%{^UT( zvv$3VQ1|L z=tsEc2PQH9V8a-5+wtX#@fj&)79tbIQqP!+1l!LdO8xx2v^tiObQKE?ZL&<;Sakv} zpv?V2q0DNn1#@V@A5h3QxwXWMvcO_B-a^uzkvfgU0(UIqTkVO??ZjZroa(-NE&kYN zI};}q{#2)(w^s+9<^{mdeSQd(Rq}e!8uz?f;?wx&D=p3@uw`R{rj*Ic`1K!HqN!|uacHPN35U<%sXb;DY?usKwb~~erkWW2= z!)9H2=OCxzQb;)GPkO)vj(NE+XXAJg78}(DdLv#1dG2f1VWb{cRPu6N2qW&L}H8_OL+VeW3Ytm8wz6W_aGYRlGa*QBy#OSVmt zt(|Q3E97A3wAw+D6;;9o8jl=EWqzYKnLi$TkOez=Em;M}^%okfxAE*$6faLp%R!%> zcWoGt7xDz1?aX^*D}w`#>*ifj?)1fKHV?rV$QiOV(e7*A^O4L1TS(}aXlFVX*z>W| z9%jZGYTem0{1azF0%;f*41Tqa$uJ@ph5f2VjD8 zDJ4?O&FS2jnIRh2oVSMTsEMq2gmQXVjenq&$cj>dFFr;*v{ej;2Dp@hAqJStdSa$8 z*=jrOP2+G!Q@R;)e}Ifsx_CwyHm z?-W^xyHb&LHcmCp%$uFtr@AArp;-e`0*d5n=ZOXM%{_DQ!9>a5tda5Ki>IRqpe`cn z2m*{qS2<(FS|n@BtkdhgEQ}7>5sc0%icY&UNy2sWQnY16Mzo?Bycr6sJuQWz6Ot&Z z%~bT5hzi*IfeQ?&w1YG_X{yHtjGo?;AU0}e$0s@C)SGOw_kn~T#;;=XO(9_~E#egt zj20)GRd>Eh>~o~Fw$dCS4RhPC^H$8@I1~(rD^$tbw02RkB&}UkDi`JrI#X|L8RknT%_9sDH zSlyQf2{LN0gr)nz(i4=W$4zyAtRrvj`G%LN)$p=9PvoU|>53lk(wmH`vU~+43vZN) zw#7mqhYF}AveSNysVW)I)zu`K=lQ~*6gm5JMQqsP)1kcDe#}Sm>Uh20y?o$jiKwQ^ z)6Y1QRMyX;PfNbt6;*!BBR@isBT|2xUIxA&l&6a_XYWtc-fG7plc6bMxMp)f#V!zt zAg?jZWUfT8g`>;s^-W~D=6keBFOM(L#K*;S;_g3BG>?p0Q9dvJy$p+DU>?q$`vymi zvCh>5l&qx{ch^L9vj`kPdemmuM4uLs#e^-Mix3o*iuWdIk?6WS3BfbYNE_`av*1|n z?*P9Y9ptP9sexItW5$D~W!eL;x#8#$+G$7c*RFsGDD5^`Qk0{yJam}7`$37A!}@y$ zCh}!YnBjTJV$)qcHr`L&)d0$e5d`0Fq!=_fxJCA06XQ_;%tMkn` zN)Sd_R>SP-w6sUk=JsqW)tjI}ptW=qFmoQE`<(8wRMf7znZW8^ZlY!I^}Zf;eS^cE zmNCrPfcL6|FIOm}10`!`S@MzO#VOU<7{3^}XVmpY8c3S2?o6{O`Kcsl)>&S%|4&qw zR-55$SSG`a?Q9Fj{J!`J!RVd%nUxJk4MU*M4n&bj>)o?Ky$o(o!ZE`h7l~4P-tLG< z1w#(go=K9!03QsI$6mORN9FZF#J~0ncgv`LXh$Cx*~2+t)`F`jE+AVr2e@H_=~}Bz z2_qd%sN*S`btt{uZ|KDldST~TYr!tazeZdh-sJ{>u*kP5vNvZYM?bYgrVr7sj(_q> z9ES6r?Z=(F?UMuarEV;TPSln=YdKFv)AhEy(#(y2a;8RhHZ$qtDeSfL`HY$ylReLKwwH&yH4AF)Ctj;^-kA5MPBBOD@mZtlzjW-`N)NBn`DMGJsXNyUUa&*?0(GjFQA_kp&- z6%fCd2ci;+K#fSzUiL7y=(s}@)!kjkf{o4(WL$7>Q7L0B5cP{$Dhn?g-ESa=1n}ak z9bC{XIIg|Gc1BKDp*T;d!?5Jak>$8E6crwNHxl#*v zq`0_vUf-V*zrRZ$eka3kaj~{VZiq^Z%_m>&?46KGdfs^HlbhKI!OB15GJ1^z&WCCzxQO4{SD19eea?yLl?v zt4}+5qVqD&3Yb#=Wc*+}@AN<3A6Pb7AmltCWEPOnj|ByXq+Np(X{xJw6J(y!#s5a!=j?{oJb{(- zk~`xKnW5I6u#Cw@0MT(DkW8eWuW_9I;SSq@8XQuEJL8(!xwl20>ILe>r;1`_Jzn`GS)ME-%Gu_4 zP=p-~NYYJYDYYYzxL$^Zi$l&l#*bC9q7Dyjt;K7<&nXQj1F;Qo({pT#1uG38!JS;u zg_Tm(V$@3>?ImsnXC|AufeNaqV1r%whV9$KyZP^^%_shR7m`1Edu`)whQT*=EE$j} zqQo51IE0MlLj#Te9$Ou;Nx;MSlXRO3gj24bA$DP~mUhV2txgBQ8SV|EQm$seY!fip zTn{vmuk#cr?)Z_ah5rodsgz+wW+8Hz*Ng6xJ94lUPs+g$(*B_=FNV||B$K&MWQ5I5CAA&2YbNfaCcfAzK59jNjL9JkXQ76WQ6o+`QLYbVybZMAzj zlz~ltI21w-lTNSYeqVasIpirJPn^BSa!-;Qd^U2^y{{h7uO#I%Qt)~bX*-8RnKcV3 z_GWi`Aj#05*nB8TmAGkilE2koJm~ZeI9p^d&jmdg81?2}&?0W`VpW_qR}oh{2T(s6 zRN__M!?S)SN2Ao9Wz^Tryr)%tCEJ{C*+$pKM(jeNFPfDTT84F=veVN-)}t*mN`j6A z9KLKmedQiL4IK9AUOp|JRVAOwz@3&ZpWa!T^fwS=sGcb48AF*cW+lS`d%C|Ej<%8M zIs;^UEX$GM4L>{)Ql{#y)Jdyvl&aTqI+@zUd8<6;Ni#G5$~q*pA~9~d=$11@mjDI7 zX26r@8lIh=Olqt~+1!YenQAHjah>O8K9ePiTc77y^Py8&wfX$!)b{5$kGW@LZ)x2C zJ36i^erh;cQ5EkSj*hB|_eR`KI6-7=1svk2f)UF+L4u6g%i=3`bQB91eXi1=V-woS zrie1qMJq}XysCmQT{9_oCpeO_yDX>PS|D>b$fgSaS+rl``*KV*9T8rHI1sH5i95Z- z_#HUp*2$SJXR)Rrt%*;PlX0e!@>f%O6}NYYuH!YcOZ$GKD$o~dpX{HI`SCYpIvtTo zvO$TC{YFU3t-)7U-+SRn<;TPDHCymA%fr_`T=eAmo1OUjq!VBNm8}}~F9}cvUq1o- z$G}&S;;TsURb=qhMX%Y%o$CGgt7FAsdFvKMu{lmhT2DF$DU z8+;WBzKAN${JVvUeU>0fp3VnR$P8IL7WO6O8wPbOS!DjE=BRKKB#tG^|CmNd?%zs~ zyw~wzn9c2UZVzw4 z;q(>DEuD38n&&NuF8!Ar4M`I>rJvm`gO;e$Yq)bKU)eeSdvqMpnMkyP1&z#)L~)Lq zl+^B~lX;OP%Brzd30sRk6-DC5GUpp)X``e1!T>%xYC41#P{H7sE}2mK=&0Ge*sj|m zXvz=*+|6s|&}s@i&j1<`*~f!oqw^y%BgXDXbZ<@qRj45qGKVdpJt=^eFUXG`lp zeU$vmq}fEd{52Wffg9o`+i{bRvL4L1ehv)wBCrEe-#=Ri^{qU)!>&;MKzK6b zyetch)ox}*(s9&U@G>vLB_GbaL;M7B)|TS}Z?YvQ<{JIIQh(V&gcF?@QAe>w|GIho zlm30pgbl1q^PkNkE9vt;w3>Zs{t}*!aT6{~gi8|hAFOoNsO#-UxABDoI{9q;VBTdx zXXB7{%vjFl-4ZmH*tO|}t%=q|JH1{L@~s_#OLAJ%h(yW88E=LXEtS4E!zF9xFq0(? z13yvsw2_{ZsH|O}Zs_W&EMR~JOtUvhSZpUfr}QyU!MUMH?_LiTA6rZBB8+5L>xVve z(GNQCay5t`#s+t>(4GXVYp6D;CZb^N!S&8y;Y5Q43;7PQ_7^NX&G3n>RIq@asG$e$ z{PLt~=V3tXDtHZZj0-6OLmCj2;wt|y$E1i|%k1eMuq&u4mUr4Ovd`s)e4I$q; zJh;DH@~Xh2wbJ)$xMahe7ZtJ_+}=`0;V1a@CV-t?^2xkggoUtskGDlrx=Mdb^!Gwr zPShGeR0}xXIvUL9mte0j8O~;Xl>8X^@ z`9Rf`Ofl+>1cCI-7Dq?zZ{#f>J^cxdhJVjgzv3T;I7F*UuOGQnd;O;~wAa7k$-U{T z-FiK5R%efI)?PAqq^~3N_siPjykw706@Cxk@0(cX^_KG}*3JKbq~!B)Z@pgLcStY2 z!G+5)`rDKK{_W8I`nvRY`wZ>xy3@74Z}H@Qd)WW7zvADVSa-F-ZkG0!q~!B)Z;#tw zHINt|-7p%tQ)Q%u*DI0GKe|JE^~q`4s~_{^K2+@Ws$f+mn}>Wm#10L0ci;`ym%s7& zK;ps+K_XmQ$?d46Q zC2%8fP;SQ`2sDj9$N|jhbNSA>(q& zE|sL%ZuCmzW%y8ew0Tr4J1LKJYYUM_&C?a9XZKf}KFpK5>MNa;T3NEqTD%xiuPkJl zzU;HBV*V;`{N!+Z#6<0FDt~X#U#u6%<*%qL&JTIA_>AOuyHwghqMtsb5k)?MFVPpwK=|p>W!%3Wcpaxz7(h z1Pb#~P&fb-mJsit{Rj2*`C9!&SaE-e_Ww)C{u4b`FS5ds?t8sQTy35IPmYN+!0;dY z&g*pw^`_Uy=x&d6i{vw}J{Y^9d9dwHJ_XO$hhD#6WuZ%(l>wD?%=45}rseQx_ zMo-K2_fqZexyk+}<0owGaLDu!d9`&utHoKV=i}XaosJ#})r#*f@~YC=9ClWQ9UGCg zQq&pksEDk0Z&SpU=4wa(^ldu&4vu3wV-%6K#nN48DhqLoR_zxfA4iz`>TW@N^si(e zXc)6PouAnvPyz|gI}r!SzWlZD7fKh26}Vs(FSiGXEwh?eUVsAm7w!*oeoE;DZC3L> z9zGMgeO^^;(<6+1dCJCeV!GA%1E5WLR9T(LbvB|CBOG^Aadwp$B&&J4wBTxKfu9>` zg-DGt=@+cxay7>>H@_BWDoa$xZj?s1P&JpmBuS%6FIa0ef6Rkv)f%h0g9mNZuhr=3 zwMs32YHm-pj|Ik%ZzcF&Cjqp_p!dX*xe{#|0HEZK{jk48rU)Jz=l9; zu|i8+9lJ>Sq_p$q_ubYr%%p;K3=}Yy`nT*=3+-n2t#;X40Bx5&jc|X`-lg`(8p_Wo^P|1*SbH$9eu0;8kHyHMRB^EqSB^2%F&^zsA(zRlYA>yB37 zVePw-S?5vOClJu`eD1H-9;Ja&o;fcC!#&=Zp<+aiwLmtKigaYu-XRKqFFShY@Q(i> zskHd%sbV*%u$m*caI>JLcKGm&S_!LpR@N_AXQ+k6c(j@w$q=>i7hlga>ke&YvPQ^G z5v9zi(>liSnk2bTCP{$4tN;{I&t&dpL$`Z|cbvd&vgYf(g5?E#GKBV73pz}l$8SQ% z3UV%!brjhYnTn!ir5zjf>qs881f4X;p6o1XA&KbU^twyreCumP-KxYCAnWT=F`}a{)tbk5*VdgK*;i3_dSw5Ix?HVJzUr(pJ`spSZH!jyqg9taOU0}u zmWpRR0K9`I1F$YN{y+BK20p6lTKJx15;8zw21Sh)+o)+94c639O&qjy$OO*F1X4hy z6*V=Mrp0Q61Vf21I0SR4%N1e(*<=Di;ybQe7D}z zSO6)d@GcK~1AqAU+9wC<1*QPCzG@Oao<%ng)ZZd)@2_ty z7^uHh$^jLrNUW$~PJ+gF*2R|2^>oyz`p&wzv~tmDU>Mj3=o_S1<|l15 z_|18p%+(6fSWQh@ab!2oj**#&3sxMF5A7cy54q3Kxksz|3dhRKbSbHpQHph*=jk|; zTG9ayOFo(x+x`+-PnGgTFoN@$X&z7JMDx;K>EtkfzsjnBJYD=GwIR%3e4#-wsa$^< z=S-n;!7NiV2FbGOQwrivX-Zy1mfn$*wfbU>6PQ-xoapQ!#YR9Xah|(~R7%dktZBZ z^25vJ$N+Mmul#(ZXFb0f`u#JW$NJgsw;VTN_z82qsSkPM8})RtjqA znXYmU84@hwa#68kl68swWc!(p#kfufCpsOgl*|lr02J92qqY9^o5W8?@KD|iE6cQx zfz?h+wOLoXsf=0SE7&CSamXO$>IHCmeHQ*E<8SN$_cSO+Afpf4^_-1yQ+4~Ogmo0n z%Ecc}6~~YG(8$#jQ~-&=5ObRxd2!tjq}&a;K^BTv7T=EQ;*2YM6b0@k3K#6d3wk9Q2`Ds;%npQ6 z)eqNMzOKiVc6DfZcQ{v~J`O;^^-x5`!jWj9kxA8TAodaHou$miMUuOM1yL;b~55_meq^R~0@ugkf zE^m5vARU(&J+xcvW_NV~IPgzK+D;!d(Z?(Xk>sE&)iQAu)SCZ#~KMy{3hkFzTI)$+6X&E?n1uM-8h zuhBYZg`S@1PwEpvI#c`!9b%d%imxDr?N|YV-!`$FDi>=~;#dgFi;pyO>gcQx(AuhR zV1+PhF@72|mu)ZeB*)AW zb(7WRYTlZslK*l6YMR^zM3DyZpdmH;oV8LPL8ocBz|!T{Gx~`2iAl^jEDR5@O&ROI zyOV-qS6uDyK2z4!FBeSpci%2iUoMQ`tU!mn#9gmLMUc=>5$a#j%-;fQqcF>uCr>F3 z_pA`dz63|~thm{PN_tkb=+G>zv8N$2UcYy~ch7w1E4S#_>qZefIu|S299E1Y#7pT% zW+(S$y5)bw(N2S9#{?T7J4>m-Y@f`E&2ChZ=#3PM9m^asI+0cFe>5%?I@TmYQi%f| zJQA0tITmI#vN?qce_8`jmVcU6I%?V&oJhhSkjlf?dAc1lnXTDI%p5bc1=GgF|HR$E zGfVyJcO;4;`1M>V!a;IS2St3wyf|%A?%-p*F#;p}cZMN7-*j@Y+;>f$A4&GO6Bz=q+I!!-Euo^P)ToU7N6VnXX&b` zKXoOMw-1l3B=WZ5k$4=HRcfY=FVNWwG*~q4o+p$zBjpi{)b~lDhqe!!6*^ezzx#iY zGj@gL@4jCGUoN=C-+iwR72fXe?$#mi%^l0>;O9D)fI;F<=;{(dtC6U!`@-HG#-M-7 zsIa$J(7D?G$Y(|a2}sb@BE_3Bf@IzuVdv^<=W3w4JM2uEB-c0QyfLkKGrJNPoATkHP3U z0#k{{YyJsi;+&FY)-V1SugcQtkcR9Xl~K{! zzL6n)E<2<*BZbj%nIWyT6P*m{9~n|CXwQhC6ljLDR;Rp568j%1vEr{VqDkCr+35i* z{%*j(reAm=iq6YZl*_|7eN+!vM2(ES6uiQ>5)y{T2ZcvYPjMe z2a?K{Dj}#mCu(vUuDBRtD(@e2tdKk}aV%QSdhS>@&8BrUcdltJ?W7J}v?TesTlA%F z(KT+-liZ>|;TCJ>o;*6Eg6L1YhaeyFrSMwCuL32H<~NdbMYH+q)yV_@MyOL*Ud<^{Vyewm|!( zOsRksf5*G{>}(r8G<3Ld$<-^*FwM0LJ;AtK2@J;qZyzk+?m-mCb@8SJ5-X;8+J|+Gajm7t(Xuw2$r9B66nW!4# zi0EXZGJ)V^^qhi|`NKJ**#&;HLMUEDU0)kf3ux&gkmV0qcUUrYcV(xp4#@m1%fHV; z``SC^6rHVcU24ryU74anb%##T3x~{#EYX!Is)_C|X`{P8lF8RPY_`6Xk2IHLCaZe7 zZ?Gu-M?V{oW;5Nv!r2BUPOHpU7zi^pm=N)Iix!q;5v4poSvt^|nEaAwDRrkZo78J-2{nC$xN|6O41Y9@XBC^BUC*pKc>}0aAA~Q53=pO0kt5 z7jbkd=2qRr3jdnD)Dlf}`ds>NIk$8EK7?6&UNAL74>g#aX|Pg52kG(rM1DY_`r?`$ zW&kW_X3_BUiTv~>E;OexVnCD9(|D2+dYJ*`GzcW1oCbJvp!_^#7?POY4t2(>5gl56 zg{H`>WPbFA&MuIZSx(SSl8X+_zSiCB)JCCddb6YFTBEvLCK$e(d>!rt3+X<{u?!3( zD&7dtMXwdtr0_|2!_G;h1_oh3-3~&% zq=WD2p6pt4Fu2N2KND8g~nzr|nlI}PKVyULKXgq<%;RJ>T# zs-X-F6cB51$`?&Btj3MqFD$#=z{tlj{ z7~xkzwh@w;vp9M#875>ibg()O-c45|pL*BDO+(xC{B@KETmulm#fiT|2}0T?ntM$J zDmo6psJJ9#a%Lg4APXU6-ZB{nLKBF>>+IBmv_3e1sn=TB&NSac2y~e<0u-hk^GFVo zJ6Rs_DQ4YxW1bK?BY(E^iL_7pgy5JNsO!LtI5Fn?Y=vwbI3&h=Qns1mUnVi;uW)4q z*%6G{sK47BpRavL8tK@z1cl2a7~*I1+G}2$c%93u2zd!M^8>lp?lG@zyfW|C%C-f& z@tApNL8-I$pm|$s9{1_T+N62=o;(s`zKxQPv-UL|hqi>HrPMCCZ0D101uVdxP}x3>Ls;NvLOD48gxl=q^BZyK!#fF9t(;E?uv9T zAMYyJL}IRCO59To`HUYfxwAgeP!K;@QY>8!9&VqMXei8k{cxfoo%h<8XgHep`eW_* zCsn)&_*3zS$ILtsO^6l~qnnb^f?#)$D&XET{)~>ljkl`L(}omEH_s%mBsmP?X!V5j zW^e`{VCYH*G^55hISLb5*Ko7jECV|XK6!^qwsLn>n$sV)=IK$(Tk~YAG&$Y=3G~)-d$EQyr@V+gpe7 zwg#C>25&GOZ{pByGD}`Yetahx-4?N4s!(~BcXe9Xd&zFW{X7sVCoOhO4+u8h$I8T}@t0OeO*%DW0xJ*Fc#4-@B`;OG%@BS%~ zE;fg2o6G#&|EMGIBn)xNkT`dF{E3zb5uLYJXhn7jz0#sUvxu(IsW?TuQ>3UO3PfPE z9f^oQuwx|7tYj*-muJcS<+{d<%ni98okjG90~%?fX*X^_Z3k)@fOaLHVw*1_%?hch zMNhlLl=PMFQjY(g1LU#q!~SMvW$h8|Gr0TZ!{Rge>Gba@7oMLYK=M{otL)Vb?UU~3 ziTFP0eh=WuM}&m~+M}s>n;eKw=e?MJ1MyE1GI2BAIFi@s6&THBzauablAlRaV$%G$fK;hpk=lBwAhpN(Q9)`4e~4rq+MDW=FdC<+N6a#M z6>S(yP@NRJVvt$?e@p0cJXodvNkXsuiO^SVbxfRz>5O?eQ*Fe~|HkS+6mPE8DK*}R z*cr6JM@=w6o)~%b#n16xYlE1ACxjWO5M4Ck*~V7m-xcgv8yl%GYVM z>4-9t+Giiwa0}5{d>gGo6Y`O2K&O{xVc=_4t_k=oKM037fd$5}Cm98?N|0rLMsXz9 zyr*1A286}=N;y-(`HJRuz9JYrl;3gBgNN}uc~@MN+v?LeoRJf%Beq(kSD10>*|ID% zDHr*oiRG2D**_{KacluNrix~dsh}5S9Iff(9YydMH$_!dqdKGuQtk%T|Hzj-@$E+~ z@5{jE2HkPLx+go?c5{%%x@!*NB1~`F;ZDw}td;dX3>lGTj}XqcQO5Pw|eEe$(datdKq1Bx50-_ ze!HVoi0#@B2`QS^24qlV5E}kidO54)CRtrG_9xG5_)vH1Q&arwqX|#E@6tnqeQy=3 zEq%!kdH0}gZvd4lv4Z<7|IB?2z@G5W2xDwDtxY{Me~L5S&J|Jg{)(7m7v{?Fz27p5 za%Ggh-!ewz$_TvQGJLr*#=qY(M&-&Vd%tCr=E|7xe#;n}E2I4VmJ!I6QSpAuI4xI3 z<@+sTe6Ea%@3)LIb7fS&-!jT_WlVa%Wt@{MqxSulF(FsRqEQ~(yEpxO zd}+lkC)D;t6OEgN2I`wxWjy`yka^Vdz%D?zFwcNT{|$*$0m)aWR6iYid}b|+A0$Ri zuZVS?a}u^s$1X<|=hf=AbVH?0?}3hKsFY7br7Hp*{S@e!hRW+eNH^4N z=RinI35aYrk51h{QrpG767SK)nx4DRcK!AagvOgJ!g^EpP_zwB5DNv&%qy&;2je%|EEpX_ku7pgr=qc z1*TxG3!JJr_4Cp@;)h2r786G{H6PGZ5PPS2*`3}%sM?*F=oal%d+VmpTlT52>T~sN zz-0WfG@}^dS;u9(17Xki1PBoVVq}TxPSo?0;Ou!_?0oWu*`4yE&6F3*rtHVH^O#=W zDjwze1;1-YjPkt7@BWfeS`$1wpQ~jTB%2?$H+h>M^d>WVA3MIZ)gyA8dVN;VD^nOz z3TFlNtwvy(C{BC|S4$f&r4`On8%5)#?0$EJdN3AF-u-88%F&lLSa3M3_gl{wTVLv=_181%x~W z1nLNgym7KT`7Z+yViH#0G}x0dX3o&hto?Cy_dZLj=5M-%Vi4(}elYV%4jID1UCXWx za}ZT^!22A}49G5SI-T>nH&8@Z1_Pv_AQ^DCk^B9ri+%VBPYNFb&o(!*tT|dy1V;B=XjF;OFPfK z70Q#iy?LXcc>HZ|$H=-HJRJe`dg}D}+eOPt5|gg?zM0}7_g?{{d$fTQQg~n8qt!&+ zbzxM^^aWq{&wPeet)Pa z@{zjz-P;M&>~zYQVz}@8P!#V0QT4NoK2d`sz5=i~>BWM-pyM@8pzzs(L#bSIiMa5PU)G1@DbCGgZq6>|E zmyjGY<0Dy4xJ=522uWo`{)C4~nPFE4G`DIJiVRA(Dkf~JuCZ9e`G!vf7PvqQ6^T+~ z-u=xDjt}w!JTO_wz=Qrw(A8uhA%m6y2=I{VNE0$?G5|4eW+PzWK^jr5m$aJi9>{`X zAPWh4)k6}U41uOz#;)HA?kum*4dOZ3LG&DZ{QC07FWy^$-=xb2cT#N4POt#eX&G;` zJCX4onm8QX+V$%!Jsy(SWus}oI7$Wr<$55fK{EZEOlyayH^Uby(?fC+=?&D} z%QZCITAmSDG-S{jiJPs5@V)r#jvsBNsUGfEcSjN3P5`p(rqqRM@BFn+Q&D=03ko-B ze!}3-x_(2}crU)YVp5LN^cv|yFY9*dVHyY(xd>m2`3F$!bF@ADc{O{{_f`_d!V>7a=OPquE76D@y8@|U2l&Sz$5>dGkD{9#yIml zw?IFecg**HmR~d1X@8dA(Y=KCOZr!ANuT-tS>ld9$!`~Tv9oF~+VA6qjOL|Czi?6Z zZn^*M$}~+8<&YBE2|s`!otBn}4jDc)&-fN4M_PVo$NR?N3L`mlrTEt!tG1&qtm9gG zZSOAVy{$it=#PoRdJ4#Oy_6N7uG@5dlw1Oq?fg=THl1G~p={?{b!Ton;}-KgcaDB$ zI``hrhlYIrkLkR0AaTa)(}r|@R$R=Pj?ww)`a`Dk5frgx;K#|pk7b$B13%T5>Hcrc z*w3MG)BVp#DBFFDHyQgY&GX!g_4D}MKYPgc|CsLUE+o#_Idy3N@0P)z;d}4sU#-7P z^<{^DhELzkmjy!!Xr+-L2Zmo8FnogM8!!YVlm)~2x?8uM@j>%EcdULM9}I8N)>EGX z&sa$7k2?iy8Og*MKhR+KZDtNkUm<8P!)I0f$xMOmW(qXu_&gwFFYIQcBc_$dKF{Es zz5IRnn-C`e$MiQLABOsyklpuW70pkj$qDdg>VYI z2}i&~xCI`<3-H)r9{crU)gFjR&h>}wObv-=ih)&65$_|(z^eU(G;wzxlr?`~>RcT^ zwL)rkHyI$6))vujDh^7K@MEDoHx(?g?rxM7Afs=j{Y_Z^C~g$ak01Gb`!us(GRDor z{6nNJQuUMS;$h0pGm~$SPKfeBhL2}2A_lLTsTb8kf42cem#DL_PpL`QZ4!25@f~bo zv=R5&PA3`#nC8bNeu#B`{ah_o$rvji<~zr)Vyvtczg%PGCT*m>W=5^u8xX!){2L9q&n_k!wgAjb}q*G|CN$(b$)ZG4nRV zBOLR5Zler6M!~4`92U0^ud}1TU5P=TazP)C%SG|rpwCz})wmbIt(5i&vr712?%b5q zLUhPE(9|)uYOTgs9+pdIN&K^RVtGM)Yr5lAvw4Prsnxh_L@B0)dHbak?v*t%a4?x2 zNicI)a>liSv$=uJeAYv3r<==%$=Cdk9P>Of=V%0VQEm%`0_{pZkEV^m!S_`A_t)!c z&E%As&|9nB7dd)P`M=&9@BN%pkD+{4W{??`oGU>C#BGy@knLV*gYPG3}ruMz) zJ+2oHnf`SAcU1b)8kexLEy{x~9YjWdocj55wR z&Nt3DMEe7D7Ql+~Nd4Tb^hm?*b0>yfhFC6yjvU)%Nycl#1OsO$Q33l0cPx=af) z(oJ@3X}Jgg(8k?^95iX)NVcQeWHdxkl%lTRO1xeM^^5jr!1OlStf!GM9msG^XvQ!s zTJO&NemBjQ?=jte^Zh;TIW67PgohVY4rGStT5RCu;9k(fvmkU;3 zbDh=v|8c$q{&&rnL-?*;tmjKffOZ!90Lot-mMS81A^8d&EA(cZd z{$u?iX_V6bkV^lH`a=>NI-x%#jX$nd`$n^6IS^ZZo~J#q0Uik|?)vVNGqn{VqGau= z7Gl0fy@o`v{YzXvV>s*B@=8z7b?3Ez!c|v`ErI7=xki`bvcgxI7rb3zY?AfD1Kqr7 zt8sQzr#&4ln`b;8y*HKAAw#h%xrm}vfB&>f+Bmc%efN2e$*9QGDY@>F0|n_*rf6Mv z9>u1Y8VZRq&x_`#le?M1BpS|-4%Ls-9+MuIJ&`^DVF?r0TK zErDe&>Ay%fju|>pVwtO&BPj#UN}odHdFC3s_@WeS!QtWoxUQdyZMCUfnvxjv=LXpwD^Z7_1l#2d0-{UoCjk3?cV2K z^N>^=AEu!)2sdKXTIQH|5a&F^2}NQJTu9cX@_wkbEbd&^hwDA zBAsdPxEuyf3r6f$GlheZ;YjavN=LY*C{xH@l;0@?rDDl$sWX$CiE*Zt+KI(Q{nG*k z^fKz)K9Oxib2!*i>tB7lZ0>S>^{=l~(X8BXF?Dv+K-o?E_*>%Edm$ zAz-+twVWGk%u7FK5rW1|!eY*q3D7LuN6zp)i_tm$MLbMa>)|o>JT98Qt#2I>6P|H& z6Fy3U*P5VM^Q83UBX-$*ZQ;-#s&q9^-5T8WC+A;IPXTj?r7gAHIiOZZw=93d5sNEv zQ2t!8j(6H5O0O$=<(rsStk`Bk6}V0eON@1>trX8uwcY#pJDDFomcvb@meUmF#g018 z4ssYW1sF8DebZKrp^IVsWbHF&t|Rf>N6P#uP^6(D$U41R{W60aZ($hky5VDVoVc`2 z{WAFnqHErC;?h9pVX3t4VJXnRMtt!Y_g{&JrBnI@B_n@tRAZ%+5ud^h^m?nJL0PQM zhyCl1SWcw20kd?x6Vg*_!lBpsTh0NXvn1pX@3ovyabRj4dW{%=cn_~prKDQ#?)Z^W z%X0KhOtRUiXQ5c5{*E^Lg z=(3n&0vY@xBRp3t-d8?0|n< zB;XH-hgGZGAF!)=ujU=87XAbRb`$SSyf^dS%zGQ}ZT?5~Mq<8WL@-Wc)6fx^;*Nl= z&nV6D2m=BIjN3B(G!Qc$A9cfA?~h8)Toqy)Idm?{h#^+IPlba={HtzeXktr0qFuJKlNMt%(XG=W7s=dE^Jchq(TDvjzd@|3 zXBPaa?;w7f)*p0MR`f_*3G2y1HJg*!pXvyiNNW0os_km2FSy6wxJT8Od!MfABOKjQ zbtE|8j~)i;KNe;6NzAUcTedf-rc@Lu3MRWA46{Gy zR;8sJ>l!Zs;hsew=FXDwDb}#va%&R6STJERmtMb;;=a8B8d_E2k0hN16X-`NZe9Cc zD508{X>J>Zi)m$N1|Mm!Rn?zqt>t~jZLXT_tJ=$jUs1HUmt9JWE%lCn{aa!6bfkqV zh-iI&o2x0-`>LfHJYnyj!@<|OzL#mNnqH3jxbZ+J=A6}5aQC7`R`BUX=QJ4at}g7& zz#;Ck)YI~%DC{gPk1eh6w701RrQxcj6RM_9u>1aq`uOfemxim3pr`&cqW~Q~l(&8& zZqSmB(z@ihk29Ky<;M8uMO|ip{f7&}RSVc;06ReoK+(oM1WBg6@w{*Y#-$|fK+-n6 zVX5ultHDn$Ob0>PActa0%01H(6E%v$K_tV@4>c~xRT+#YU^>$7GoD>jUW80IEV6#e zbP;!v%Sr^X+fw6@(ni#7|F`?ZSeXHB3kSdGyK}V0?&4_O6(XE<58w=#IDiYQMH9dR zhPZybP@zsM_@{-Z*C&cbgo8={sx3lz5{o7XlDrt<8h-oS_`9XciW}9-sWI_)eT`yA{O#=#yeRqCFDS(YM}vR;8)Afgr=@yj z9%S)rc9~VR4J-@p!Q{fs31(nsQoJ7Q_eWpjO3hEYlL9<_qXFLtE!#kDJt;6Eq{ijN z%#0L6QeT_iBYh5g-wbOdknmTAG?z&yxpSZRlPDh zE)>4IePmcYs{2?JR(H;|;zvuD;|=O4J$#WKZo?Lv9x{pQ$GbD=bD%oMo5Opw`#n8E zLHTs13)%jP1Er`cdQzqhBgH`MmMWx6)v1!Gnq6(B_l3Pn%e;S*js*{Q{iEB3p|b~c zk||Uxv!{*U+3pM)jvCnsw7^WD+nGSziv_9+?lX;~fJ?$vgSjd6MrOS7=Fi@Xk2!zv zX%qv{G8<(U$)(zfq8)ky-Dur#6COg{`7^v(dj1UCj|g!tXHSy7XKaZtte&sg*VwWr z()WDHhUCtF2u2S58S55&nl#A0Z~M8fCLq45q1UzyxEhx}E%;mYrzn@$tDpO$DRHgQ zchKvszmLz!2T=2>dCpdcxj}8({I%*C5>@RA4*I7&jlM&pfBk@5D=RrllH&AFJ&RMP zvl_Y0j2QgoIz_)rZ;g0+<6F`le-8e3;S<^-Rdl1E9jt}NaKL6b5%c$${neuAsJeq$ z|C-&xfxv;tio>2K{~?%h$z7{ECfh98o0)A^y#GUX{NE1R3ET_d@=H>i5s-b1$pF_d zQB*e>804()7UY@w_)T=q&4HMvCZA}M#9Y(XD_#Ib4_IzNgeDqplik

C^B@e|e-} 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%0Dkh>SK6xrWq0#JovY!rAP?{F>|%8oWZc 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

h_yMPYY$VN&1GDW4wBRK|A(x7ji3OkF8p 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 z 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°f7x39m>=f6jP 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

d%1zv^_KiGTBdp}*E+`>%B3C#N6xf8FK3H~MSl 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 V}^;r&cxAvplL^Ic(3F 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�%SPwmb|!560FH9I}P;g7Fb=`h+>f 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 literal 0 HcmV?d00001 diff --git a/libs/PIL/_imaging.pyi b/libs/PIL/_imaging.pyi new file mode 100644 index 0000000..998bc52 --- /dev/null +++ b/libs/PIL/_imaging.pyi @@ -0,0 +1,31 @@ +from typing import Any + +class ImagingCore: + def __getitem__(self, index: int) -> float: ... + def __getattr__(self, name: str) -> Any: ... + +class ImagingFont: + def __getattr__(self, name: str) -> Any: ... + +class ImagingDraw: + def __getattr__(self, name: str) -> Any: ... + +class PixelAccess: + def __getitem__(self, xy: tuple[int, int]) -> float | tuple[int, ...]: ... + def __setitem__( + self, xy: tuple[int, int], color: float | tuple[int, ...] + ) -> None: ... + +class ImagingDecoder: + def __getattr__(self, name: str) -> Any: ... + +class ImagingEncoder: + def __getattr__(self, name: str) -> Any: ... + +class _Outline: + def close(self) -> None: ... + def __getattr__(self, name: str) -> Any: ... + +def font(image: ImagingCore, glyphdata: bytes) -> ImagingFont: ... +def outline() -> _Outline: ... +def __getattr__(name: str) -> Any: ... diff --git a/libs/PIL/_imagingcms.cp311-win_amd64.pyd b/libs/PIL/_imagingcms.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..e29c3c100af1fd00378353bc19f1de904d06a3fe GIT binary patch literal 263680 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 hx;=xGY94MZeXne(~ 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 J(Ld int: ... + @property + def creation_date(self) -> datetime.datetime | None: ... + @property + def copyright(self) -> str | None: ... + @property + def target(self) -> str | None: ... + @property + def manufacturer(self) -> str | None: ... + @property + def model(self) -> str | None: ... + @property + def profile_description(self) -> str | None: ... + @property + def screening_description(self) -> str | None: ... + @property + def viewing_condition(self) -> str | None: ... + @property + def version(self) -> float: ... + @property + def icc_version(self) -> int: ... + @property + def attributes(self) -> int: ... + @property + def header_flags(self) -> int: ... + @property + def header_manufacturer(self) -> str: ... + @property + def header_model(self) -> str: ... + @property + def device_class(self) -> str: ... + @property + def connection_space(self) -> str: ... + @property + def xcolor_space(self) -> str: ... + @property + def profile_id(self) -> bytes: ... + @property + def is_matrix_shaper(self) -> bool: ... + @property + def technology(self) -> str | None: ... + @property + def colorimetric_intent(self) -> str | None: ... + @property + def perceptual_rendering_intent_gamut(self) -> str | None: ... + @property + def saturation_rendering_intent_gamut(self) -> str | None: ... + @property + def red_colorant(self) -> _Tuple2x3f | None: ... + @property + def green_colorant(self) -> _Tuple2x3f | None: ... + @property + def blue_colorant(self) -> _Tuple2x3f | None: ... + @property + def red_primary(self) -> _Tuple2x3f | None: ... + @property + def green_primary(self) -> _Tuple2x3f | None: ... + @property + def blue_primary(self) -> _Tuple2x3f | None: ... + @property + def media_white_point_temperature(self) -> float | None: ... + @property + def media_white_point(self) -> _Tuple2x3f | None: ... + @property + def media_black_point(self) -> _Tuple2x3f | None: ... + @property + def luminance(self) -> _Tuple2x3f | None: ... + @property + def chromatic_adaptation(self) -> tuple[_Tuple3x3f, _Tuple3x3f] | None: ... + @property + def chromaticity(self) -> _Tuple3x3f | None: ... + @property + def colorant_table(self) -> list[str] | None: ... + @property + def colorant_table_out(self) -> list[str] | None: ... + @property + def intent_supported(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def clut(self) -> dict[int, tuple[bool, bool, bool]] | None: ... + @property + def icc_measurement_condition(self) -> _IccMeasurementCondition | None: ... + @property + def icc_viewing_condition(self) -> _IccViewingCondition | None: ... + def is_intent_supported(self, intent: int, direction: int, /) -> int: ... + +class CmsTransform: + def apply(self, id_in: CapsuleType, id_out: CapsuleType) -> int: ... + +def profile_open(profile: str, /) -> CmsProfile: ... +def profile_frombytes(profile: bytes, /) -> CmsProfile: ... +def profile_tobytes(profile: CmsProfile, /) -> bytes: ... +def buildTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def buildProofTransform( + input_profile: CmsProfile, + output_profile: CmsProfile, + proof_profile: CmsProfile, + in_mode: str, + out_mode: str, + rendering_intent: int = 0, + proof_intent: int = 0, + cms_flags: int = 0, + /, +) -> CmsTransform: ... +def createProfile( + color_space: Literal["LAB", "XYZ", "sRGB"], color_temp: SupportsFloat = 0.0, / +) -> CmsProfile: ... + +if sys.platform == "win32": + def get_display_profile_win32(handle: int = 0, is_dc: int = 0, /) -> str | None: ... diff --git a/libs/PIL/_imagingft.cp311-win_amd64.pyd b/libs/PIL/_imagingft.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..7f91fb95a8393a8f1a45c27cdf879e41ca02cec7 GIT binary patch literal 1933824 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

=p)XcFX9XKdT|KTWU0NGw3xlG-&h5 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 z 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

$CRxy9o@&{`vQ^rX?tatO&s0qtbiMkf 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 -eqR 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 z

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 z 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�RL3 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%0D1$ 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%0AMsc1#a#S7d)kuyd`aBD81(< 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

8N*7) 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ϙ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—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 literal 0 HcmV?d00001 diff --git a/libs/PIL/_imagingft.pyi b/libs/PIL/_imagingft.pyi new file mode 100644 index 0000000..9cc9822 --- /dev/null +++ b/libs/PIL/_imagingft.pyi @@ -0,0 +1,69 @@ +from typing import Any, Callable + +from . import ImageFont, _imaging + +class Font: + @property + def family(self) -> str | None: ... + @property + def style(self) -> str | None: ... + @property + def ascent(self) -> int: ... + @property + def descent(self) -> int: ... + @property + def height(self) -> int: ... + @property + def x_ppem(self) -> int: ... + @property + def y_ppem(self) -> int: ... + @property + def glyphs(self) -> int: ... + def render( + self, + string: str | bytes, + fill: Callable[[int, int], _imaging.ImagingCore], + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + stroke_width: float, + anchor: str | None, + foreground_ink_long: int, + x_start: float, + y_start: float, + /, + ) -> tuple[_imaging.ImagingCore, tuple[int, int]]: ... + def getsize( + self, + string: str | bytes | bytearray, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + anchor: str | None, + /, + ) -> tuple[tuple[int, int], tuple[int, int]]: ... + def getlength( + self, + string: str | bytes, + mode: str, + dir: str | None, + features: list[str] | None, + lang: str | None, + /, + ) -> float: ... + def getvarnames(self) -> list[bytes]: ... + def getvaraxes(self) -> list[ImageFont.Axis]: ... + def setvarname(self, instance_index: int, /) -> None: ... + def setvaraxes(self, axes: list[float], /) -> None: ... + +def getfont( + filename: str | bytes, + size: float, + index: int, + encoding: str, + font_bytes: bytes, + layout_engine: int, +) -> Font: ... +def __getattr__(name: str) -> Any: ... diff --git a/libs/PIL/_imagingmath.cp311-win_amd64.pyd b/libs/PIL/_imagingmath.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..2b731aa41c8a507bcfd661f3c41c962143716928 GIT binary patch literal 25088 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 Any: ... diff --git a/libs/PIL/_imagingmorph.cp311-win_amd64.pyd b/libs/PIL/_imagingmorph.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..8d2792f3ef767caf53946a26450890f97ba99e4c GIT binary patch literal 13824 zcmeHO4|G)JmH#HmBojiIAQ_CPFyJ5&Bn=sqK#0tc34YOuP9Y!*!X!*4$<)crbmk2t z$ZBv%%lH_UZMCIU+n}tguBS^~O9Rz*LVzR+ZOD3B{fahQQ z)|!wEzo){wwF>>HOfUDin#kAXJ#$ntR{yn3c1_{N#-wbR%`oPqO_6Lg;$kcbWAHd|xh^UH!^>soW zV$*{Ko3id@fmqfEa-rN!C>r0+$ooZv3OBHQIz}WfRKC^r6>WlkiB3i=mIW} zNi7hvhd!oW7Fo~j^+S=yhy`$y9>yy5vM{zZmHunQEqC#)@9aa*xp;`j>?Q|~+D(Oa zU`<4FvqTJ|J!UhtaIu$1x0ozEW;ik(+lApZBV+AxVFus2#neP2{P#1sn7apDs5}D| zE@n%H?|?SP`PRea#@Wq9n1%c~*@PFu_PBoA09up80m*JzvRsvPsuF5*AK8pPYKp@W zk3Mhe0F(?4<7nHvNkcp-8Op%4yDIX7;l&K+or)}Y?)M+ z&~KYa*2Q~%3%y3*bh@{vdYmC@9mb@%0#^xhe)6b6eBlc1nA}yrT|1JinR4?4gvhN(i;n5r7mg&%mw=i3B*Q5ZM{QW`6jU*|;_U^=M3MSzqANd{ zAJ(5@H6w{$FtrgB?=6h(kW^k1-3(%ES#*~;G5?<|DKP7AFn7Dg5wsTRBWNBz}vfV^bK zHbKj$dd_j`M!=4Zub9Vf%uKb9w6GUTJeHpcETcH`x`uKjp3@7`Hb-9feL21Q{h7p; zv1Li-QfSOh64ZL0szXiZr3h?SNa=l$aaSMD>7^8EYFn&fg1u5aily0waTb3i8KNjf zxY%DM{zBgHzCvXC89~n@b2Q;>F1{=oiomlYQ>a^Z?5@RjN*6nABV;xp^>7J^bHrNq zv3|#NBq5EBLsaGhubSa~5JDJyR@A6DIEUCATwaE=*@Z8NozlbGQ!noEZDXoLf30Y}KH zV67}L$b#@}tn@WNk$@HCFJ`dIZs9LS@fSJFt?QiYX{nExD3DEDx{8)H7XyXdwK|`> zS_(K05Tj%`4}o1wV3i9$sRuL0W83M+7nskqWC z?Ycvp|EXCrf5_W^d*7G!)0nkw@hwcasZuamwy*zygUPRuz4AR<64crH@FBfUO$@b{?x;rfF@ z0BPp6Fq<6u6gYaG@Uq;#S&W7Acvn|m!$)0`6xMX}uD-mpUxT4z$1qcc?E}KX$T^Kr zNRP>pOB!KZC#59Z7Ir6mD3yn_i6sE~{c)LBCH50MOSNP*Hjjt9WU>H_X#d7$E|`$| zThO;vaA4$g{GB)VCH@mewqdjBMZ<(!%h-b_x7$n>%a1jY@_AG}>f4Xt*`u8ffvDJv}{ z(t|H2olhY^5ExOOt*`hpT<*eP6k8s=C~E%+?c3w` z=PHdYXj1I#mU^Sw9S|gLM>pk>F-FR#P|#s>!ikxi9he)gL!Q#)V37@rmoPo;17ZC_ z!+7|=Kg%3H`x}^#EtMh{G@C43)YhQq$e^$`wpuf!lMJs;#?n8D$u4d`qu=%eC}Xh1 zUty#YPk$mw5ZNHYRDUy7l!^EiQAE;&Z-%`RG&2uSvvU|}j(Y9kuEZ~}alz*xd{EX- zNa{!iH(2eGpp8iB;l(2!7o>O;W}@YjN=qf$yrdrLgOR9*GR#k$_P zzI$~2(qtK{#0%nSE}lnHgtduBuq5qbkNEGL7R1P;W4@hdA3@BRXVe4of zL?O0!%o(=y^=KybM5MGWKctzX^FYn9f|Xo+2ab`C+Wr|Z{*#i&Uz_`#Il#)g!vc@E z^WddAPco#*K~*9bDu*RQJ}5EH=MmmgHq5&Qjob{}Tsh3mUHkyf zU|g_%9SHNNE3UV7Vf3ph1gsPXsuqy<5s6%1*NqShX;J0zNcl(b&BB?IVHzBb?!3n^ zte+^`{4xlzhs1J!3;OH?Oc;-8&jZKFtU}mJyp2$JL}yC8r66hWRoE@>@rj>cAHYCQ zcXKggW--mU$aO(<)C9dq8yIr*Y~o}lbum0S@&`?LqP%Bt5hrpF>MD#MEvwb? z8>^DJUL+6pYzsn0`VOG2+}Cf)Mua>JcIPbO;hZ}TUgET3U7I)}t72f)e!i&EXP=i5 zoTq)^tfShmqO~RwpdI@W2-H63Cw3}CHby7{bm*Mg>*U_iR$hvhOgt5Cj9k=g`bt6r zEzDeD`WSsfCVHl#Q-o19H|YJ^BNHj~Ug>xG`?cq<2Oia40w9tg z$aFM2syz-uBL`qy+kHR_zllqD$n%cludB0q4Py-pwe7E=aA@JK+)f}kT*Cy?U)s8m zzQcu`ojKSr8Wvg$!Zr3ehx9-Gaz2k7D&XlS^gp&{^4Rz`du;qmJeqH+Dmx(*h_{Wm zmvsfliA#0qUG}ng5S!nj!lBp91007Ct&IH0W)u5+!p318W&)q)#YB2Xt}kJ8|fXr_`PKTNC7|$PiyXe!~IGEK3|lrXg-@4c5+ns!lfH zL8N4O8p>RJECDqhd-x>r#h0=BNrrEe1fefZ?s~C7St=`y?tDn@Sb_w!_sP2t5F;Hd z>t)mJy|OR)BTzfJp+ID&wR1OlmCuIu?G)!AqUEB}0!MRgkIm%3mTdv7q2oX@oX$l@ zPhyM3vErZ?DhrQclLNvf!;c`Oeb^!y4gp1$wK@ppv4#W4qf;y`Xphve$xVmGhKxactXrl(zMkwY~cb+8)B< zCEv;xv65;W`8>!o$IX5E$8BPlO&qXpec$7AS6R0X`vkYwCcbPFhs}NR&Z~dCGN&IW zf_3ZpTiw2JblnG)IVYmk7sQLvl^=)K@<{IMc%74G4lj}Pyhqyyg0(SL9?!%JUtxJ| zW*QTwmj?(;(eAtWF$yT-CKErP!J$jz%=J%nh4O8p_M137t&v`hEvnrPbSMkF`+-!N z`>f*mO7TRcc*+|2G;5378nb3m?1)Ny9|0j=1cY$(2Y;O%%7KwI7^y&86l+_q>dbkT7)T8geTqUkmI$cJQ0tTfK( zUev9Z7p|ynL%Zh&BfYvFZ8OkxsGxQMX8o|sD6EV08hf-gAhEb0SPtv}wE7YDBH*^` z`Vh}22=GRt%KE}3vV%j54uz*fXEL~v+^g}lK<`ZS+FYQ}{uD28Ls?MxJrMoDx2_D0 z=lX-gcyrYL8XT+s;2V=dw~d&xSjCsEs2ID>=FODw#XItPR#ba*I!tZt!`Z3fAD!UW z#<&bHptIT`T30ed{ln!l%H+#Gble5{Z+t^9owhr zhW&17<^q`CU zq7mI35h%(}Tu3UTj626gjfix{9*A#4__CeL&(nvG%7C~MwPJN`;?0i~ODLA&YH%e7FRfTCPe79VYpH|@uD%_{azpKIym0z#Y>s30a z!W}BSLzO27@0?1HTcU6VRQg?&PU;;}>1R~9Q-xj?E?1#Ng(WJyUWG|JZHpD`Ar(HO z!WUF{OogXa_`V9qtMN}!VUY@NQDKv+m-J)2jQel!m0{>j`j5rvJw9WtgIBV7T0xE1#VVerK ztB|ZE|0a$?jjhJP{my*cMw0yL7rv&k^tSZ2-LQ#&>=+(KKnVxxz1QGV6K?BN#_qy> z<#fiz&0uUX?t>^kdU4+{lQ9AJ5#01QXrm5m6h`9+wg!bb6)#T$egp8mAFJ_4>ivhxtqX z?H+4G{;h#Rn>PBrLUTRhqxrpiM9;K&^XB>u=pN$>)cyqpm#NAs`*Dont&#n#PUY1o zdbMMCie3|VC&^EX^0)uwZy$=>3QfO(aKNuR<|RPc$Kd6U^324`D^q^cpz0xd#%Mp@ zg{n{G(ez?7z+7vTq=`33_nWY67o1T}!^6&zpn~#Nx_4pia8jI<=G^VRD$n?~SSl7gxtz)x4 z$YayqoXGNDxq|5qPhuonfO`kY;rMcz?2WWXS;^>S=W<^ZaEkAd_=;iEl*vr+IT=35 z-!6Pls)Y$17W?!Yb?ipOF-^#4lj;qKw?LNdhCH9-FiX0rbZUFev)Sy~!#cLNW&#`c zKxThNAiXw?e2&Xt<37k_+BdUU2l8{nm6$8lUMh|0V-pQJW)QNOp+1Wl=4UcP$;81t zPFuoj;D{F3)silfN05M%BLG z$k;{P##su~q-j{119tLtEWaLiO%}_CkNlFnfX1N3*d1gBO()AF9eF%5*|?HS$S}Up zH_XTQUNK>Cd?3d`@za%r3Z*=$pdc)`NRg8c-A$mqxC6N9cSH{n9D9-%xdP^S^X6{y z_?&gk^*7Hi3bfWUM{AYOBRDTV^0Dz#d*yPV?i$9rq1;bihpBc1Z&wO0AN5}wc%3P{ zW8ggn-sfF^tA~|Q`QNUGU(q@pt?s|P@=lnq7=)w zx&;SnM8OR^w`3p^Yp~Jjs0)VNHQ|6a8O(n8wR=K>^A7hWWO16KwOXz*ofScMo#4h^ z|HGt)H4t$7>e+lX(i+sZN|=FGp~>&Vnl7sMdYMMMT=1fMLOAHI@WVfTTbE5dyWf9L zIIt}2a|s^5uhJ(3Td|f&vdR+_!gb!2KI8-r?D; zjKvp<%hJ&6if}OK_6d%l-{r<3*RQQ{2b(=U^d`w-&!ty|RKg!zhK?duN6;NYGj?yr zm&5L0tHT{cncZCHbD>j!0Ith6HzW4d&AtLI>Q0 zvBesjCselql&oy`YzWo`u^zmr{U1uFUBH7CvDv+XriH^Cdj`?k+#AA;jqYGF%G)cK z-%)8dm&iko3e4%OaE9<&;%V@>oXX%~-e-az66&4w9^&-)8vM?BcSs2OTb*7Q$GTw6 z?&gpi*s6-U3Rw1|YWRKb7VLup4G>Nu=5)8X zU17nE7o-%yWcVYJ-lIHon?tmj&UFQax%kyBrO#aNyt(t{Djiu&eRKt|){sn{UlF;m&_ELqa5nBZ zaDo-M`+*arzoHHTC-`;T7l5bMeyMdK)rTul=M|&IBe)T_131CmxNCu@)_qhDCU9>D zpP+=h19))(V|U=*2b|vfI&j+;DsVsQx97p{1T39`cz_e6-*DGJhu~wlw~;>JE4ZHm zPVk@c-uV#lrvR_Ima#{HUjx{SdmnIuL%7LT0p3l`xCx&R*sS6Kz`ZI?@PLZH0Qjbg z6TGP69|PV!4KmmvxC1xYB-o+i1W&8@tALG0CFUkTD!yNUK0y<1>I=bY6|W_Tdhr7I z1mDE1Lrq2y->GEW1o$rArSrkZH!Jo4?n2=BZY9^$#lWeyrW$z|<4KU}W5NkiZA&;o zszbNH7eV?P$#l5ztVXPIuebAn_gn21@47@bM!M`8W3TUi^<^8_Cq-B`wWf z<3@KdgucZ}70YWFnl3G8XvvwhFWJ%f8npKv^}`ia3OEh|XC nE!Ybsi}HU>+B&v(baXt`5%1{jDBM%L$Fk?IdIbMZcmBTsLCKcE literal 0 HcmV?d00001 diff --git a/libs/PIL/_imagingmorph.pyi b/libs/PIL/_imagingmorph.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/libs/PIL/_imagingmorph.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/libs/PIL/_imagingtk.cp311-win_amd64.pyd b/libs/PIL/_imagingtk.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..824e4dd84c2643555f2be2a21d303c0957b5784b GIT binary patch literal 15360 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 F{}X%7+baM7 literal 0 HcmV?d00001 diff --git a/libs/PIL/_imagingtk.pyi b/libs/PIL/_imagingtk.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/libs/PIL/_imagingtk.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/libs/PIL/_tkinter_finder.py b/libs/PIL/_tkinter_finder.py new file mode 100644 index 0000000..beddfb0 --- /dev/null +++ b/libs/PIL/_tkinter_finder.py @@ -0,0 +1,21 @@ +""" Find compiled module linking to Tcl / Tk libraries +""" + +from __future__ import annotations + +import sys +import tkinter + +tk = getattr(tkinter, "_tkinter") + +try: + if hasattr(sys, "pypy_find_executable"): + TKINTER_LIB = tk.tklib_cffi.__file__ + else: + TKINTER_LIB = tk.__file__ +except AttributeError: + # _tkinter may be compiled directly into Python, in which case __file__ is + # not available. load_tkinter_funcs will check the binary first in any case. + TKINTER_LIB = None + +tk_version = str(tkinter.TkVersion) diff --git a/libs/PIL/_typing.py b/libs/PIL/_typing.py new file mode 100644 index 0000000..34a9a81 --- /dev/null +++ b/libs/PIL/_typing.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +import os +import sys +from collections.abc import Sequence +from typing import TYPE_CHECKING, Any, Protocol, TypeVar, Union + +if TYPE_CHECKING: + from numbers import _IntegralLike as IntegralLike + + try: + import numpy.typing as npt + + NumpyArray = npt.NDArray[Any] # requires numpy>=1.21 + except (ImportError, AttributeError): + pass + +if sys.version_info >= (3, 13): + from types import CapsuleType +else: + CapsuleType = object + +if sys.version_info >= (3, 12): + from collections.abc import Buffer +else: + Buffer = Any + +if sys.version_info >= (3, 10): + from typing import TypeGuard +else: + try: + from typing_extensions import TypeGuard + except ImportError: + + class TypeGuard: # type: ignore[no-redef] + def __class_getitem__(cls, item: Any) -> type[bool]: + return bool + + +Coords = Union[Sequence[float], Sequence[Sequence[float]]] + + +_T_co = TypeVar("_T_co", covariant=True) + + +class SupportsRead(Protocol[_T_co]): + def read(self, length: int = ..., /) -> _T_co: ... + + +StrOrBytesPath = Union[str, bytes, os.PathLike[str], os.PathLike[bytes]] + + +__all__ = ["Buffer", "IntegralLike", "StrOrBytesPath", "SupportsRead", "TypeGuard"] diff --git a/libs/PIL/_util.py b/libs/PIL/_util.py new file mode 100644 index 0000000..8ef0d36 --- /dev/null +++ b/libs/PIL/_util.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +import os +from typing import Any, NoReturn + +from ._typing import StrOrBytesPath, TypeGuard + + +def is_path(f: Any) -> TypeGuard[StrOrBytesPath]: + return isinstance(f, (bytes, str, os.PathLike)) + + +class DeferredError: + def __init__(self, ex: BaseException): + self.ex = ex + + def __getattr__(self, elt: str) -> NoReturn: + raise self.ex + + @staticmethod + def new(ex: BaseException) -> Any: + """ + Creates an object that raises the wrapped exception ``ex`` when used, + and casts it to :py:obj:`~typing.Any` type. + """ + return DeferredError(ex) diff --git a/libs/PIL/_version.py b/libs/PIL/_version.py new file mode 100644 index 0000000..9938a0a --- /dev/null +++ b/libs/PIL/_version.py @@ -0,0 +1,4 @@ +# Master version for Pillow +from __future__ import annotations + +__version__ = "11.1.0" diff --git a/libs/PIL/_webp.cp311-win_amd64.pyd b/libs/PIL/_webp.cp311-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..ff17d5c45ded2b915b5c2b81645938ab43efcb83 GIT binary patch literal 409600 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 z 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 K|KCwt;J*Qw2lspc literal 0 HcmV?d00001 diff --git a/libs/PIL/_webp.pyi b/libs/PIL/_webp.pyi new file mode 100644 index 0000000..e27843e --- /dev/null +++ b/libs/PIL/_webp.pyi @@ -0,0 +1,3 @@ +from typing import Any + +def __getattr__(name: str) -> Any: ... diff --git a/libs/PIL/features.py b/libs/PIL/features.py new file mode 100644 index 0000000..3645e3d --- /dev/null +++ b/libs/PIL/features.py @@ -0,0 +1,357 @@ +from __future__ import annotations + +import collections +import os +import sys +import warnings +from typing import IO + +import PIL + +from . import Image +from ._deprecate import deprecate + +modules = { + "pil": ("PIL._imaging", "PILLOW_VERSION"), + "tkinter": ("PIL._tkinter_finder", "tk_version"), + "freetype2": ("PIL._imagingft", "freetype2_version"), + "littlecms2": ("PIL._imagingcms", "littlecms_version"), + "webp": ("PIL._webp", "webpdecoder_version"), +} + + +def check_module(feature: str) -> bool: + """ + Checks if a module is available. + + :param feature: The module to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if feature not in modules: + msg = f"Unknown module {feature}" + raise ValueError(msg) + + module, ver = modules[feature] + + try: + __import__(module) + return True + except ModuleNotFoundError: + return False + except ImportError as ex: + warnings.warn(str(ex)) + return False + + +def version_module(feature: str) -> str | None: + """ + :param feature: The module to check for. + :returns: + The loaded version number as a string, or ``None`` if unknown or not available. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if not check_module(feature): + return None + + module, ver = modules[feature] + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_modules() -> list[str]: + """ + :returns: A list of all supported modules. + """ + return [f for f in modules if check_module(f)] + + +codecs = { + "jpg": ("jpeg", "jpeglib"), + "jpg_2000": ("jpeg2k", "jp2klib"), + "zlib": ("zip", "zlib"), + "libtiff": ("libtiff", "libtiff"), +} + + +def check_codec(feature: str) -> bool: + """ + Checks if a codec is available. + + :param feature: The codec to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if feature not in codecs: + msg = f"Unknown codec {feature}" + raise ValueError(msg) + + codec, lib = codecs[feature] + + return f"{codec}_encoder" in dir(Image.core) + + +def version_codec(feature: str) -> str | None: + """ + :param feature: The codec to check for. + :returns: + The version number as a string, or ``None`` if not available. + Checked at compile time for ``jpg``, run-time otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if not check_codec(feature): + return None + + codec, lib = codecs[feature] + + version = getattr(Image.core, f"{lib}_version") + + if feature == "libtiff": + return version.split("\n")[0].split("Version ")[1] + + return version + + +def get_supported_codecs() -> list[str]: + """ + :returns: A list of all supported codecs. + """ + return [f for f in codecs if check_codec(f)] + + +features: dict[str, tuple[str, str | bool, str | None]] = { + "webp_anim": ("PIL._webp", True, None), + "webp_mux": ("PIL._webp", True, None), + "transp_webp": ("PIL._webp", True, None), + "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"), + "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"), + "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"), + "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "zlib_ng": ("PIL._imaging", "HAVE_ZLIBNG", "zlib_ng_version"), + "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"), + "xcb": ("PIL._imaging", "HAVE_XCB", None), +} + + +def check_feature(feature: str) -> bool | None: + """ + Checks if a feature is available. + + :param feature: The feature to check for. + :returns: ``True`` if available, ``False`` if unavailable, ``None`` if unknown. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if feature not in features: + msg = f"Unknown feature {feature}" + raise ValueError(msg) + + module, flag, ver = features[feature] + + if isinstance(flag, bool): + deprecate(f'check_feature("{feature}")', 12) + try: + imported_module = __import__(module, fromlist=["PIL"]) + if isinstance(flag, bool): + return flag + return getattr(imported_module, flag) + except ModuleNotFoundError: + return None + except ImportError as ex: + warnings.warn(str(ex)) + return None + + +def version_feature(feature: str) -> str | None: + """ + :param feature: The feature to check for. + :returns: The version number as a string, or ``None`` if not available. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if not check_feature(feature): + return None + + module, flag, ver = features[feature] + + if ver is None: + return None + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_features() -> list[str]: + """ + :returns: A list of all supported features. + """ + supported_features = [] + for f, (module, flag, _) in features.items(): + if flag is True: + for feature, (feature_module, _) in modules.items(): + if feature_module == module: + if check_module(feature): + supported_features.append(f) + break + elif check_feature(f): + supported_features.append(f) + return supported_features + + +def check(feature: str) -> bool | None: + """ + :param feature: A module, codec, or feature name. + :returns: + ``True`` if the module, codec, or feature is available, + ``False`` or ``None`` otherwise. + """ + + if feature in modules: + return check_module(feature) + if feature in codecs: + return check_codec(feature) + if feature in features: + return check_feature(feature) + warnings.warn(f"Unknown feature '{feature}'.", stacklevel=2) + return False + + +def version(feature: str) -> str | None: + """ + :param feature: + The module, codec, or feature to check for. + :returns: + The version number as a string, or ``None`` if unknown or not available. + """ + if feature in modules: + return version_module(feature) + if feature in codecs: + return version_codec(feature) + if feature in features: + return version_feature(feature) + return None + + +def get_supported() -> list[str]: + """ + :returns: A list of all supported modules, features, and codecs. + """ + + ret = get_supported_modules() + ret.extend(get_supported_features()) + ret.extend(get_supported_codecs()) + return ret + + +def pilinfo(out: IO[str] | None = None, supported_formats: bool = True) -> None: + """ + Prints information about this installation of Pillow. + This function can be called with ``python3 -m PIL``. + It can also be called with ``python3 -m PIL.report`` or ``python3 -m PIL --report`` + to have "supported_formats" set to ``False``, omitting the list of all supported + image file formats. + + :param out: + The output stream to print to. Defaults to ``sys.stdout`` if ``None``. + :param supported_formats: + If ``True``, a list of all supported image file formats will be printed. + """ + + if out is None: + out = sys.stdout + + Image.init() + + print("-" * 68, file=out) + print(f"Pillow {PIL.__version__}", file=out) + py_version_lines = sys.version.splitlines() + print(f"Python {py_version_lines[0].strip()}", file=out) + for py_version in py_version_lines[1:]: + print(f" {py_version.strip()}", file=out) + print("-" * 68, file=out) + print(f"Python executable is {sys.executable or 'unknown'}", file=out) + if sys.prefix != sys.base_prefix: + print(f"Environment Python files loaded from {sys.prefix}", file=out) + print(f"System Python files loaded from {sys.base_prefix}", file=out) + print("-" * 68, file=out) + print( + f"Python Pillow modules loaded from {os.path.dirname(Image.__file__)}", + file=out, + ) + print( + f"Binary Pillow modules loaded from {os.path.dirname(Image.core.__file__)}", + file=out, + ) + print("-" * 68, file=out) + + for name, feature in [ + ("pil", "PIL CORE"), + ("tkinter", "TKINTER"), + ("freetype2", "FREETYPE2"), + ("littlecms2", "LITTLECMS2"), + ("webp", "WEBP"), + ("jpg", "JPEG"), + ("jpg_2000", "OPENJPEG (JPEG2000)"), + ("zlib", "ZLIB (PNG/ZIP)"), + ("libtiff", "LIBTIFF"), + ("raqm", "RAQM (Bidirectional Text)"), + ("libimagequant", "LIBIMAGEQUANT (Quantization method)"), + ("xcb", "XCB (X protocol)"), + ]: + if check(name): + v: str | None = None + if name == "jpg": + libjpeg_turbo_version = version_feature("libjpeg_turbo") + if libjpeg_turbo_version is not None: + v = "libjpeg-turbo " + libjpeg_turbo_version + if v is None: + v = version(name) + if v is not None: + version_static = name in ("pil", "jpg") + if name == "littlecms2": + # this check is also in src/_imagingcms.c:setup_module() + version_static = tuple(int(x) for x in v.split(".")) < (2, 7) + t = "compiled for" if version_static else "loaded" + if name == "zlib": + zlib_ng_version = version_feature("zlib_ng") + if zlib_ng_version is not None: + v += ", compiled for zlib-ng " + zlib_ng_version + elif name == "raqm": + for f in ("fribidi", "harfbuzz"): + v2 = version_feature(f) + if v2 is not None: + v += f", {f} {v2}" + print("---", feature, "support ok,", t, v, file=out) + else: + print("---", feature, "support ok", file=out) + else: + print("***", feature, "support not installed", file=out) + print("-" * 68, file=out) + + if supported_formats: + extensions = collections.defaultdict(list) + for ext, i in Image.EXTENSION.items(): + extensions[i].append(ext) + + for i in sorted(Image.ID): + line = f"{i}" + if i in Image.MIME: + line = f"{line} {Image.MIME[i]}" + print(line, file=out) + + if i in extensions: + print( + "Extensions: {}".format(", ".join(sorted(extensions[i]))), file=out + ) + + features = [] + if i in Image.OPEN: + features.append("open") + if i in Image.SAVE: + features.append("save") + if i in Image.SAVE_ALL: + features.append("save_all") + if i in Image.DECODERS: + features.append("decode") + if i in Image.ENCODERS: + features.append("encode") + + print("Features: {}".format(", ".join(features)), file=out) + print("-" * 68, file=out) diff --git a/libs/PIL/py.typed b/libs/PIL/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/libs/PIL/report.py b/libs/PIL/report.py new file mode 100644 index 0000000..d2815e8 --- /dev/null +++ b/libs/PIL/report.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +from .features import pilinfo + +pilinfo(supported_formats=False) diff --git a/paintListener.py b/paintListener.py index 85d36b0..70e8283 100644 --- a/paintListener.py +++ b/paintListener.py @@ -2,10 +2,8 @@ import bpy import mathutils import bpy_extras from bpy_extras import view3d_utils - -image_name = "vPainter_buffer" -image_width = 1024 -image_height = 1024 +from .paintModifier import apply_color +from .constants import image_name, image_width, image_height class vPainterOperator(bpy.types.Operator): """Set brush color based on unmodified surface normal""" @@ -136,7 +134,7 @@ def brushstroke_callback(scene, depsgraph): elif active_object.mode == 'TEXTURE_PAINT': if tool_settings.image_paint: print("painting ended") - #apply_color() + apply_color() def register(): bpy.utils.register_class(vPainterOperator) diff --git a/paintModifier.py b/paintModifier.py index dc5d831..115957a 100644 --- a/paintModifier.py +++ b/paintModifier.py @@ -1,7 +1,78 @@ import bpy +from .constants import image_name +import numpy as np +from .libs.PIL import Image +import mathutils + +def apply_color(): + context = bpy.context + + paint_buffer = bpy.data.images.get(image_name) + normal_buffer = context.scene.normal_texture_settings.texture + custom_collection = context.scene.texture_collection_settings + + normal_color = context.scene.normal_color_global + + returnValue = -1 + + if paint_buffer: + + # apply normal color + if normal_buffer and normal_color != mathutils.Vector((1.0, 1.0, 1.0)): + if paint_buffer.size[0] == normal_buffer.size[0] and paint_buffer.size[1] == normal_buffer.size[1]: + # create arrays + paint_mask_pixels = np.array(paint_buffer.pixels[:], dtype=np.float32).reshape(-1, 4)[:, 0] + target_pixels = np.array(normal_buffer.pixels[:], dtype=np.float32).reshape(-1, 4) + new_pixels = np.tile(np.array([*normal_color, 1.0], dtype=np.float32), (paint_buffer.size[0] * paint_buffer.size[1], 1)) + + print("image lengths: ", len(paint_mask_pixels), len(target_pixels), len(new_pixels)) + print("image shapes: ", paint_mask_pixels.shape, target_pixels.shape, new_pixels.shape) + print("image arrays: ", paint_mask_pixels, "next", target_pixels, "next", new_pixels) + + # Convert arrays to PIL Images + # paint_mask_image = Image.fromarray(paint_mask_pixels[:, 3], mode='F') # Use alpha channel for mask + paint_mask_image = Image.fromarray(paint_mask_pixels, mode='F') # Use alpha channel for mask + target_image = Image.fromarray(target_pixels, mode='RGBA') + new_image = Image.fromarray(new_pixels, mode='RGBA') + + paint_mask_image.show() + target_image.show() + new_image.show() + + # Blend buffers + blended_image = Image.composite(target_image, new_image, paint_mask_image) + + # Convert blended image back to numpy array and normalize + blended_pixels = np.asarray(blended_image).astype(np.float32) + + # Save texture + normal_buffer.pixels[:] = blended_pixels.flatten() + normal_buffer.update() + + print("Color applied") + returnValue = 0 + + else: + print("Texture sizes don't match") + returnValue = -1 + else: + print("no normal buffer selected") + returnValue = -1 + + # reset paint buffer + reset_pixels = np.array(paint_buffer.pixels[:], dtype=np.float32).reshape(-1, 4) + reset_pixels[:] = np.array((0, 0, 0, 1), dtype=np.float32) + paint_buffer.pixels[:] = reset_pixels.flatten() + paint_buffer.update() + + else: + print("Texture 'vPainter_buffer' not found") + returnValue = -1 + + return returnValue def register(): - pass + bpy.utils.register_class(VPAINTER_OT_apply_color) def unregister(): - pass \ No newline at end of file + bpy.utils.unregister_class(VPAINTER_OT_apply_color) \ No newline at end of file