Skip to content

Commit 63ff7ca

Browse files
committed
wip 2 -- zipped parameters
1 parent 46f45f6 commit 63ff7ca

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

src/PIL/DdsImagePlugin.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -503,20 +503,23 @@ def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int
503503
while mask >> (offset + 1) << (offset + 1) == mask:
504504
offset += 1
505505
mask_offsets.append(offset)
506-
mask_totals.append(mask >> offset)
506+
mask_total = mask >> offset
507+
if not mask_total:
508+
mask_totals.append(0)
509+
else:
510+
mask_totals.append(255/mask_total)
507511

508512
data = bytearray()
509513
bytecount = bitcount // 8
510514
dest_length = self.state.xsize * self.state.ysize * len(masks)
515+
consolidated_mask = list(zip(masks, mask_offsets, mask_totals))
511516
while len(data) < dest_length:
512517
value = int.from_bytes(self.fd.read(bytecount), "little")
513-
for i, mask in enumerate(masks):
518+
for mask, offset, total in consolidated_mask:
514519
masked_value = value & mask
515520
# Remove the zero padding, and scale it to 8 bits
516521
data += o8(
517-
int(((masked_value >> mask_offsets[i]) / mask_totals[i]) * 255)
518-
if mask_totals[i]
519-
else 0
522+
int((masked_value >> offset) * total)
520523
)
521524
self.set_as_raw(data)
522525
return -1, 0

0 commit comments

Comments
 (0)