mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
10.3.0
 | 
						|
------
 | 
						|
 | 
						|
Security
 | 
						|
========
 | 
						|
 | 
						|
ImageMath eval()
 | 
						|
^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
.. danger::
 | 
						|
  ``ImageMath.eval()`` uses Python's ``eval()`` function to process the expression
 | 
						|
  string, and carries the security risks of doing so. A direct replacement for this is
 | 
						|
  the new :py:meth:`~PIL.ImageMath.unsafe_eval`, but that carries the same risks. It is
 | 
						|
  not recommended to process expressions without considering this.
 | 
						|
  :py:meth:`~PIL.ImageMath.lambda_eval` is a more secure alternative.
 | 
						|
 | 
						|
:cve:`2024-28219`: Fix buffer overflow in ``_imagingcms.c``
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
In ``_imagingcms.c``, two ``strcpy`` calls were able to copy too much data into fixed
 | 
						|
length strings. This has been fixed by using ``strncpy`` instead.
 | 
						|
 | 
						|
Deprecations
 | 
						|
============
 | 
						|
 | 
						|
ImageCms constants and versions() function
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
A number of constants and a function in :py:mod:`.ImageCms` have been deprecated.
 | 
						|
This includes a table of flags based on LittleCMS version 1 which has been replaced
 | 
						|
with a new class :py:class:`.ImageCms.Flags` based on LittleCMS 2 flags.
 | 
						|
 | 
						|
============================================  ====================================================
 | 
						|
Deprecated                                    Use instead
 | 
						|
============================================  ====================================================
 | 
						|
``ImageCms.DESCRIPTION``                      No replacement
 | 
						|
``ImageCms.VERSION``                          ``PIL.__version__``
 | 
						|
``ImageCms.FLAGS["MATRIXINPUT"]``             :py:attr:`.ImageCms.Flags.CLUT_POST_LINEARIZATION`
 | 
						|
``ImageCms.FLAGS["MATRIXOUTPUT"]``            :py:attr:`.ImageCms.Flags.FORCE_CLUT`
 | 
						|
``ImageCms.FLAGS["MATRIXONLY"]``              No replacement
 | 
						|
``ImageCms.FLAGS["NOWHITEONWHITEFIXUP"]``     :py:attr:`.ImageCms.Flags.NOWHITEONWHITEFIXUP`
 | 
						|
``ImageCms.FLAGS["NOPRELINEARIZATION"]``      :py:attr:`.ImageCms.Flags.CLUT_PRE_LINEARIZATION`
 | 
						|
``ImageCms.FLAGS["GUESSDEVICECLASS"]``        :py:attr:`.ImageCms.Flags.GUESSDEVICECLASS`
 | 
						|
``ImageCms.FLAGS["NOTCACHE"]``                :py:attr:`.ImageCms.Flags.NOCACHE`
 | 
						|
``ImageCms.FLAGS["NOTPRECALC"]``              :py:attr:`.ImageCms.Flags.NOOPTIMIZE`
 | 
						|
``ImageCms.FLAGS["NULLTRANSFORM"]``           :py:attr:`.ImageCms.Flags.NULLTRANSFORM`
 | 
						|
``ImageCms.FLAGS["HIGHRESPRECALC"]``          :py:attr:`.ImageCms.Flags.HIGHRESPRECALC`
 | 
						|
``ImageCms.FLAGS["LOWRESPRECALC"]``           :py:attr:`.ImageCms.Flags.LOWRESPRECALC`
 | 
						|
``ImageCms.FLAGS["GAMUTCHECK"]``              :py:attr:`.ImageCms.Flags.GAMUTCHECK`
 | 
						|
``ImageCms.FLAGS["WHITEBLACKCOMPENSATION"]``  :py:attr:`.ImageCms.Flags.BLACKPOINTCOMPENSATION`
 | 
						|
``ImageCms.FLAGS["BLACKPOINTCOMPENSATION"]``  :py:attr:`.ImageCms.Flags.BLACKPOINTCOMPENSATION`
 | 
						|
``ImageCms.FLAGS["SOFTPROOFING"]``            :py:attr:`.ImageCms.Flags.SOFTPROOFING`
 | 
						|
``ImageCms.FLAGS["PRESERVEBLACK"]``           :py:attr:`.ImageCms.Flags.NONEGATIVES`
 | 
						|
``ImageCms.FLAGS["NODEFAULTRESOURCEDEF"]``    :py:attr:`.ImageCms.Flags.NODEFAULTRESOURCEDEF`
 | 
						|
``ImageCms.FLAGS["GRIDPOINTS"]``              :py:attr:`.ImageCms.Flags.GRIDPOINTS()`
 | 
						|
``ImageCms.versions()``                       :py:func:`PIL.features.version_module` with
 | 
						|
                                              ``feature="littlecms2"``, :py:data:`sys.version` or
 | 
						|
                                              :py:data:`sys.version_info`, and ``PIL.__version__``
 | 
						|
============================================  ====================================================
 | 
						|
 | 
						|
ImageMath.eval()
 | 
						|
^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
``ImageMath.eval()`` has been deprecated. Use :py:meth:`~PIL.ImageMath.lambda_eval` or
 | 
						|
:py:meth:`~PIL.ImageMath.unsafe_eval` instead. See earlier security notes for more
 | 
						|
information.
 | 
						|
 | 
						|
API Changes
 | 
						|
===========
 | 
						|
 | 
						|
Added alpha_quality argument when saving WebP images
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
When saving WebP images, an ``alpha_quality`` argument can be passed to the encoder. It
 | 
						|
is an integer value between 0 to 100, where values other than 100 will provide lossy
 | 
						|
compression.
 | 
						|
 | 
						|
Negative kmeans error
 | 
						|
^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
When calling :py:meth:`~PIL.Image.Image.quantize`, a negative ``kmeans`` will now
 | 
						|
raise a :py:exc:`ValueError`, unless a palette is supplied to make the value redundant.
 | 
						|
 | 
						|
Negative P1-P3 PPM value error
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
If a P1-P3 PPM image contains a negative value, a :py:exc:`ValueError` will now be
 | 
						|
raised.
 | 
						|
 | 
						|
API Additions
 | 
						|
=============
 | 
						|
 | 
						|
Added PerspectiveTransform
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
:py:class:`~PIL.ImageTransform.PerspectiveTransform` has been added, meaning
 | 
						|
that all of the :py:data:`~PIL.Image.Transform` values now have a corresponding
 | 
						|
subclass of :py:class:`~PIL.ImageTransform.Transform`.
 | 
						|
 | 
						|
Other Changes
 | 
						|
=============
 | 
						|
 | 
						|
Portable FloatMap (PFM) images
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Support has been added for reading and writing grayscale (Pf format)
 | 
						|
Portable FloatMap (PFM) files containing ``F`` data.
 | 
						|
 | 
						|
Release GIL when fetching WebP frames
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
Python's Global Interpreter Lock is now released when fetching WebP frames from
 | 
						|
the libwebp decoder.
 | 
						|
 | 
						|
Type hints
 | 
						|
^^^^^^^^^^
 | 
						|
 | 
						|
Pillow now has type hints for a large part of its modules, and the package
 | 
						|
includes a ``py.typed`` file and the ``Typing :: Typed`` Trove classifier.
 |