如何使用Python ImageDraw库更改字体大小

18
我想使用Python的ImageDraw库改变字体大小。
你可以像这样做:这里有相关说明。
fontPath = "/usr/share/fonts/dejavu-lgc/DejaVuLGCSansCondensed-Bold.ttf"
sans16  =  ImageFont.truetype ( fontPath, 16 )

im  =  Image.new ( "RGB", (200,50), "#ddd" )
draw  =  ImageDraw.Draw ( im )
draw.text ( (10,10), "Run awayyyy!", font=sans16, fill="red" )

问题是我不想指定字体。我想使用默认字体,只改变字体大小。这对我来说似乎应该很简单,但我找不到如何做到这一点的文档。

3个回答

18
根据 PIL 文档ImageDraw 的默认字体是一种位图字体,因此无法缩放。如果需要进行缩放,你需要选择一种 TrueType 字体。希望能够轻易地找到一个外观 "有点像" 你所期望的字体大小的漂亮的 TrueType 字体!

10

只需要这样做

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

def image_char(char,image_size, font_size):
        img = Image.new("RGB", (image_size, image_size), (255,255,255))
        print img.getpixel((0,0))
        draw = ImageDraw.Draw(img)
        font_path = "/Users/admin/Library/Fonts/InputSans-Regular.ttf"
        font = ImageFont.truetype(font_path, font_size)

        draw.text((5, 5), char, (0,0,0),font=font)
        img.show()

main():
       image_char("A",36,16)

if __name__ == '__main__':
       sys.exit(main())

-1
你可以将图像缩小,绘制文本,然后再将图像放大:
im = ImageOps.scale(im, 0.5)
draw = ImageDraw.Draw(im)
draw.text((0, 0),"MyText",(0,0,0))
im = ImageOps.scale(im, 2)

这将有效地将字体大小增加了2倍。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接