@@ -301,13 +301,13 @@ def load(self):
301301
302302
303303def to_int (s ):
304- b = s .encode (' ascii' )
304+ b = s .encode (" ascii" )
305305 return (b [0 ] << 24 ) | (b [1 ] << 16 ) | (b [2 ] << 8 ) | b [3 ]
306306
307307
308308MAGIC = to_int ("icns" )
309309HEADER_SIZE = 8
310- TOC = ' TOC '
310+ TOC = " TOC "
311311
312312
313313def _save (im , fp , filename ):
@@ -322,37 +322,36 @@ def _save(im, fp, filename):
322322
323323 # size
324324 sizes = [128 , 256 , 512 , 32 , 64 , 256 , 512 , 1024 ]
325- size_str = [' ic07' , ' ic08' , ' ic09' , ' ic11' , ' ic12' , ' ic13' , ' ic14' , ' ic10' ]
325+ size_str = [" ic07" , " ic08" , " ic09" , " ic11" , " ic12" , " ic13" , " ic14" , " ic10" ]
326326 file_size = 0
327327 entries = []
328+ provided_images = {im .width : im for im in im .encoderinfo .get ("append_images" , [])}
328329 for index , s in enumerate (sizes ):
329330 temp = io .BytesIO ()
330- nb = im .resize ((s , s ))
331- nb .save (temp , ' png' )
331+ nb = provided_images [ s ] if s in provided_images else im .resize ((s , s ))
332+ nb .save (temp , " png" )
332333 file_size += len (temp .getvalue ())
333- entries .append ({
334- 'type' : size_str [index ],
335- 'size' : len (temp .getvalue ()),
336- 'stream' : temp
337- })
334+ entries .append (
335+ {"type" : size_str [index ], "size" : len (temp .getvalue ()), "stream" : temp }
336+ )
338337
339338 # Header
340- fp .write (struct .pack ('i' , MAGIC )[::- 1 ])
341- fp .write (struct .pack ('i' , file_size )[::- 1 ])
339+ fp .write (struct .pack ("i" , MAGIC )[::- 1 ])
340+ fp .write (struct .pack ("i" , file_size )[::- 1 ])
342341
343342 # TOC
344343 toc_size = HEADER_SIZE + (len (entries ) * HEADER_SIZE )
345- fp .write (struct .pack ('i' , to_int (TOC ))[::- 1 ])
346- fp .write (struct .pack ('i' , toc_size )[::- 1 ])
344+ fp .write (struct .pack ("i" , to_int (TOC ))[::- 1 ])
345+ fp .write (struct .pack ("i" , toc_size )[::- 1 ])
347346 for e in entries :
348- fp .write (struct .pack ('i' , to_int (e .get (' type' )))[::- 1 ])
349- fp .write (struct .pack ('i' , HEADER_SIZE + e .get (' size' ))[::- 1 ])
347+ fp .write (struct .pack ("i" , to_int (e .get (" type" )))[::- 1 ])
348+ fp .write (struct .pack ("i" , HEADER_SIZE + e .get (" size" ))[::- 1 ])
350349
351350 # Data
352351 for index , e in enumerate (entries ):
353- fp .write (struct .pack ('i' , to_int (e .get (' type' )))[::- 1 ])
354- fp .write (struct .pack ('i' , HEADER_SIZE + e .get (' size' ))[::- 1 ])
355- fp .write (e .get (' stream' ).getvalue ())
352+ fp .write (struct .pack ("i" , to_int (e .get (" type" )))[::- 1 ])
353+ fp .write (struct .pack ("i" , HEADER_SIZE + e .get (" size" ))[::- 1 ])
354+ fp .write (e .get (" stream" ).getvalue ())
356355
357356 fp .flush ()
358357
0 commit comments