Commit eef5dfd2 authored by Skia's avatar Skia
Browse files

Make JPEG progressive when resizing

parent 8e3eb1e2
Pipeline #135 failed with stage
in 2 minutes and 51 seconds
...@@ -2,6 +2,9 @@ ...@@ -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): ...@@ -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())
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment