• python, ImageFont


    ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方法。

    PIL可以配置是否支持TrueType和OpenType字体

    一、ImageFont模块的函数

    1、  Load

    定义:ImageFont.load(file)⇒ Font instance

    含义:从指定的文件中加载一种字体,该函数返回对应的字体对象。如果该函数失败,将产生IOError异常。

    2、  Load_path

    定义:ImageFont.load_path(file)⇒ Font instance

    含义:和函数load()一样,但是如果没有指定当前路径的话,会从sys.path开始查找指定的字体文件。

    3、  Truetype

    定义1:ImageFont.truetype(file,size) ⇒ Font instance

    含义1:加载一个TrueType或者OpenType字体文件,并且创建一个字体对象。这个函数从指定的文件加载了一个字体对象,并且为指定大小的字体创建了字体对象。

    在windows系统中,如果指定的文件不存在,加载器会顺便看看windows的字体目录下是否存在。

    这个函数需要_imagingft服务。

    定义2:ImageFont.truetype(file,size, encoding=value) ⇒ Font instance

    含义2:(New in 1.1.5)加载一个TrueType或者OpenType字体文件,并且使用指定的编码方式创建一个字体对象。通常的编码方式有“unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman)。

    下面的例子使用MicrosoftSymbol字体,即变量encoding为“symb”,在oxF000和0xF0FF之间绘制一个字符。

    [python] view plain copy
     
    1. font = ImageFont.truetype("symbol.ttf", 16, encoding="symb")  
    2. draw.text((0, 0), unichr(0xF000 + 0xAA))  

    4、  Load_default

    定义:ImageFont.load_default()⇒ Font instance

    含义:(New in 1.1.4)加载一个默认的字体。

    二、ImageFont模块的方法

    Font对象必须实现下面的方法,供ImageDraw层使用。

    1、  Getsize

    定义:font.getsize(text)⇒ (width, height)

    含义:返回给定文本的宽度和高度,返回值为2元组。

    2、  Getmask

    定义:font.getmask(text,mode=”“) ⇒ Image object

    含义:为给定的文本返回一个位图。这个位图是PIL内部存储内存的实例(为Image.core接口模块定义)。

    如果字体使用了抗锯齿,位图的模式为“L”,且其最大值为255。否则,它的模式为“1”。

    (New in 1.1.5)可选参数mode用于一些显卡驱动指定自己喜欢的模式;如果为空,渲染器可能会返回任意模式。注意:该模式总是一个字符串。

    三、ImageFont模块的实例

    [python] view plain copy
     
    1. >>> from PIL import Image, ImageDraw, ImageFont  
    2. >>> im02 = Image.open("D:\Code\Python\test\img\test02.jpg")  
    3. >>> draw = ImageDraw.Draw(im02)  
    4. >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 20)  
    5. >>> draw.text((30,30), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')  
    6. >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 40)  
    7. >>> draw.text((30,100), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'green')  
    8. >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 60)  
    9. >>> draw.text((30,200), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'blue')  
    10. >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\SIMLI.TTF", 40)  
    11. >>> draw.text((30,300), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')  
    12. >>> ft = ImageFont.truetype("C:\WINDOWS\Fonts\STXINGKA.TTF", 40)  
    13. >>> draw.text((30,400), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'yellow')  
    14. >>> im02.show()  

    在windows系统下,字体文件位于C:WindowsFonts文件夹下。本实例中用到的SIMYOU.TTF为幼圆字体文件,SIMLI.TTF为隶书字体文件,STXINGKA.TTF为行楷字体文件。用户可以根据自己的需要,从Fonts文件夹下选择所需字体文件。

    实例:绘图,随机颜色填充背景,再画上文字,最后对图片进行模糊

    # _*_ coding:utf-8_*_
    from PIL import Image, ImageFilter, ImageDraw, ImageFont
    import random


    def random_char(): # 生成并返回随机字母
    char = chr((random.randint(65, 90)))
    print(char)
    return char


    def random_col1(): # 随机颜色1
    return random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)


    def random_col2(): # 随机颜色2
    return random.randint(32, 127), random.randint(32, 127), random.randint(31, 127)


    # 生成图片
    width = 60*4
    height = 60
    im = Image.new('RGB', (width, height), (255, 255, 255))
    # 创建字体
    font = ImageFont.truetype("C:\WINDOWS\Fonts\SIMYOU.TTF", 38)
    # 生成绘画对象
    im_draw = ImageDraw.Draw(im)
    # 填充每个像素
    for x in range(width):
    for y in range(height):
    im_draw.point((x, y), fill=(random_col1()))
    # 加上字符
    for i in range(4):
    im_draw.text((60*i+10, 10), random_char(), font=font, fill=(random_col1()))

    # im = im.filter(ImageFilter.BLUR)
    im.save('D:\im_draw.jpg', 'JPEG')
    im.show()
  • 相关阅读:
    第八周上机练习
    第七周作业
    第七周上机作业
    第六周作业
    第六周上机作业
    第五周上机作业
    第四周作业
    第四周上机练习
    第三周作业
    第一次上机作业
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8779625.html
Copyright © 2020-2023  润新知