mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-30 23:47:27 +03:00 
			
		
		
		
	add tests and docs
This commit is contained in:
		
							parent
							
								
									b38c8e0df2
								
							
						
					
					
						commit
						79c7c7a01a
					
				|  | @ -25,10 +25,7 @@ | ||||||
| __version__ = "0.1" | __version__ = "0.1" | ||||||
| 
 | 
 | ||||||
| import struct | import struct | ||||||
| try: | from io import BytesIO | ||||||
|     from io import BytesIO |  | ||||||
| except ImportError: |  | ||||||
|     from cStringIO import StringIO as BytesIO |  | ||||||
| 
 | 
 | ||||||
| from PIL import Image, ImageFile, BmpImagePlugin, PngImagePlugin, _binary | from PIL import Image, ImageFile, BmpImagePlugin, PngImagePlugin, _binary | ||||||
| from math import log, ceil | from math import log, ceil | ||||||
|  | @ -51,7 +48,7 @@ def _save(im, fp, filename): | ||||||
|     width, height = im.size |     width, height = im.size | ||||||
|     filter(lambda x: False if (x[0] > width or x[1] > height or |     filter(lambda x: False if (x[0] > width or x[1] > height or | ||||||
|                                x[0] > 255 or x[1] > 255) else True, sizes) |                                x[0] > 255 or x[1] > 255) else True, sizes) | ||||||
|     sizes = sorted(sizes, key=lambda x: x[0], reverse=True) |     sizes = sorted(sizes, key=lambda x: x[0]) | ||||||
|     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: | ||||||
|  | @ -64,8 +61,9 @@ def _save(im, fp, filename): | ||||||
|         fp.write(struct.pack("H", 32))  # wBitCount(2) |         fp.write(struct.pack("H", 32))  # wBitCount(2) | ||||||
| 
 | 
 | ||||||
|         image_io = BytesIO() |         image_io = BytesIO() | ||||||
|         im.thumbnail(size, Image.ANTIALIAS) |         tmp = im.copy() | ||||||
|         im.save(image_io, "png") |         tmp.thumbnail(size, Image.ANTIALIAS) | ||||||
|  |         tmp.save(image_io, "png") | ||||||
|         image_io.seek(0) |         image_io.seek(0) | ||||||
|         image_bytes = image_io.read() |         image_bytes = image_io.read() | ||||||
|         bytes_len = len(image_bytes) |         bytes_len = len(image_bytes) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| from helper import unittest, PillowTestCase | from helper import unittest, PillowTestCase, hopper | ||||||
| 
 | 
 | ||||||
|  | import io | ||||||
| from PIL import Image | from PIL import Image | ||||||
| 
 | 
 | ||||||
| # sample ppm stream | # sample ppm stream | ||||||
|  | @ -16,6 +17,18 @@ class TestFileIco(PillowTestCase): | ||||||
|         self.assertEqual(im.size, (16, 16)) |         self.assertEqual(im.size, (16, 16)) | ||||||
|         self.assertEqual(im.format, "ICO") |         self.assertEqual(im.format, "ICO") | ||||||
| 
 | 
 | ||||||
|  |     def test_save_to_bytes(self): | ||||||
|  |         output = io.BytesIO() | ||||||
|  |         im = hopper() | ||||||
|  |         im.save(output, "ico", sizes=[(32, 32), (64, 64)]) | ||||||
|  | 
 | ||||||
|  |         output.seek(0) | ||||||
|  |         reloaded = Image.open(output) | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(im.mode, reloaded.mode) | ||||||
|  |         self.assertEqual((64, 64), reloaded.size) | ||||||
|  |         self.assertEqual(reloaded.format, "ICO") | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|     unittest.main() |     unittest.main() | ||||||
|  |  | ||||||
|  | @ -589,6 +589,14 @@ ICO | ||||||
| 
 | 
 | ||||||
| ICO is used to store icons on Windows. The largest available icon is read. | ICO is used to store icons on Windows. The largest available icon is read. | ||||||
| 
 | 
 | ||||||
|  | The :py:meth:`~PIL.Image.Image.save` method supports the following options: | ||||||
|  | 
 | ||||||
|  | **sizes** | ||||||
|  |     A list of sizes including in this ico file; these are a 2-tuple, | ||||||
|  |     ``(width, height)``; Default to ``[(16, 16), (24, 24), (32, 32), (48, 48), | ||||||
|  |     (64, 64), (128, 128), (255, 255)]``. Any size is bigger then the original | ||||||
|  |     size or 255 will be ignored. | ||||||
|  | 
 | ||||||
| ICNS | ICNS | ||||||
| ^^^^ | ^^^^ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user