在较新版本的 Pillow 库中,ImageFont
对象(如 FreeTypeFont
)确实没有 getsize()
方法。相反,你可以使用 font.getbbox()
或 font.getmetrics()
来获取文本的尺寸。
下面是如何使用这两种方法的示例:
使用 getbbox()
from PIL import ImageFont
# 创建一个字体对象
font_path = "path/to/your/font.ttf" # 字体文件路径
font_size = 20 # 字体大小
font = ImageFont.truetype(font_path, font_size)
# 要测量的文本
text = "Hello, World!"
# 获取文本的边界框 (bounding box)
bbox = font.getbbox(text)
# bbox 是一个四元组 (x0, y0, x1, y1),计算宽高如下:
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
print(f"Text width: {text_width}, Text height: {text_height}")
使用 getmetrics()
如果你只关心高度,可以使用 getmetrics()
方法来获取字体的一些度量信息,但要注意,这不会返回具体文本的宽度:
from PIL import ImageFont
# 创建一个字体对象
font_path = "path/to/your/font.ttf" # 字体文件路径
font_size = 20 # 字体大小
font = ImageFont.truetype(font_path, font_size)
# 获取字体的一些度量信息,通常包含上升、下降等。
ascent, descent = font.getmetrics()
print(f"Ascent: {ascent}, Descent: {descent}")
# 若要计算特定文本的宽度,仍然需要用 getbbox()。
确保你正在使用最新版本的 Pillow 库。如果遇到任何问题,请尝试更新它:
pip install --upgrade Pillow
希望这能帮助你解决问题!
内容由零声教学AI助手提供,问题来源于学员提问