zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8779625.html
Copyright © 2011-2022 走看看