mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	Change default resize resampling filter
This commit is contained in:
		
							parent
							
								
									995c863200
								
							
						
					
					
						commit
						ac92836e81
					
				| 
						 | 
					@ -754,7 +754,7 @@ class TestFileGif(PillowTestCase):
 | 
				
			||||||
    def test_getdata(self):
 | 
					    def test_getdata(self):
 | 
				
			||||||
        # test getheader/getdata against legacy values
 | 
					        # test getheader/getdata against legacy values
 | 
				
			||||||
        # Create a 'P' image with holes in the palette
 | 
					        # Create a 'P' image with holes in the palette
 | 
				
			||||||
        im = Image._wedge().resize((16, 16))
 | 
					        im = Image._wedge().resize((16, 16), Image.NEAREST)
 | 
				
			||||||
        im.putpalette(ImagePalette.ImagePalette("RGB"))
 | 
					        im.putpalette(ImagePalette.ImagePalette("RGB"))
 | 
				
			||||||
        im.info = {"background": 0}
 | 
					        im.info = {"background": 0}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .helper import PillowTestCase, hopper
 | 
					from .helper import PillowTestCase, hopper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +15,7 @@ class TestImageGetData(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_roundtrip(self):
 | 
					    def test_roundtrip(self):
 | 
				
			||||||
        def getdata(mode):
 | 
					        def getdata(mode):
 | 
				
			||||||
            im = hopper(mode).resize((32, 30))
 | 
					            im = hopper(mode).resize((32, 30), Image.NEAREST)
 | 
				
			||||||
            data = im.getdata()
 | 
					            data = im.getdata()
 | 
				
			||||||
            return data[0], len(data), len(list(data))
 | 
					            return data[0], len(data), len(list(data))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,3 +150,12 @@ class TestImageResize(PillowTestCase):
 | 
				
			||||||
        # Test unknown resampling filter
 | 
					        # Test unknown resampling filter
 | 
				
			||||||
        with hopper() as im:
 | 
					        with hopper() as im:
 | 
				
			||||||
            self.assertRaises(ValueError, im.resize, (10, 10), "unknown")
 | 
					            self.assertRaises(ValueError, im.resize, (10, 10), "unknown")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_default_filter(self):
 | 
				
			||||||
 | 
					        for mode in "L", "RGB", "I", "F":
 | 
				
			||||||
 | 
					            im = hopper(mode)
 | 
				
			||||||
 | 
					            self.assertEqual(im.resize((20, 20), Image.BICUBIC), im.resize((20, 20)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for mode in "1", "P":
 | 
				
			||||||
 | 
					            im = hopper(mode)
 | 
				
			||||||
 | 
					            self.assertEqual(im.resize((20, 20), Image.NEAREST), im.resize((20, 20)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -159,7 +159,8 @@ class TestImageDraw(PillowTestCase):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        im = Image.new("RGB", (W, H))
 | 
					        im = Image.new("RGB", (W, H))
 | 
				
			||||||
        draw = ImageDraw.Draw(im)
 | 
					        draw = ImageDraw.Draw(im)
 | 
				
			||||||
        with Image.open("Tests/images/pil123rgba.png").resize((50, 50)) as small:
 | 
					        with Image.open("Tests/images/pil123rgba.png") as small:
 | 
				
			||||||
 | 
					            small = small.resize((50, 50), Image.NEAREST)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Act
 | 
					            # Act
 | 
				
			||||||
            draw.bitmap((10, 10), small)
 | 
					            draw.bitmap((10, 10), small)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ class TestImageFile(PillowTestCase):
 | 
				
			||||||
    def test_parser(self):
 | 
					    def test_parser(self):
 | 
				
			||||||
        def roundtrip(format):
 | 
					        def roundtrip(format):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            im = hopper("L").resize((1000, 1000))
 | 
					            im = hopper("L").resize((1000, 1000), Image.NEAREST)
 | 
				
			||||||
            if format in ("MSP", "XBM"):
 | 
					            if format in ("MSP", "XBM"):
 | 
				
			||||||
                im = im.convert("1")
 | 
					                im = im.convert("1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,13 @@ 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
 | 
				
			||||||
 | 
					^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The default resampling filter for the ``Image.resize`` method is changed to
 | 
				
			||||||
 | 
					high-quality convolution ``Image.BICUBIC`` instead of ``Image.NEAREST``.
 | 
				
			||||||
 | 
					``Image.NEAREST`` is still always used for images in "P" and "1" modes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
API Changes
 | 
					API Changes
 | 
				
			||||||
===========
 | 
					===========
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1761,7 +1761,7 @@ class Image:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return m_im
 | 
					        return m_im
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def resize(self, size, resample=NEAREST, box=None):
 | 
					    def resize(self, size, resample=BICUBIC, box=None):
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        Returns a resized copy of this image.
 | 
					        Returns a resized copy of this image.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1771,8 +1771,9 @@ class Image:
 | 
				
			||||||
           one of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BOX`,
 | 
					           one of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BOX`,
 | 
				
			||||||
           :py:attr:`PIL.Image.BILINEAR`, :py:attr:`PIL.Image.HAMMING`,
 | 
					           :py:attr:`PIL.Image.BILINEAR`, :py:attr:`PIL.Image.HAMMING`,
 | 
				
			||||||
           :py:attr:`PIL.Image.BICUBIC` or :py:attr:`PIL.Image.LANCZOS`.
 | 
					           :py:attr:`PIL.Image.BICUBIC` or :py:attr:`PIL.Image.LANCZOS`.
 | 
				
			||||||
           If omitted, or if the image has mode "1" or "P", it is
 | 
					           Default filter is :py:attr:`PIL.Image.BICUBIC`.
 | 
				
			||||||
           set :py:attr:`PIL.Image.NEAREST`.
 | 
					           If the image has mode "1" or "P", it is
 | 
				
			||||||
 | 
					           always set :py:attr:`PIL.Image.NEAREST`.
 | 
				
			||||||
           See: :ref:`concept-filters`.
 | 
					           See: :ref:`concept-filters`.
 | 
				
			||||||
        :param box: An optional 4-tuple of floats giving the region
 | 
					        :param box: An optional 4-tuple of floats giving the region
 | 
				
			||||||
           of the source image which should be scaled.
 | 
					           of the source image which should be scaled.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user