From 766f60e8b2440d0eedcd9a976fa66570bbb3adec Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 6 May 2025 21:03:47 +1000 Subject: [PATCH] Removed HEADER_V72 and HEADER_V73 --- src/PIL/VtfImagePlugin.py | 63 +++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/src/PIL/VtfImagePlugin.py b/src/PIL/VtfImagePlugin.py index 8f6a1bbbd..9769a2ad0 100644 --- a/src/PIL/VtfImagePlugin.py +++ b/src/PIL/VtfImagePlugin.py @@ -123,9 +123,7 @@ class VTFHeader(NamedTuple): BLOCK_COMPRESSED = (VtfPF.DXT1, VtfPF.DXT1_ONEBITALPHA, VtfPF.DXT3, VtfPF.DXT5) -HEADER_V70 = " int: @@ -203,7 +201,9 @@ class VtfImageFile(ImageFile.ImageFile): raise VTFException(msg) header = VTFHeader( - *struct.unpack(HEADER_V70, self.fp.read(struct.calcsize(HEADER_V70))) + *struct.unpack( + " None: flags, 1, 0, - 1.0, - 1.0, - 1.0, - 1.0, + 1, + 1, + 1, + 1, pixel_format, mipmap_count, VtfPF.DXT1, @@ -331,33 +331,30 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None: 2, ) - fp.write(b"VTF\x00" + struct.pack("<2I", *version)) - if version < (7, 2): - size = struct.calcsize(HEADER_V70) + 12 - header = header._replace(header_size=size + (16 - size % 16)) - fp.write(struct.pack(HEADER_V70, *header[:15])) - elif version == (7, 2): - size = struct.calcsize(HEADER_V72) + 12 - header = header._replace(header_size=size + (16 - size % 16)) - fp.write(struct.pack(HEADER_V72, *header[:16])) - else: - size = struct.calcsize(HEADER_V73) + 12 - header = header._replace(header_size=size + (16 - size % 16)) - fp.write(struct.pack(HEADER_V73, *header)) + header_bytes = struct.pack("<" + HEADER_V70, *header[1:15]) + if version >= (7, 2): + header_bytes += struct.pack("= (7, 3): + header_bytes += struct.pack("<3xI8x", header.resource_count) + # Align header size to 16 bytes + if len(header_bytes) % 16: + header_bytes += b"\x00" * (16 - len(header_bytes) % 16) + header_length = 16 + len(header_bytes) + if version >= (7, 3): + header_length += 16 # Resource entries + fp.write(b"VTF\x00" + struct.pack("<2II", *version, header_length)) + fp.write(header_bytes) if version > (7, 2): - fp.write(b"\x01\x00\x00\x00") - fp.write(struct.pack("