Merge pull request #2267 from hugovk/only-save-relevant-sizes

ICO: Only save relevant sizes
This commit is contained in:
wiredfool 2016-12-01 17:18:47 +00:00 committed by GitHub
commit 0957309787
2 changed files with 22 additions and 2 deletions

View File

@ -46,8 +46,10 @@ def _save(im, fp, filename):
[(16, 16), (24, 24), (32, 32), (48, 48),
(64, 64), (128, 128), (256, 256)])
width, height = im.size
filter(lambda x: False if (x[0] > width or x[1] > height or
x[0] > 256 or x[1] > 256) else True, sizes)
sizes = filter(lambda x: False if (x[0] > width or x[1] > height or
x[0] > 256 or x[1] > 256) else True,
sizes)
sizes = list(sizes)
fp.write(struct.pack("<H", len(sizes))) # idCount(2)
offset = fp.tell() + len(sizes)*16
for size in sizes:

View File

@ -61,6 +61,24 @@ class TestFileIco(PillowTestCase):
# Assert
self.assertEqual(im_saved.size, (256, 256))
def test_only_save_relevant_sizes(self):
"""Issue #2266 https://github.com/python-pillow/Pillow/issues/2266
Should save in 16x16, 24x24, 32x32, 48x48 sizes
and not in 16x16, 24x24, 32x32, 48x48, 48x48, 48x48, 48x48 sizes
"""
# Arrange
im = Image.open("Tests/images/python.ico") # 16x16, 32x32, 48x48
outfile = self.tempfile("temp_saved_python.ico")
# Act
im.save(outfile)
im_saved = Image.open(outfile)
# Assert
self.assertEqual(
im_saved.info['sizes'],
set([(16, 16), (24, 24), (32, 32), (48, 48)]))
if __name__ == '__main__':
unittest.main()