From edb0ce9f76effdf92d9829bae4bec3d571962cbc Mon Sep 17 00:00:00 2001 From: JamesHannon Date: Tue, 11 Jul 2023 00:56:30 +0100 Subject: [PATCH 1/2] handle loss of exif by rotating image (#5) * handel loss of exif by rotating image * Update setup.py * Update images.py * Update images.py --- da_vinci/images.py | 6 ++++-- setup.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/da_vinci/images.py b/da_vinci/images.py index 842c523..f9147f5 100644 --- a/da_vinci/images.py +++ b/da_vinci/images.py @@ -2,9 +2,10 @@ import io import os +from pathlib import Path from PIL import Image as PILImage -from PIL import ImageEnhance +from PIL import ImageEnhance, ImageOps from . import formats from .compat import string_types, urlopen, urlparse @@ -32,10 +33,11 @@ def __init__(self, path_or_url): self.name = os.path.basename(path_or_url) else: self._pil_image = PILImage.open(path_or_url) - self.filename = self._pil_image.filename + self.filename = self._pil_image.filename if self._pil_image.filename else path_or_url.name self.name = os.path.basename(self.filename) self._format = self._pil_image.format + self._pil_image = ImageOps.exif_transpose(self._pil_image) self._quality = None @property diff --git a/setup.py b/setup.py index 749be60..1cb826f 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup( name='da-vinci', - version='0.2.2', + version='0.2.3', author='Selwin Ong', author_email='selwin.ong@gmail.com', packages=['da_vinci'], From f5c8ec2d3c5e83fc27501b54768df6efa0151a9e Mon Sep 17 00:00:00 2001 From: marsha97 Date: Tue, 11 Jul 2023 20:30:43 +0700 Subject: [PATCH 2/2] fix pillow antialias (#8) --- da_vinci/images.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/da_vinci/images.py b/da_vinci/images.py index f9147f5..e24008e 100644 --- a/da_vinci/images.py +++ b/da_vinci/images.py @@ -2,7 +2,6 @@ import io import os -from pathlib import Path from PIL import Image as PILImage from PIL import ImageEnhance, ImageOps @@ -148,10 +147,15 @@ def resize(self, width=None, height=None, method='stretch'): dimension is completely covered. Aspect ratio is preserved, parts of the image may not be within the specified dimension. """ + try: + resample = PILImage.ANTIALIAS + except AttributeError: + resample = PILImage.LANCZOS + self._pil_image = self._pil_image.resize( calculate_dimensions(width, height, self.width, self.height, method=method), - resample=PILImage.ANTIALIAS + resample=resample ) def crop(self, width, height, center=('50%', '50%'),