?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 10.0.0 版本移除了 ImageFont.getsize()
方法,導致你在代碼中使用 w, h = self.font.getsize(label)
時,會產生 AttributeError: 'FreeTypeFont' object has no attribute 'getsize'
這樣的錯誤。
原因
- 方法移除:
ImageFont.getsize()
?方法及相關功能在 Pillow 10.0.0 版本中被正式移除。這意味著任何依賴該功能的代碼,在使用 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] # 計算文本的寬度和高度
也可以降低版本