6.2.0¶
API添加¶
文本笔划¶
stroke_width
和 stroke_fill
参数已添加到文本绘图操作中。它们允许勾勒文本,分别设置笔划的宽度和颜色。如果没有提供, stroke_fill
将默认为 fill
参数。
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")
例如,
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")
创建以下图像:

多监视器窗口上的ImageGrab¶
安 all_screens
参数已添加到 ImageGrab.grab
.如果 True
,所有监视器都将包含在创建的图像中。
安全性¶
这个版本捕获了几个缓冲区溢出,以及寻址CVE-2019-16865。CVE涉及DOS问题,例如消耗大量内存,或者处理图像需要花费大量时间。
在RawDecode.c中,如果skip被计算为小于零,则会抛出一个错误。它的目的是跳过行之间的填充,而不是后退。
在PsdImagePlugin中,如果单个部分的组合大小大于额外数据字段的声明大小,则通过向后搜索查找下一层。现在可以通过寻求(层的开始+额外数据字段的大小)而不是(层的读取部分+层的其余部分)来更正此问题。
解压炸弹检查已添加到GIF和ICO格式。
如果TIFF维度是字符串,而不是尝试对其执行操作,则现在会引发错误。