@@ -82,17 +82,10 @@ def _open(self) -> None:
82
82
# zsize : channels count
83
83
zsize = i16 (s , 10 )
84
84
85
- # layout
86
- layout = bpc , dimension , zsize
87
-
88
85
# determine mode from bits/zsize
89
- rawmode = ""
90
86
try :
91
- rawmode = MODES [layout ]
87
+ rawmode = MODES [( bpc , dimension , zsize ) ]
92
88
except KeyError :
93
- pass
94
-
95
- if rawmode == "" :
96
89
msg = "Unsupported SGI image mode"
97
90
raise ValueError (msg )
98
91
@@ -156,24 +149,15 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None:
156
149
# Run-Length Encoding Compression - Unsupported at this time
157
150
rle = 0
158
151
159
- # Number of dimensions (x,y,z)
160
- dim = 3
161
152
# X Dimension = width / Y Dimension = height
162
153
x , y = im .size
163
- if im .mode == "L" and y == 1 :
164
- dim = 1
165
- elif im .mode == "L" :
166
- dim = 2
167
154
# Z Dimension: Number of channels
168
155
z = len (im .mode )
169
-
170
- if dim in {1 , 2 }:
171
- z = 1
172
-
173
- # assert we've got the right number of bands.
174
- if len (im .getbands ()) != z :
175
- msg = f"incorrect number of bands in SGI write: { z } vs { len (im .getbands ())} "
176
- raise ValueError (msg )
156
+ # Number of dimensions (x,y,z)
157
+ if im .mode == "L" :
158
+ dimension = 1 if y == 1 else 2
159
+ else :
160
+ dimension = 3
177
161
178
162
# Minimum Byte value
179
163
pinmin = 0
@@ -188,7 +172,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None:
188
172
fp .write (struct .pack (">h" , magic_number ))
189
173
fp .write (o8 (rle ))
190
174
fp .write (o8 (bpc ))
191
- fp .write (struct .pack (">H" , dim ))
175
+ fp .write (struct .pack (">H" , dimension ))
192
176
fp .write (struct .pack (">H" , x ))
193
177
fp .write (struct .pack (">H" , y ))
194
178
fp .write (struct .pack (">H" , z ))
0 commit comments