Skip to content

AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘ #6

@clhui

Description

@clhui

pillow这个模块在10.0.0以后的版本textsize属性给删除了,如果还想用这个属性
新代码textsize弃用,使用textbbox代替:

ImageDraw.Draw.textbbox(xy, text, font=None, spacing=0, align='left')

其中,各参数的含义如下:

xy:一个二元组 (x, y),表示文本的起始位置,即文本框的左上角坐标。
text:表示要绘制的文本内容。
font:表示字体对象,可以使用 ImageFont.truetype() 方法创建。
spacing:表示行与行之间的间距,默认为 0。
align:表示文本的水平对齐方式,可以是 'left'、'center' 或 'right'。
textbbox() 方法会根据文本内容、字体和起始位置等信息计算出文本框的大小,返回一个四元组 (x0, y0, x1, y1),表示文本框的左上角和右下角坐标。其中,(x0, y0) 表示文本框的左上角坐标,(x1, y1) 表示文本框的右下角坐标。
在绘制文本时,我们可以使用 textbbox() 方法先计算出文本框的大小,然后根据文本框的大小来计算文本的位置,从而确保文本在图片中居中或居左等对齐方式。

实例:

left, top, right, bottom = draw.textbbox((0, 0), text, font)
width, height = right - left, bottom - top

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions