2019-09-14 14:39:58 +03:00
|
|
|
6.2.0
|
|
|
|
-----
|
|
|
|
|
|
|
|
API Additions
|
|
|
|
=============
|
|
|
|
|
|
|
|
Text stroking
|
|
|
|
^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
``stroke_width`` and ``stroke_fill`` arguments have been added to text drawing
|
|
|
|
operations. They allow text to be outlined, setting the width of the stroke and
|
|
|
|
and the color respectively. If not provided, ``stroke_fill`` will default to
|
|
|
|
the ``fill`` parameter.
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
|
|
|
|
font = ImageFont.truetype("Tests/fonts/FreeMono.ttf", 40)
|
|
|
|
font.getsize_multiline("A", stroke_width=2)
|
|
|
|
font.getsize("ABC\nAaaa", stroke_width=2)
|
|
|
|
|
|
|
|
im = Image.new("RGB", (100, 100))
|
|
|
|
draw = ImageDraw.Draw(im)
|
|
|
|
draw.textsize("A", font, stroke_width=2)
|
|
|
|
draw.multiline_textsize("ABC\nAaaa", font, stroke_width=2)
|
|
|
|
draw.text((10, 10), "A", "#f00", font, stroke_width=2, stroke_fill="#0f0")
|
|
|
|
draw.multiline_text((10, 10), "A\nB", "#f00", font,
|
|
|
|
stroke_width=2, stroke_fill="#0f0")
|
|
|
|
|
2019-09-14 23:06:28 +03:00
|
|
|
For example,
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
|
|
|
|
im = Image.new("RGB", (120, 130))
|
|
|
|
draw = ImageDraw.Draw(im)
|
|
|
|
font = ImageFont.truetype("Tests/fonts/FreeMono.ttf", 120)
|
|
|
|
draw.text((10, 10), "A", "#f00", font, stroke_width=2, stroke_fill="#0f0")
|
|
|
|
|
|
|
|
|
|
|
|
creates the following image:
|
|
|
|
|
|
|
|
.. image:: ../../Tests/images/imagedraw_stroke_different.png
|
|
|
|
|
2019-09-28 09:43:54 +03:00
|
|
|
ImageGrab on multi-monitor Windows
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
2019-10-06 06:39:10 +03:00
|
|
|
An ``all_screens`` argument has been added to ``ImageGrab.grab``. If ``True``,
|
2019-09-28 09:43:54 +03:00
|
|
|
all monitors will be included in the created image.
|
|
|
|
|
2019-09-14 14:39:58 +03:00
|
|
|
API Changes
|
|
|
|
===========
|
|
|
|
|
|
|
|
Image.getexif
|
|
|
|
^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
To allow for lazy loading of Exif data, ``Image.getexif()`` now returns a
|
|
|
|
shared instance of ``Image.Exif``.
|
|
|
|
|
|
|
|
Deprecations
|
|
|
|
^^^^^^^^^^^^
|
|
|
|
|
2019-09-26 12:30:32 +03:00
|
|
|
Image.frombuffer
|
|
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
There has been a longstanding warning that the defaults of ``Image.frombuffer``
|
|
|
|
may change in the future for the "raw" decoder. The change will now take place
|
|
|
|
in Pillow 7.0.
|
|
|
|
|
2019-09-14 14:39:58 +03:00
|
|
|
Other Changes
|
|
|
|
=============
|
|
|
|
|
|
|
|
Removed bdist_wininst .exe installers
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
.exe installers fell out of favour with PEP 527, and will be deprecated in
|
|
|
|
Python 3.8. Pillow will no longer be distributing them. Wheels should be used
|
|
|
|
instead.
|
|
|
|
|
|
|
|
Flags for libwebp in wheels
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
When building libwebp for inclusion in wheels, Pillow now adds the -O3 and
|
|
|
|
-DNDEBUG CFLAGS. These flags would be used by default if building libwebp
|
|
|
|
without debugging, and using them fixes a significant decrease in speed when
|
|
|
|
a wheel-installed copy of Pillow performs libwebp operations.
|