开发者

Pillow 移除或更改了 FreeTypeFont.getsize() 方法及问题解决方案

开发者 https://www.devze.com 2025-05-10 09:16 出处:网络 作者: Sean X
目录原因解决方编程客栈案 w, h = self.font.getsize(label)  # text编程客栈 width, heightAttributeError: 'FreeTypeFont' object has no attribute 'getsize'
目录
  • 原因
  • 解决方编程客栈

 w, h = self.font.getsize(label)  # text编程客栈 width, height

AttributeError: 'FreeTypeFont' object has no attribute 'getsize'

在Pillow 项目的变更日志里可以查到哪个版本移除了 getsize() 方法,Pillow仓库:

Releases · python-pillow/Pillow · github

Pillow 移除或更改了 FreeTypeFont.getsize() 方法及问题解决方案

因为Pillow 10.0.0 版本移除了 ImageFont.getsize() 方法,导致你在代码中使用 w, h = self.font.getsize(label) 时,会产生 AttributeError: 'FreeTypeFont' object has no attribute 'getsize' 这样的错误。

原因

方法移除ImageFont.getsize() 方法及相关功能在 Pillow 10.0.0 版本中被正式ioOEiYJu移除。这意味着任何依赖该功能的代码,在使用 10.0.0 版本或以上版本运行时,都会因为方法不存在而报错。

解决方案

使用 getbbox 方法:这是替代 getsize 的方法,能够提供文本的边界框信息。

你可以通过以下方式调整代码:

# 旧代码
w, h = self.font.getsize(label)  # text width, height
# 新代码,用 getbbox() 替代
bbox = self.font.getbbox(label)
w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]  # 计算文本的宽度和高度

也可以降低版本

到此这篇关于Pillow 移除或更改了 FreeTypeFont.getsize() 方法的文章就介绍到这了,更多相关Pillow FioOEiYJureeTypeFont.getsize() 方法内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望www.devze.com大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号