@@ -268,34 +268,25 @@ def _save(im, fp, filename):
268
268
except IOError :
269
269
pass # write uncompressed file
270
270
271
- try :
272
- rawmode = RAWMODE [im .mode ]
271
+ if im .mode in RAWMODE :
273
272
imOut = im
274
- except KeyError :
273
+ else :
275
274
# convert on the fly (EXPERIMENTAL -- I'm not sure PIL
276
275
# should automatically convert images on save...)
277
276
if Image .getmodebase (im .mode ) == "RGB" :
278
277
palette_size = 256
279
278
if im .palette :
280
279
palette_size = len (im .palette .getdata ()[1 ]) // 3
281
280
imOut = im .convert ("P" , palette = 1 , colors = palette_size )
282
- rawmode = "P"
283
281
else :
284
282
imOut = im .convert ("L" )
285
- rawmode = "L"
286
283
287
284
# header
288
285
try :
289
286
palette = im .encoderinfo ["palette" ]
290
287
except KeyError :
291
288
palette = None
292
289
im .encoderinfo ["optimize" ] = im .encoderinfo .get ("optimize" , True )
293
- if im .encoderinfo ["optimize" ]:
294
- # When the mode is L, and we optimize, we end up with
295
- # im.mode == P and rawmode = L, which fails.
296
- # If we're optimizing the palette, we're going to be
297
- # in a rawmode of P anyway.
298
- rawmode = 'P'
299
290
300
291
header , usedPaletteColors = getheader (imOut , palette , im .encoderinfo )
301
292
for s in header :
@@ -352,7 +343,7 @@ def _save(im, fp, filename):
352
343
o8 (8 )) # bits
353
344
354
345
imOut .encoderconfig = (8 , interlace )
355
- ImageFile ._save (imOut , fp , [("gif" , (0 ,0 )+ im .size , 0 , rawmode )])
346
+ ImageFile ._save (imOut , fp , [("gif" , (0 ,0 )+ im .size , 0 , RAWMODE [ imOut . mode ] )])
356
347
357
348
fp .write (b"\0 " ) # end of image data
358
349
0 commit comments