mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-10-31 09:03:06 +00:00 
			
		
		
		
	Make JPEG progressive when resizing
This commit is contained in:
		| @@ -2,6 +2,9 @@ | |||||||
|  |  | ||||||
| from io import BytesIO | from io import BytesIO | ||||||
| from PIL import Image | from PIL import Image | ||||||
|  | # from exceptions import IOError | ||||||
|  | import PIL | ||||||
|  | from django.core.files.base import ContentFile | ||||||
|  |  | ||||||
| def scale_dimension(width, height, long_edge): | def scale_dimension(width, height, long_edge): | ||||||
|     if width > height: |     if width > height: | ||||||
| @@ -11,10 +14,14 @@ def scale_dimension(width, height, long_edge): | |||||||
|     return int(width * ratio), int(height * ratio) |     return int(width * ratio), int(height * ratio) | ||||||
|  |  | ||||||
| def resize_image(im, edge, format): # TODO move that into a utils file | def resize_image(im, edge, format): # TODO move that into a utils file | ||||||
|     from django.core.files.base import ContentFile |  | ||||||
|     (w, h) = im.size |     (w, h) = im.size | ||||||
|     (width, height) = scale_dimension(w, h, long_edge=edge) |     (width, height) = scale_dimension(w, h, long_edge=edge) | ||||||
|     content = BytesIO() |     content = BytesIO() | ||||||
|     im.resize((width, height), Image.ANTIALIAS).save(fp=content, format=format, dpi=[72, 72]) |     im = im.resize((width, height), PIL.Image.ANTIALIAS) | ||||||
|  |     try: | ||||||
|  |         im.save(fp=content, format=format.upper(), quality=90, optimize=True, progressive=True) | ||||||
|  |     except IOError: | ||||||
|  |         PIL.ImageFile.MAXBLOCK = im.size[0] * im.size[1] | ||||||
|  |         im.save(fp=content, format=format.upper(), quality=90, optimize=True, progressive=True) | ||||||
|     return ContentFile(content.getvalue()) |     return ContentFile(content.getvalue()) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user