Simplified code

This commit is contained in:
Andrew Murray 2025-04-15 22:35:12 +10:00
parent 507fefbce4
commit 6ab93935a7

View File

@ -82,17 +82,10 @@ class SgiImageFile(ImageFile.ImageFile):
# zsize : channels count
zsize = i16(s, 10)
# layout
layout = bpc, dimension, zsize
# determine mode from bits/zsize
rawmode = ""
try:
rawmode = MODES[layout]
rawmode = MODES[(bpc, dimension, zsize)]
except KeyError:
pass
if rawmode == "":
msg = "Unsupported SGI image mode"
raise ValueError(msg)
@ -156,24 +149,15 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None:
# 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)
# Number of dimensions (x,y,z)
if im.mode == "L":
dim = 1 if y == 1 else 2
else:
dim = 3
# Minimum Byte value
pinmin = 0