You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pillow中textsize方法已弃用,求替代方案解决PDF生成报错问题

Pillow中废弃textsize方法的替代方案

Pillow 9.3.0版本起正式废弃了textsize()方法,替代方案是使用textbbox()方法获取文本边界框,进而计算文本宽高,完全兼容原有逻辑。

修改后的代码如下:

def text(self, x, y, text, color, font_size, font_name=IRRELEVANT_FONT_REGULAR):
    """ draws centralized text """
    font = ImageFont.truetype(font_name, font_size) # 指定字体
    # 获取文本边界框,返回格式为(left, top, right, bottom)
    bbox = self.draw.textbbox((0, 0), text, font=font)
    w = bbox[2] - bbox[0]  # 计算文本宽度
    h = bbox[3] - bbox[1]  # 计算文本高度
    # 保持原有的居中绘制逻辑
    self.draw.text(((x - 0.5 * w), (y - 0.5 * h)), text, color, font=font, align="center")

说明

  • textbbox()需要传入一个基准坐标(这里用(0,0)即可,因为我们只需要文本自身的宽高,基准点不影响相对计算),返回文本的四个边界坐标值。
  • 通过边界框的right - left得到宽度,bottom - top得到高度,结果和原textsize()返回的宽高完全一致。
  • 若仅需文本宽度,可单独使用textlength()方法,但这里因需要高度实现居中,textbbox()是更合适的选择。

内容的提问来源于stack exchange,提问作者Duncan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:22:42