change default resampling filter for ImageOps.pad(), ImageOps.scale() and ImageOps.fit()

This commit is contained in:
Alexander 2019-12-17 18:15:02 +03:00
parent ac92836e81
commit 4da9858709
8 changed files with 15 additions and 11 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -47,12 +47,16 @@ Setting the size of TIFF images
Setting the size of a TIFF image directly (eg. ``im.size = (256, 256)``) throws Setting the size of a TIFF image directly (eg. ``im.size = (256, 256)``) throws
an error. Use ``Image.resize`` instead. an error. Use ``Image.resize`` instead.
Default resize resampling filter Default resampling filter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
The default resampling filter for the ``Image.resize`` method is changed to The default resampling filter is changed to high-quality convolution
high-quality convolution ``Image.BICUBIC`` instead of ``Image.NEAREST``. ``Image.BICUBIC`` instead of ``Image.NEAREST`` for the :py:meth:`~PIL.Image.Image.resize`
method and for :py:meth:`~PIL.ImageOps.pad``, :py:meth:`~PIL.ImageOps.scale``
and :py:meth:`~PIL.ImageOps.fit`` functions.
``Image.NEAREST`` is still always used for images in "P" and "1" modes. ``Image.NEAREST`` is still always used for images in "P" and "1" modes.
See :ref:`concept-filters` to learn the difference. In short,
``Image.NEAREST`` is a very fast and simple but low-quality filter.
API Changes API Changes

View File

@ -221,7 +221,7 @@ def colorize(image, black, white, mid=None, blackpoint=0, whitepoint=255, midpoi
return _lut(image, red + green + blue) return _lut(image, red + green + blue)
def pad(image, size, method=Image.NEAREST, color=None, centering=(0.5, 0.5)): def pad(image, size, method=Image.BICUBIC, color=None, centering=(0.5, 0.5)):
""" """
Returns a sized and padded version of the image, expanded to fill the Returns a sized and padded version of the image, expanded to fill the
requested aspect ratio and size. requested aspect ratio and size.
@ -230,7 +230,7 @@ def pad(image, size, method=Image.NEAREST, color=None, centering=(0.5, 0.5)):
:param size: The requested output size in pixels, given as a :param size: The requested output size in pixels, given as a
(width, height) tuple. (width, height) tuple.
:param method: What resampling method to use. Default is :param method: What resampling method to use. Default is
:py:attr:`PIL.Image.NEAREST`. :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`.
:param color: The background color of the padded image. :param color: The background color of the padded image.
:param centering: Control the position of the original image within the :param centering: Control the position of the original image within the
padded version. padded version.
@ -280,7 +280,7 @@ def crop(image, border=0):
return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) return image.crop((left, top, image.size[0] - right, image.size[1] - bottom))
def scale(image, factor, resample=Image.NEAREST): def scale(image, factor, resample=Image.BICUBIC):
""" """
Returns a rescaled image by a specific factor given in parameter. Returns a rescaled image by a specific factor given in parameter.
A factor greater than 1 expands the image, between 0 and 1 contracts the A factor greater than 1 expands the image, between 0 and 1 contracts the
@ -288,8 +288,8 @@ def scale(image, factor, resample=Image.NEAREST):
:param image: The image to rescale. :param image: The image to rescale.
:param factor: The expansion factor, as a float. :param factor: The expansion factor, as a float.
:param resample: An optional resampling filter. Same values possible as :param resample: What resampling method to use. Default is
in the PIL.Image.resize function. :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`.
:returns: An :py:class:`~PIL.Image.Image` object. :returns: An :py:class:`~PIL.Image.Image` object.
""" """
if factor == 1: if factor == 1:
@ -363,7 +363,7 @@ def expand(image, border=0, fill=0):
return out return out
def fit(image, size, method=Image.NEAREST, bleed=0.0, centering=(0.5, 0.5)): def fit(image, size, method=Image.BICUBIC, bleed=0.0, centering=(0.5, 0.5)):
""" """
Returns a sized and cropped version of the image, cropped to the Returns a sized and cropped version of the image, cropped to the
requested aspect ratio and size. requested aspect ratio and size.
@ -374,7 +374,7 @@ def fit(image, size, method=Image.NEAREST, bleed=0.0, centering=(0.5, 0.5)):
:param size: The requested output size in pixels, given as a :param size: The requested output size in pixels, given as a
(width, height) tuple. (width, height) tuple.
:param method: What resampling method to use. Default is :param method: What resampling method to use. Default is
:py:attr:`PIL.Image.NEAREST`. :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`.
:param bleed: Remove a border around the outside of the image from all :param bleed: Remove a border around the outside of the image from all
four edges. The value is a decimal percentage (use 0.01 for four edges. The value is a decimal percentage (use 0.01 for
one percent). The default value is 0 (no border). one percent). The default value is 0 (no border).