mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-04 13:40:54 +03:00
Merge pull request #2267 from hugovk/only-save-relevant-sizes
ICO: Only save relevant sizes
This commit is contained in:
commit
0957309787
|
@ -46,8 +46,10 @@ def _save(im, fp, filename):
|
||||||
[(16, 16), (24, 24), (32, 32), (48, 48),
|
[(16, 16), (24, 24), (32, 32), (48, 48),
|
||||||
(64, 64), (128, 128), (256, 256)])
|
(64, 64), (128, 128), (256, 256)])
|
||||||
width, height = im.size
|
width, height = im.size
|
||||||
filter(lambda x: False if (x[0] > width or x[1] > height or
|
sizes = filter(lambda x: False if (x[0] > width or x[1] > height or
|
||||||
x[0] > 256 or x[1] > 256) else True, sizes)
|
x[0] > 256 or x[1] > 256) else True,
|
||||||
|
sizes)
|
||||||
|
sizes = list(sizes)
|
||||||
fp.write(struct.pack("<H", len(sizes))) # idCount(2)
|
fp.write(struct.pack("<H", len(sizes))) # idCount(2)
|
||||||
offset = fp.tell() + len(sizes)*16
|
offset = fp.tell() + len(sizes)*16
|
||||||
for size in sizes:
|
for size in sizes:
|
||||||
|
|
|
@ -61,6 +61,24 @@ class TestFileIco(PillowTestCase):
|
||||||
# Assert
|
# Assert
|
||||||
self.assertEqual(im_saved.size, (256, 256))
|
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__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user