mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 18:56:17 +03:00
Merge branch 'master' into refs-nitpick
This commit is contained in:
commit
a8fabf9521
|
@ -30,6 +30,7 @@ pip install -U pytest-cov
|
||||||
pip install pyroma
|
pip install pyroma
|
||||||
pip install test-image-results
|
pip install test-image-results
|
||||||
pip install numpy
|
pip install numpy
|
||||||
|
if [ "$TRAVIS_PYTHON_VERSION" == "3.9-dev" ]; then pip install setuptools==47.3.1 ; fi
|
||||||
if [[ $TRAVIS_PYTHON_VERSION == 3.* ]]; then
|
if [[ $TRAVIS_PYTHON_VERSION == 3.* ]]; then
|
||||||
# arm64, ppc64le, s390x CPUs:
|
# arm64, ppc64le, s390x CPUs:
|
||||||
# "ERROR: Could not find a version that satisfies the requirement pyqt5"
|
# "ERROR: Could not find a version that satisfies the requirement pyqt5"
|
||||||
|
|
|
@ -46,6 +46,9 @@ matrix:
|
||||||
env: PYTHONOPTIMIZE=2
|
env: PYTHONOPTIMIZE=2
|
||||||
services: xvfb
|
services: xvfb
|
||||||
|
|
||||||
|
allow_failures:
|
||||||
|
- python: "3.9-dev"
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- |
|
- |
|
||||||
if [ "$LINT" == "true" ]; then
|
if [ "$LINT" == "true" ]; then
|
||||||
|
|
|
@ -5587,7 +5587,7 @@ Pre-fork
|
||||||
any other pixel value means opaque. This is faster than using an
|
any other pixel value means opaque. This is faster than using an
|
||||||
"L" transparency mask.
|
"L" transparency mask.
|
||||||
|
|
||||||
+ Properly writes EPS files (and properly prints images to postscript
|
+ Properly writes EPS files (and properly prints images to PostScript
|
||||||
printers as well).
|
printers as well).
|
||||||
|
|
||||||
+ Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR
|
+ Reads 4-bit BMP files, as well as 4 and 8-bit Windows ICO and CUR
|
||||||
|
@ -5670,7 +5670,7 @@ Pre-fork
|
||||||
+ Added the "pilfile" utility, which quickly identifies image files
|
+ Added the "pilfile" utility, which quickly identifies image files
|
||||||
(without loading them, in most cases).
|
(without loading them, in most cases).
|
||||||
|
|
||||||
+ Added the "pilprint" utility, which prints image files to Postscript
|
+ Added the "pilprint" utility, which prints image files to PostScript
|
||||||
printers.
|
printers.
|
||||||
|
|
||||||
+ Added a rudimentary version of the "pilview" utility, which is
|
+ Added a rudimentary version of the "pilview" utility, which is
|
||||||
|
@ -5684,5 +5684,5 @@ Pre-fork
|
||||||
Jack). This allows you to read images through the Img extensions file
|
Jack). This allows you to read images through the Img extensions file
|
||||||
format handlers. See the file "Lib/ImgExtImagePlugin.py" for details.
|
format handlers. See the file "Lib/ImgExtImagePlugin.py" for details.
|
||||||
|
|
||||||
+ Postscript printing is provided through the PSDraw module. See the
|
+ PostScript printing is provided through the PSDraw module. See the
|
||||||
handbook for details.
|
handbook for details.
|
||||||
|
|
|
@ -93,8 +93,8 @@ can be found here.
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
|
||||||
:class:`PngImagePlugin.iTXt` Class
|
:class:`.PngImagePlugin.iTXt` Class
|
||||||
----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
.. autoclass:: PIL.PngImagePlugin.iTXt
|
.. autoclass:: PIL.PngImagePlugin.iTXt
|
||||||
:members:
|
:members:
|
||||||
|
@ -107,8 +107,8 @@ can be found here.
|
||||||
:param lang: language code
|
:param lang: language code
|
||||||
:param tkey: UTF-8 version of the key name
|
:param tkey: UTF-8 version of the key name
|
||||||
|
|
||||||
:class:`PngImagePlugin.PngInfo` Class
|
:class:`.PngImagePlugin.PngInfo` Class
|
||||||
-------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
.. autoclass:: PIL.PngImagePlugin.PngInfo
|
.. autoclass:: PIL.PngImagePlugin.PngInfo
|
||||||
:members:
|
:members:
|
||||||
|
|
|
@ -34,6 +34,8 @@ extensions = [
|
||||||
"sphinx_removed_in",
|
"sphinx_removed_in",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
|
||||||
|
|
||||||
# The suffix(es) of source filenames.
|
# The suffix(es) of source filenames.
|
||||||
# You can specify multiple suffix as a list of string:
|
# You can specify multiple suffix as a list of string:
|
||||||
# source_suffix = ['.rst', '.md']
|
# source_suffix = ['.rst', '.md']
|
||||||
|
|
|
@ -473,7 +473,7 @@ image formats, EXIF data is not guaranteed to be present in
|
||||||
:py:attr:`~PIL.Image.Image.info` until :py:meth:`~PIL.Image.Image.load` has been
|
:py:attr:`~PIL.Image.Image.info` until :py:meth:`~PIL.Image.Image.load` has been
|
||||||
called.
|
called.
|
||||||
|
|
||||||
The :py:meth:`~PIL.Image.Image.open` method sets the following
|
The :py:func:`~PIL.Image.open` function sets the following
|
||||||
:py:attr:`~PIL.Image.Image.info` properties, when appropriate:
|
:py:attr:`~PIL.Image.Image.info` properties, when appropriate:
|
||||||
|
|
||||||
**chromaticity**
|
**chromaticity**
|
||||||
|
@ -501,12 +501,14 @@ The :py:meth:`~PIL.Image.Image.open` method sets the following
|
||||||
|
|
||||||
This key is omitted if the image is not a transparent palette image.
|
This key is omitted if the image is not a transparent palette image.
|
||||||
|
|
||||||
|
.. _png-text:
|
||||||
|
|
||||||
``open`` also sets ``Image.text`` to a dictionary of the values of the
|
``open`` also sets ``Image.text`` to a dictionary of the values of the
|
||||||
``tEXt``, ``zTXt``, and ``iTXt`` chunks of the PNG image. Individual
|
``tEXt``, ``zTXt``, and ``iTXt`` chunks of the PNG image. Individual
|
||||||
compressed chunks are limited to a decompressed size of
|
compressed chunks are limited to a decompressed size of
|
||||||
``PngImagePlugin.MAX_TEXT_CHUNK``, by default 1MB, to prevent
|
:data:`.PngImagePlugin.MAX_TEXT_CHUNK`, by default 1MB, to prevent
|
||||||
decompression bombs. Additionally, the total size of all of the text
|
decompression bombs. Additionally, the total size of all of the text
|
||||||
chunks is limited to ``PngImagePlugin.MAX_TEXT_MEMORY``, defaulting to
|
chunks is limited to :data:`.PngImagePlugin.MAX_TEXT_MEMORY`, defaulting to
|
||||||
64MB.
|
64MB.
|
||||||
|
|
||||||
The :py:meth:`~PIL.Image.Image.save` method supports the following options:
|
The :py:meth:`~PIL.Image.Image.save` method supports the following options:
|
||||||
|
@ -611,6 +613,8 @@ where applicable:
|
||||||
Any APNG file containing sequence errors is treated as an invalid image. The APNG
|
Any APNG file containing sequence errors is treated as an invalid image. The APNG
|
||||||
loader will not attempt to repair and reorder files containing sequence errors.
|
loader will not attempt to repair and reorder files containing sequence errors.
|
||||||
|
|
||||||
|
.. _apng-saving:
|
||||||
|
|
||||||
Saving
|
Saving
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
||||||
|
@ -774,7 +778,7 @@ The :py:meth:`~PIL.Image.open` method sets the following
|
||||||
|
|
||||||
The :py:attr:`~PIL.Image.Image.tag_v2` attribute contains a dictionary
|
The :py:attr:`~PIL.Image.Image.tag_v2` attribute contains a dictionary
|
||||||
of TIFF metadata. The keys are numerical indexes from
|
of TIFF metadata. The keys are numerical indexes from
|
||||||
:py:attr:`~PIL.TiffTags.TAGS_V2`. Values are strings or numbers for single
|
:py:data:`.TiffTags.TAGS_V2`. Values are strings or numbers for single
|
||||||
items, multiple values are returned in a tuple of values. Rational
|
items, multiple values are returned in a tuple of values. Rational
|
||||||
numbers are returned as a :py:class:`~PIL.TiffImagePlugin.IFDRational`
|
numbers are returned as a :py:class:`~PIL.TiffImagePlugin.IFDRational`
|
||||||
object.
|
object.
|
||||||
|
@ -827,7 +831,7 @@ The :py:meth:`~PIL.Image.Image.save` method can take the following keyword argum
|
||||||
object and setting the type in
|
object and setting the type in
|
||||||
:py:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype` with
|
:py:attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype` with
|
||||||
the appropriate numerical value from
|
the appropriate numerical value from
|
||||||
``TiffTags.TYPES``.
|
:py:data:`.TiffTags.TYPES`.
|
||||||
|
|
||||||
.. versionadded:: 2.3.0
|
.. versionadded:: 2.3.0
|
||||||
|
|
||||||
|
@ -844,7 +848,7 @@ The :py:meth:`~PIL.Image.Image.save` method can take the following keyword argum
|
||||||
|
|
||||||
Previous versions only supported some tags when writing using
|
Previous versions only supported some tags when writing using
|
||||||
libtiff. The supported list is found in
|
libtiff. The supported list is found in
|
||||||
:py:attr:`~PIL:TiffTags.LIBTIFF_CORE`.
|
:py:data:`.TiffTags.LIBTIFF_CORE`.
|
||||||
|
|
||||||
.. versionadded:: 6.1.0
|
.. versionadded:: 6.1.0
|
||||||
|
|
||||||
|
@ -857,7 +861,7 @@ The :py:meth:`~PIL.Image.Image.save` method can take the following keyword argum
|
||||||
**compression**
|
**compression**
|
||||||
A string containing the desired compression method for the
|
A string containing the desired compression method for the
|
||||||
file. (valid only with libtiff installed) Valid compression
|
file. (valid only with libtiff installed) Valid compression
|
||||||
methods are: ``None``, ``"tiff_ccitt"``, ``"group3"``,
|
methods are: :data:`None`, ``"tiff_ccitt"``, ``"group3"``,
|
||||||
``"group4"``, ``"tiff_jpeg"``, ``"tiff_adobe_deflate"``,
|
``"group4"``, ``"tiff_jpeg"``, ``"tiff_adobe_deflate"``,
|
||||||
``"tiff_thunderscan"``, ``"tiff_deflate"``, ``"tiff_sgilog"``,
|
``"tiff_thunderscan"``, ``"tiff_deflate"``, ``"tiff_sgilog"``,
|
||||||
``"tiff_sgilog24"``, ``"tiff_raw_16"``
|
``"tiff_sgilog24"``, ``"tiff_raw_16"``
|
||||||
|
|
|
@ -406,13 +406,13 @@ Using the ImageSequence Iterator class
|
||||||
# ...do something to frame...
|
# ...do something to frame...
|
||||||
|
|
||||||
|
|
||||||
Postscript printing
|
PostScript printing
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
The Python Imaging Library includes functions to print images, text and
|
The Python Imaging Library includes functions to print images, text and
|
||||||
graphics on Postscript printers. Here’s a simple example:
|
graphics on PostScript printers. Here’s a simple example:
|
||||||
|
|
||||||
Drawing Postscript
|
Drawing PostScript
|
||||||
^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
::
|
::
|
||||||
|
@ -453,8 +453,8 @@ If everything goes well, the result is an :py:class:`PIL.Image.Image` object.
|
||||||
Otherwise, an :exc:`OSError` exception is raised.
|
Otherwise, an :exc:`OSError` exception is raised.
|
||||||
|
|
||||||
You can use a file-like object instead of the filename. The object must
|
You can use a file-like object instead of the filename. The object must
|
||||||
implement :py:meth:`~file.read`, :py:meth:`~file.seek` and
|
implement ``file.read``, ``file.seek`` and ``file.tell`` methods,
|
||||||
:py:meth:`~file.tell` methods, and be opened in binary mode.
|
and be opened in binary mode.
|
||||||
|
|
||||||
Reading from an open file
|
Reading from an open file
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -132,7 +132,7 @@ The fields are used as follows:
|
||||||
**parameters**
|
**parameters**
|
||||||
Parameters to the decoder. The contents of this field depends on the
|
Parameters to the decoder. The contents of this field depends on the
|
||||||
decoder specified by the first field in the tile descriptor tuple. If the
|
decoder specified by the first field in the tile descriptor tuple. If the
|
||||||
decoder doesn’t need any parameters, use ``None`` for this field.
|
decoder doesn’t need any parameters, use :data:`None` for this field.
|
||||||
|
|
||||||
Note that the :py:attr:`tile` attribute contains a list of tile descriptors,
|
Note that the :py:attr:`tile` attribute contains a list of tile descriptors,
|
||||||
not just a single descriptor.
|
not just a single descriptor.
|
||||||
|
@ -175,7 +175,7 @@ The fields are used as follows:
|
||||||
|
|
||||||
The **raw mode** field is used to determine how the data should be unpacked to
|
The **raw mode** field is used to determine how the data should be unpacked to
|
||||||
match PIL’s internal pixel layout. PIL supports a large set of raw modes; for a
|
match PIL’s internal pixel layout. PIL supports a large set of raw modes; for a
|
||||||
complete list, see the table in the :py:mod:`Unpack.c` module. The following
|
complete list, see the table in the :file:`Unpack.c` module. The following
|
||||||
table describes some commonly used **raw modes**:
|
table describes some commonly used **raw modes**:
|
||||||
|
|
||||||
+-----------+-----------------------------------------------------------------+
|
+-----------+-----------------------------------------------------------------+
|
||||||
|
|
|
@ -19,7 +19,8 @@ to this::
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
The :py:mod:`~PIL._imaging` module has been moved. You can now import it like this::
|
The :py:mod:`PIL._imaging` module has been moved to :py:mod:`PIL.Image.core`.
|
||||||
|
You can now import it like this::
|
||||||
|
|
||||||
from PIL.Image import core as _imaging
|
from PIL.Image import core as _imaging
|
||||||
|
|
||||||
|
|
|
@ -268,8 +268,8 @@ This flips the input image by using the :data:`FLIP_LEFT_RIGHT` method.
|
||||||
.. automethod:: PIL.Image.Image.load
|
.. automethod:: PIL.Image.Image.load
|
||||||
.. automethod:: PIL.Image.Image.close
|
.. automethod:: PIL.Image.Image.close
|
||||||
|
|
||||||
Attributes
|
Image Attributes
|
||||||
----------
|
----------------
|
||||||
|
|
||||||
Instances of the :py:class:`Image` class have the following attributes:
|
Instances of the :py:class:`Image` class have the following attributes:
|
||||||
|
|
||||||
|
@ -285,7 +285,7 @@ Instances of the :py:class:`Image` class have the following attributes:
|
||||||
|
|
||||||
The file format of the source file. For images created by the library
|
The file format of the source file. For images created by the library
|
||||||
itself (via a factory function, or by running a method on an existing
|
itself (via a factory function, or by running a method on an existing
|
||||||
image), this attribute is set to ``None``.
|
image), this attribute is set to :data:`None`.
|
||||||
|
|
||||||
.. py:attribute:: Image.mode
|
.. py:attribute:: Image.mode
|
||||||
:type: str
|
:type: str
|
||||||
|
@ -314,7 +314,7 @@ Instances of the :py:class:`Image` class have the following attributes:
|
||||||
|
|
||||||
Colour palette table, if any. If mode is "P" or "PA", this should be an
|
Colour palette table, if any. If mode is "P" or "PA", this should be an
|
||||||
instance of the :py:class:`~PIL.ImagePalette.ImagePalette` class.
|
instance of the :py:class:`~PIL.ImagePalette.ImagePalette` class.
|
||||||
Otherwise, it should be set to ``None``.
|
Otherwise, it should be set to :data:`None`.
|
||||||
|
|
||||||
.. py:attribute:: Image.info
|
.. py:attribute:: Image.info
|
||||||
:type: dict
|
:type: dict
|
||||||
|
@ -330,6 +330,16 @@ Instances of the :py:class:`Image` class have the following attributes:
|
||||||
|
|
||||||
Unless noted elsewhere, this dictionary does not affect saving files.
|
Unless noted elsewhere, this dictionary does not affect saving files.
|
||||||
|
|
||||||
|
Classes
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. autoclass:: PIL.Image.Exif
|
||||||
|
:members:
|
||||||
|
:undoc-members:
|
||||||
|
:show-inheritance:
|
||||||
|
.. autoclass:: PIL.Image.ImagePointHandler
|
||||||
|
.. autoclass:: PIL.Image.ImageTransformHandler
|
||||||
|
|
||||||
Constants
|
Constants
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ Methods
|
||||||
.. versionadded:: 1.1.5
|
.. versionadded:: 1.1.5
|
||||||
|
|
||||||
.. note:: This option was broken until version 1.1.6.
|
.. note:: This option was broken until version 1.1.6.
|
||||||
:param joint: Joint type between a sequence of lines. It can be ``"curve"``, for rounded edges, or ``None``.
|
:param joint: Joint type between a sequence of lines. It can be ``"curve"``, for rounded edges, or :data:`None`.
|
||||||
|
|
||||||
.. versionadded:: 5.3.0
|
.. versionadded:: 5.3.0
|
||||||
|
|
||||||
|
|
|
@ -66,3 +66,29 @@ image enhancement filters:
|
||||||
|
|
||||||
.. autoclass:: PIL.ImageFilter.ModeFilter
|
.. autoclass:: PIL.ImageFilter.ModeFilter
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
.. class:: Filter
|
||||||
|
|
||||||
|
An abstract mixin used for filtering images
|
||||||
|
(for use with :py:meth:`~PIL.Image.Image.filter`).
|
||||||
|
|
||||||
|
Implementors must provide the following method:
|
||||||
|
|
||||||
|
.. method:: filter(self, image)
|
||||||
|
|
||||||
|
Applies a filter to a single-band image, or a single band of an image.
|
||||||
|
|
||||||
|
:returns: A filtered copy of the image.
|
||||||
|
|
||||||
|
.. class:: MultibandFilter
|
||||||
|
|
||||||
|
An abstract mixin used for filtering multi-band images
|
||||||
|
(for use with :py:meth:`~PIL.Image.Image.filter`).
|
||||||
|
|
||||||
|
Implementors must provide the following method:
|
||||||
|
|
||||||
|
.. method:: filter(self, image)
|
||||||
|
|
||||||
|
Applies a filter to a multi-band image.
|
||||||
|
|
||||||
|
:returns: A filtered copy of the image.
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
The :py:mod:`~PIL.ImageFont` module defines a class with the same name. Instances of
|
The :py:mod:`~PIL.ImageFont` module defines a class with the same name. Instances of
|
||||||
this class store bitmap fonts, and are used with the
|
this class store bitmap fonts, and are used with the
|
||||||
:py:meth:`PIL.ImageDraw.Draw.text` method.
|
:py:meth:`PIL.ImageDraw.ImageDraw.text` method.
|
||||||
|
|
||||||
PIL uses its own font file format to store bitmap fonts. You can use the
|
PIL uses its own font file format to store bitmap fonts. You can use the
|
||||||
:command:`pilfont` utility from
|
:command:`pilfont` utility from
|
||||||
|
|
|
@ -27,7 +27,7 @@ or the clipboard to a PIL image memory.
|
||||||
.. versionadded:: 6.2.0
|
.. versionadded:: 6.2.0
|
||||||
|
|
||||||
:param xdisplay:
|
:param xdisplay:
|
||||||
X11 Display address. Pass ``None`` to grab the default system screen. Pass ``""`` to grab the default X11 screen on Windows or macOS.
|
X11 Display address. Pass :data:`None` to grab the default system screen. Pass ``""`` to grab the default X11 screen on Windows or macOS.
|
||||||
|
|
||||||
You can check X11 support using :py:func:`PIL.features.check_feature` with ``feature="xcb"``.
|
You can check X11 support using :py:func:`PIL.features.check_feature` with ``feature="xcb"``.
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ objects from PIL images.
|
||||||
|
|
||||||
.. versionadded:: 1.1.6
|
.. versionadded:: 1.1.6
|
||||||
|
|
||||||
.. py:class:: ImageQt.ImageQt(image)
|
.. py:class:: ImageQt(image)
|
||||||
|
|
||||||
Creates an :py:class:`~PIL.ImageQt.ImageQt` object from a PIL
|
Creates an :py:class:`~PIL.ImageQt.ImageQt` object from a PIL
|
||||||
:py:class:`~PIL.Image.Image` object. This class is a subclass of
|
:py:class:`~PIL.Image.Image` object. This class is a subclass of
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
:py:mod:`~PIL.PSDraw` Module
|
:py:mod:`~PIL.PSDraw` Module
|
||||||
============================
|
============================
|
||||||
|
|
||||||
The :py:mod:`~PIL.PSDraw` module provides simple print support for Postscript
|
The :py:mod:`~PIL.PSDraw` module provides simple print support for PostScript
|
||||||
printers. You can print text, graphics and images through this module.
|
printers. You can print text, graphics and images through this module.
|
||||||
|
|
||||||
.. autoclass:: PIL.PSDraw.PSDraw
|
.. autoclass:: PIL.PSDraw.PSDraw
|
||||||
|
|
|
@ -60,3 +60,8 @@ metadata tag numbers, names, and type information.
|
||||||
|
|
||||||
The ``TYPES`` dictionary maps the TIFF type short integer to a
|
The ``TYPES`` dictionary maps the TIFF type short integer to a
|
||||||
human readable type name.
|
human readable type name.
|
||||||
|
|
||||||
|
.. py:data:: PIL.TiffTags.LIBTIFF_CORE
|
||||||
|
:type: list
|
||||||
|
|
||||||
|
A list of supported tag IDs when writing using LibTIFF.
|
||||||
|
|
|
@ -36,3 +36,12 @@ Internal Modules
|
||||||
|
|
||||||
This is the master version number for Pillow,
|
This is the master version number for Pillow,
|
||||||
all other uses reference this module.
|
all other uses reference this module.
|
||||||
|
|
||||||
|
:mod:`PIL.Image.core` Module
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
.. module:: PIL._imaging
|
||||||
|
.. module:: PIL.Image.core
|
||||||
|
|
||||||
|
An internal interface module previously known as :mod:`~PIL._imaging`,
|
||||||
|
implemented in :file:`_imaging.c`.
|
||||||
|
|
|
@ -229,20 +229,12 @@ Plugin reference
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
.. automodule:: PIL.PngImagePlugin
|
.. automodule:: PIL.PngImagePlugin
|
||||||
:members: ChunkStream, PngStream, getchunks, is_cid, putchunk
|
:members: ChunkStream, PngImageFile, PngStream, getchunks, is_cid, putchunk,
|
||||||
:show-inheritance:
|
MAX_TEXT_CHUNK, MAX_TEXT_MEMORY, APNG_BLEND_OP_SOURCE, APNG_BLEND_OP_OVER,
|
||||||
.. autoclass:: PIL.PngImagePlugin.ChunkStream
|
APNG_DISPOSE_OP_NONE, APNG_DISPOSE_OP_BACKGROUND, APNG_DISPOSE_OP_PREVIOUS
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
.. autoclass:: PIL.PngImagePlugin.PngImageFile
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
|
||||||
:show-inheritance:
|
|
||||||
.. autoclass:: PIL.PngImagePlugin.PngStream
|
|
||||||
:members:
|
|
||||||
:undoc-members:
|
:undoc-members:
|
||||||
:show-inheritance:
|
:show-inheritance:
|
||||||
|
:member-order: groupwise
|
||||||
|
|
||||||
|
|
||||||
:mod:`~PIL.PpmImagePlugin` Module
|
:mod:`~PIL.PpmImagePlugin` Module
|
||||||
|
|
|
@ -10,9 +10,9 @@ Several deprecated items have been removed.
|
||||||
resolution', 'resolution unit', and 'date time' has been
|
resolution', 'resolution unit', and 'date time' has been
|
||||||
removed. Underscores should be used instead.
|
removed. Underscores should be used instead.
|
||||||
|
|
||||||
* The methods :py:meth:`PIL.ImageDraw.ImageDraw.setink`,
|
* The methods ``PIL.ImageDraw.ImageDraw.setink``,
|
||||||
:py:meth:`PIL.ImageDraw.ImageDraw.setfill`, and
|
``PIL.ImageDraw.ImageDraw.setfill``, and
|
||||||
:py:meth:`PIL.ImageDraw.ImageDraw.setfont` have been removed.
|
``PIL.ImageDraw.ImageDraw.setfont`` have been removed.
|
||||||
|
|
||||||
|
|
||||||
Closing Files When Opening Images
|
Closing Files When Opening Images
|
||||||
|
|
|
@ -34,9 +34,9 @@ Removed Deprecated Items
|
||||||
|
|
||||||
Several deprecated items have been removed.
|
Several deprecated items have been removed.
|
||||||
|
|
||||||
* The methods :py:meth:`PIL.ImageWin.Dib.fromstring`,
|
* The methods ``PIL.ImageWin.Dib.fromstring``,
|
||||||
:py:meth:`PIL.ImageWin.Dib.tostring` and
|
``PIL.ImageWin.Dib.tostring`` and
|
||||||
:py:meth:`PIL.TiffImagePlugin.ImageFileDirectory_v2.as_dict` have
|
``PIL.TiffImagePlugin.ImageFileDirectory_v2.as_dict`` have
|
||||||
been removed.
|
been removed.
|
||||||
|
|
||||||
* Before Pillow 4.2.0, attempting to save an RGBA image as JPEG would
|
* Before Pillow 4.2.0, attempting to save an RGBA image as JPEG would
|
||||||
|
|
|
@ -124,7 +124,7 @@ This release contains several performance improvements:
|
||||||
* ``Image.transpose`` has been accelerated 15% or more by using a cache
|
* ``Image.transpose`` has been accelerated 15% or more by using a cache
|
||||||
friendly algorithm.
|
friendly algorithm.
|
||||||
* ImageFilters based on Kernel convolution are significantly faster
|
* ImageFilters based on Kernel convolution are significantly faster
|
||||||
due to the new MultibandFilter feature.
|
due to the new :py:class:`~PIL.ImageFilter.MultibandFilter` feature.
|
||||||
* All memory allocation for images is now done in blocks, rather than
|
* All memory allocation for images is now done in blocks, rather than
|
||||||
falling back to an allocation for each scan line for images larger
|
falling back to an allocation for each scan line for images larger
|
||||||
than the block size.
|
than the block size.
|
||||||
|
|
|
@ -34,7 +34,7 @@ Curved joints for line sequences
|
||||||
``ImageDraw.Draw.line`` draws a line, or lines, between points. Previously,
|
``ImageDraw.Draw.line`` draws a line, or lines, between points. Previously,
|
||||||
when multiple points are given, for a larger ``width``, the joints between
|
when multiple points are given, for a larger ``width``, the joints between
|
||||||
these lines looked unsightly. There is now an additional optional argument,
|
these lines looked unsightly. There is now an additional optional argument,
|
||||||
``joint``, defaulting to ``None``. When it is set to ``curved``, the joints
|
``joint``, defaulting to :data:`None`. When it is set to ``curved``, the joints
|
||||||
between the lines will become rounded.
|
between the lines will become rounded.
|
||||||
|
|
||||||
ImageOps.colorize
|
ImageOps.colorize
|
||||||
|
|
|
@ -66,7 +66,7 @@ See :ref:`concept-filters` to learn the difference. In short,
|
||||||
Image.draft() return value
|
Image.draft() return value
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
If the :py:meth:`~PIL.Image.Image.draft` method has no effect, it returns ``None``.
|
If the :py:meth:`~PIL.Image.Image.draft` method has no effect, it returns :data:`None`.
|
||||||
If it does have an effect, then it previously returned the image itself.
|
If it does have an effect, then it previously returned the image itself.
|
||||||
However, unlike other `chain methods`_, :py:meth:`~PIL.Image.Image.draft` does not
|
However, unlike other `chain methods`_, :py:meth:`~PIL.Image.Image.draft` does not
|
||||||
return a modified version of the image, but modifies it in-place. So instead, if
|
return a modified version of the image, but modifies it in-place. So instead, if
|
||||||
|
@ -95,7 +95,7 @@ the closer the result to the fair resampling. The smaller ``reducing_gap``,
|
||||||
the faster resizing. With ``reducing_gap`` greater or equal to 3.0,
|
the faster resizing. With ``reducing_gap`` greater or equal to 3.0,
|
||||||
the result is indistinguishable from fair resampling.
|
the result is indistinguishable from fair resampling.
|
||||||
|
|
||||||
The default value for :py:meth:`~PIL.Image.Image.resize` is ``None``,
|
The default value for :py:meth:`~PIL.Image.Image.resize` is :data:`None`,
|
||||||
which means that the optimization is turned off by default.
|
which means that the optimization is turned off by default.
|
||||||
|
|
||||||
The default value for :py:meth:`~PIL.Image.Image.thumbnail` is 2.0,
|
The default value for :py:meth:`~PIL.Image.Image.thumbnail` is 2.0,
|
||||||
|
|
|
@ -63,7 +63,7 @@ Support has been added for ``ImageGrab.grab()`` on Linux using the X server
|
||||||
with the XCB library.
|
with the XCB library.
|
||||||
|
|
||||||
An optional ``xdisplay`` parameter has been added to select the X server,
|
An optional ``xdisplay`` parameter has been added to select the X server,
|
||||||
with the default value of ``None`` using the default X server.
|
with the default value of :data:`None` using the default X server.
|
||||||
|
|
||||||
Passing a different value on Windows or macOS will force taking a snapshot
|
Passing a different value on Windows or macOS will force taking a snapshot
|
||||||
using the selected X server; pass an empty string to use the default X server.
|
using the selected X server; pass an empty string to use the default X server.
|
||||||
|
|
|
@ -191,7 +191,7 @@ def _accept(prefix):
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Image plugin for Encapsulated Postscript. This plugin supports only
|
# Image plugin for Encapsulated PostScript. This plugin supports only
|
||||||
# a few variants of this format.
|
# a few variants of this format.
|
||||||
|
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
||||||
else:
|
else:
|
||||||
self.info[k] = ""
|
self.info[k] = ""
|
||||||
elif s[0] == "%":
|
elif s[0] == "%":
|
||||||
# handle non-DSC Postscript comments that some
|
# handle non-DSC PostScript comments that some
|
||||||
# tools mistakenly put in the Comments section
|
# tools mistakenly put in the Comments section
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
@ -352,7 +352,7 @@ def _save(im, fp, filename, eps=1):
|
||||||
im.load()
|
im.load()
|
||||||
|
|
||||||
#
|
#
|
||||||
# determine postscript image mode
|
# determine PostScript image mode
|
||||||
if im.mode == "L":
|
if im.mode == "L":
|
||||||
operator = (8, 1, "image")
|
operator = (8, 1, "image")
|
||||||
elif im.mode == "RGB":
|
elif im.mode == "RGB":
|
||||||
|
|
|
@ -717,7 +717,7 @@ class Image:
|
||||||
:param encoder_name: What encoder to use. The default is to
|
:param encoder_name: What encoder to use. The default is to
|
||||||
use the standard "raw" encoder.
|
use the standard "raw" encoder.
|
||||||
:param args: Extra arguments to the encoder.
|
:param args: Extra arguments to the encoder.
|
||||||
:rtype: A bytes object.
|
:returns: A :py:class:`bytes` object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# may pass tuple instead of argument list
|
# may pass tuple instead of argument list
|
||||||
|
@ -1577,6 +1577,13 @@ class Image:
|
||||||
single argument. The function is called once for each
|
single argument. The function is called once for each
|
||||||
possible pixel value, and the resulting table is applied to
|
possible pixel value, and the resulting table is applied to
|
||||||
all bands of the image.
|
all bands of the image.
|
||||||
|
|
||||||
|
It may also be an :py:class:`~PIL.Image.ImagePointHandler`
|
||||||
|
object::
|
||||||
|
|
||||||
|
class Example(Image.ImagePointHandler):
|
||||||
|
def point(self, data):
|
||||||
|
# Return result
|
||||||
:param mode: Output mode (default is same as input). In the
|
:param mode: Output mode (default is same as input). In the
|
||||||
current version, this can only be used if the source image
|
current version, this can only be used if the source image
|
||||||
has mode "L" or "P", and the output has mode "1" or the
|
has mode "L" or "P", and the output has mode "1" or the
|
||||||
|
@ -2352,10 +2359,10 @@ class Image:
|
||||||
object::
|
object::
|
||||||
|
|
||||||
class Example(Image.ImageTransformHandler):
|
class Example(Image.ImageTransformHandler):
|
||||||
def transform(size, method, data, resample, fill=1):
|
def transform(self, size, data, resample, fill=1):
|
||||||
# Return result
|
# Return result
|
||||||
|
|
||||||
It may also be an object with a :py:meth:`~method.getdata` method
|
It may also be an object with a ``method.getdata`` method
|
||||||
that returns a tuple supplying new **method** and **data** values::
|
that returns a tuple supplying new **method** and **data** values::
|
||||||
|
|
||||||
class Example:
|
class Example:
|
||||||
|
@ -2534,12 +2541,20 @@ class Image:
|
||||||
|
|
||||||
|
|
||||||
class ImagePointHandler:
|
class ImagePointHandler:
|
||||||
# used as a mixin by point transforms (for use with im.point)
|
"""
|
||||||
|
Used as a mixin by point transforms
|
||||||
|
(for use with :py:meth:`~PIL.Image.Image.point`)
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ImageTransformHandler:
|
class ImageTransformHandler:
|
||||||
# used as a mixin by geometry transforms (for use with im.transform)
|
"""
|
||||||
|
Used as a mixin by geometry transforms
|
||||||
|
(for use with :py:meth:`~PIL.Image.Image.transform`)
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -2847,8 +2862,8 @@ def open(fp, mode="r"):
|
||||||
:py:func:`~PIL.Image.new`. See :ref:`file-handling`.
|
:py:func:`~PIL.Image.new`. See :ref:`file-handling`.
|
||||||
|
|
||||||
:param fp: A filename (string), pathlib.Path object or a file object.
|
:param fp: A filename (string), pathlib.Path object or a file object.
|
||||||
The file object must implement :py:meth:`~file.read`,
|
The file object must implement ``file.read``,
|
||||||
:py:meth:`~file.seek`, and :py:meth:`~file.tell` methods,
|
``file.seek`, and ``file.tell`` methods,
|
||||||
and be opened in binary mode.
|
and be opened in binary mode.
|
||||||
:param mode: The mode. If given, this argument must be "r".
|
:param mode: The mode. If given, this argument must be "r".
|
||||||
:returns: An :py:class:`~PIL.Image.Image` object.
|
:returns: An :py:class:`~PIL.Image.Image` object.
|
||||||
|
|
|
@ -293,7 +293,7 @@ def logical_xor(image1, image2):
|
||||||
|
|
||||||
def blend(image1, image2, alpha):
|
def blend(image1, image2, alpha):
|
||||||
"""Blend images using constant transparency weight. Alias for
|
"""Blend images using constant transparency weight. Alias for
|
||||||
:py:meth:`PIL.Image.Image.blend`.
|
:py:func:`PIL.Image.blend`.
|
||||||
|
|
||||||
:rtype: :py:class:`~PIL.Image.Image`
|
:rtype: :py:class:`~PIL.Image.Image`
|
||||||
"""
|
"""
|
||||||
|
@ -303,7 +303,7 @@ def blend(image1, image2, alpha):
|
||||||
|
|
||||||
def composite(image1, image2, mask):
|
def composite(image1, image2, mask):
|
||||||
"""Create composite using transparency mask. Alias for
|
"""Create composite using transparency mask. Alias for
|
||||||
:py:meth:`PIL.Image.Image.composite`.
|
:py:func:`PIL.Image.composite`.
|
||||||
|
|
||||||
:rtype: :py:class:`~PIL.Image.Image`
|
:rtype: :py:class:`~PIL.Image.Image`
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Kernel(BuiltinFilter):
|
||||||
version, this must be (3,3) or (5,5).
|
version, this must be (3,3) or (5,5).
|
||||||
:param kernel: A sequence containing kernel weights.
|
:param kernel: A sequence containing kernel weights.
|
||||||
:param scale: Scale factor. If given, the result for each pixel is
|
:param scale: Scale factor. If given, the result for each pixel is
|
||||||
divided by this value. the default is the sum of the
|
divided by this value. The default is the sum of the
|
||||||
kernel weights.
|
kernel weights.
|
||||||
:param offset: Offset. If given, this value is added to the result,
|
:param offset: Offset. If given, this value is added to the result,
|
||||||
after it has been divided by the scale factor.
|
after it has been divided by the scale factor.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# The Python Imaging Library
|
# The Python Imaging Library
|
||||||
# $Id$
|
# $Id$
|
||||||
#
|
#
|
||||||
# simple postscript graphics interface
|
# Simple PostScript graphics interface
|
||||||
#
|
#
|
||||||
# History:
|
# History:
|
||||||
# 1996-04-20 fl Created
|
# 1996-04-20 fl Created
|
||||||
|
@ -20,13 +20,13 @@ import sys
|
||||||
from . import EpsImagePlugin
|
from . import EpsImagePlugin
|
||||||
|
|
||||||
##
|
##
|
||||||
# Simple Postscript graphics interface.
|
# Simple PostScript graphics interface.
|
||||||
|
|
||||||
|
|
||||||
class PSDraw:
|
class PSDraw:
|
||||||
"""
|
"""
|
||||||
Sets up printing to the given file. If **fp** is omitted,
|
Sets up printing to the given file. If **fp** is omitted,
|
||||||
:py:attr:`sys.stdout` is assumed.
|
:py:data:`sys.stdout` is assumed.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, fp=None):
|
def __init__(self, fp=None):
|
||||||
|
@ -41,7 +41,7 @@ class PSDraw:
|
||||||
self.fp.write(bytes(to_write, "UTF-8"))
|
self.fp.write(bytes(to_write, "UTF-8"))
|
||||||
|
|
||||||
def begin_document(self, id=None):
|
def begin_document(self, id=None):
|
||||||
"""Set up printing of a document. (Write Postscript DSC header.)"""
|
"""Set up printing of a document. (Write PostScript DSC header.)"""
|
||||||
# FIXME: incomplete
|
# FIXME: incomplete
|
||||||
self._fp_write(
|
self._fp_write(
|
||||||
"%!PS-Adobe-3.0\n"
|
"%!PS-Adobe-3.0\n"
|
||||||
|
@ -57,7 +57,7 @@ class PSDraw:
|
||||||
self.isofont = {}
|
self.isofont = {}
|
||||||
|
|
||||||
def end_document(self):
|
def end_document(self):
|
||||||
"""Ends printing. (Write Postscript DSC footer.)"""
|
"""Ends printing. (Write PostScript DSC footer.)"""
|
||||||
self._fp_write("%%EndDocument\nrestore showpage\n%%End\n")
|
self._fp_write("%%EndDocument\nrestore showpage\n%%End\n")
|
||||||
if hasattr(self.fp, "flush"):
|
if hasattr(self.fp, "flush"):
|
||||||
self.fp.flush()
|
self.fp.flush()
|
||||||
|
@ -66,7 +66,7 @@ class PSDraw:
|
||||||
"""
|
"""
|
||||||
Selects which font to use.
|
Selects which font to use.
|
||||||
|
|
||||||
:param font: A Postscript font name
|
:param font: A PostScript font name
|
||||||
:param size: Size in points.
|
:param size: Size in points.
|
||||||
"""
|
"""
|
||||||
if font not in self.isofont:
|
if font not in self.isofont:
|
||||||
|
@ -79,7 +79,7 @@ class PSDraw:
|
||||||
def line(self, xy0, xy1):
|
def line(self, xy0, xy1):
|
||||||
"""
|
"""
|
||||||
Draws a line between the two points. Coordinates are given in
|
Draws a line between the two points. Coordinates are given in
|
||||||
Postscript point coordinates (72 points per inch, (0, 0) is the lower
|
PostScript point coordinates (72 points per inch, (0, 0) is the lower
|
||||||
left corner of the page).
|
left corner of the page).
|
||||||
"""
|
"""
|
||||||
xy = xy0 + xy1
|
xy = xy0 + xy1
|
||||||
|
@ -143,10 +143,10 @@ class PSDraw:
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------
|
# --------------------------------------------------------------------
|
||||||
# Postscript driver
|
# PostScript driver
|
||||||
|
|
||||||
#
|
#
|
||||||
# EDROFF.PS -- Postscript driver for Edroff 2
|
# EDROFF.PS -- PostScript driver for Edroff 2
|
||||||
#
|
#
|
||||||
# History:
|
# History:
|
||||||
# 94-01-25 fl: created (edroff 2.04)
|
# 94-01-25 fl: created (edroff 2.04)
|
||||||
|
@ -176,7 +176,7 @@ EDROFF_PS = """\
|
||||||
"""
|
"""
|
||||||
|
|
||||||
#
|
#
|
||||||
# VDI.PS -- Postscript driver for VDI meta commands
|
# VDI.PS -- PostScript driver for VDI meta commands
|
||||||
#
|
#
|
||||||
# History:
|
# History:
|
||||||
# 94-01-25 fl: created (edroff 2.04)
|
# 94-01-25 fl: created (edroff 2.04)
|
||||||
|
|
|
@ -76,21 +76,50 @@ _MODES = {
|
||||||
|
|
||||||
_simple_palette = re.compile(b"^\xff*\x00\xff*$")
|
_simple_palette = re.compile(b"^\xff*\x00\xff*$")
|
||||||
|
|
||||||
# Maximum decompressed size for a iTXt or zTXt chunk.
|
|
||||||
# Eliminates decompression bombs where compressed chunks can expand 1000x
|
|
||||||
MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK
|
MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK
|
||||||
# Set the maximum total text chunk size.
|
"""
|
||||||
|
Maximum decompressed size for a iTXt or zTXt chunk.
|
||||||
|
Eliminates decompression bombs where compressed chunks can expand 1000x.
|
||||||
|
See :ref:`Text in PNG File Format<png-text>`.
|
||||||
|
"""
|
||||||
MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK
|
MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK
|
||||||
|
"""
|
||||||
|
Set the maximum total text chunk size.
|
||||||
|
See :ref:`Text in PNG File Format<png-text>`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
# APNG frame disposal modes
|
# APNG frame disposal modes
|
||||||
APNG_DISPOSE_OP_NONE = 0
|
APNG_DISPOSE_OP_NONE = 0
|
||||||
|
"""
|
||||||
|
No disposal is done on this frame before rendering the next frame.
|
||||||
|
See :ref:`Saving APNG sequences<apng-saving>`.
|
||||||
|
"""
|
||||||
APNG_DISPOSE_OP_BACKGROUND = 1
|
APNG_DISPOSE_OP_BACKGROUND = 1
|
||||||
|
"""
|
||||||
|
This frame’s modified region is cleared to fully transparent black before rendering
|
||||||
|
the next frame.
|
||||||
|
See :ref:`Saving APNG sequences<apng-saving>`.
|
||||||
|
"""
|
||||||
APNG_DISPOSE_OP_PREVIOUS = 2
|
APNG_DISPOSE_OP_PREVIOUS = 2
|
||||||
|
"""
|
||||||
|
This frame’s modified region is reverted to the previous frame’s contents before
|
||||||
|
rendering the next frame.
|
||||||
|
See :ref:`Saving APNG sequences<apng-saving>`.
|
||||||
|
"""
|
||||||
|
|
||||||
# APNG frame blend modes
|
# APNG frame blend modes
|
||||||
APNG_BLEND_OP_SOURCE = 0
|
APNG_BLEND_OP_SOURCE = 0
|
||||||
|
"""
|
||||||
|
All color components of this frame, including alpha, overwrite the previous output
|
||||||
|
image contents.
|
||||||
|
See :ref:`Saving APNG sequences<apng-saving>`.
|
||||||
|
"""
|
||||||
APNG_BLEND_OP_OVER = 1
|
APNG_BLEND_OP_OVER = 1
|
||||||
|
"""
|
||||||
|
This frame should be alpha composited with the previous output image contents.
|
||||||
|
See :ref:`Saving APNG sequences<apng-saving>`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def _safe_zlib_decompress(s):
|
def _safe_zlib_decompress(s):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user