Python图像处理库PIL的ImageFont模块使用介绍
作者:icamera0 发布时间:2023-12-20 10:30:42
ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方法。
PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式。
从版本1.1.4开始,PIL可以配置是否支持TrueType和OpenType字体(和FreeType库支持其他的字体格式一样)。对于更早的版本,只在imToolkit包中支持TrueType字体。
TrueType采用几何学中二次 * 条曲线及直线来描述字体的外形轮廓,其特点是:TrueType既可以作打印字体,又可以用作屏幕显示;由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或缩小,字符总是光滑的,不会有锯齿出现。但相对PostScript字体来说,其质量要差一些。特别是在文字太小时,就表现得不是很清楚。
OpenType也叫Type 2字体,是由Microsoft和Adobe公司开发的另外一种字体格式。它也是一种轮廓字体,比TrueType更为强大,最明显的一个好处就是可以在把PostScript字体嵌入到TrueType的软件中。并且还支持多个平台,支持很大的字符集,还有版权保护。可以说它是Type 1和TrueType的超集。OpenType的主要优点:1)增强的跨平台功能 2)更好的支持Unicode标准定义的国际字符集 3)支持高级印刷控制能力 4)生成的文件尺寸更小 5)支持在字符集中加入数字签名,保证文件的集成功能。
OpenType标准还定义了OpenType文件名称的后缀名。包含TureType字体的OpenType文件后缀名为.ttf,包含PostScript字体的文件后缀名为.OTF。如果是包含一系列TrueType字体的字体包文件,那么后缀名为.TTC。
一、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之间绘制一个字符。
font = ImageFont.truetype("symbol.ttf", 16, encoding="symb")
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模块的实例
>>> from PIL import Image, ImageDraw, ImageFont
>>> im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> draw = ImageDraw.Draw(im02)
>>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 20)
>>> draw.text((30,30), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')
>>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 40)
>>> draw.text((30,100), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'green')
>>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 60)
>>> draw.text((30,200), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'blue')
>>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMLI.TTF", 40)
>>> draw.text((30,300), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'red')
>>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\STXINGKA.TTF", 40)
>>> draw.text((30,400), u"Python图像处理库PIL从入门到精通",font = ft, fill = 'yellow')
>>> im02.show()
在windows系统下,字体文件位于C:\Windows\Fonts文件夹下。本实例中用到的SIMYOU.TTF为幼圆字体文件,SIMLI.TTF为隶书字体文件,STXINGKA.TTF为行楷字体文件。用户可以根据自己的需要,从Fonts文件夹下选择所需字体文件。
字体的大小,可以根据定义字体时的第二个参数来设定。
本实例中图像im02如下图所示:
来源:https://blog.csdn.net/icamera0/article/details/50762050
猜你喜欢
- 匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]应用:计算字符串的长度(一
- 建立池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户
- 本文介绍了如何在pytorch下搭建AlexNet,使用了两种方法,一种是直接加载预训练模型,并根据自己的需要微调(将最后一层全连接层输出由
- 很佩服国外一些前端开发人员对待学问的研究精神,他们很善于总结发现。看到一篇关于安全字体List of Web Safe Fonts的文章,里
- 在一些特殊的业务场景中,我们需要一次性提取一张图片中的色卡信息,并且需要使用十六进制的颜色表示方法进行展示。今天得空做了一个小工具,用来自定
- 在我们制作网页的时候会经常碰到一些需求,如果不知道方法,说不定会困扰我们半天。其实实现它们都很简单,下面我们就一起来看看这些常用的网页编辑方
- 故障状况:php网站连接mysql失败,但在命令行下通过mysql命令可登录并正常操作。解决方案:1、命令行下登录mysql,执行以下命令:
- openpyxl 的用法实例1.1 Openpyxl 库的安装使用openpyxl 模块是一个读写 Excel 2010 文档的 Pytho
- Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个逻辑运算符意义and双值运算符,如果左右两个条件都为真,则得到的值就为
- 匿名管道管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么
- RegExp就是建立正则的对像。如:Set regEx = New RegExp regE
- 以下代码以Python3.6.1为例hashlib : 不可逆加密hmac : 不可逆键值对方式加密hashlib模块简介:hashlib模
- 本文通过实例解析了 SQL Server 数据库扩展存储过程,实现远程备份与恢复的方法和步骤实例说明: 环境:win2k+sqlserver
- 生成器(generator)概念生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIter
- 用法示例:import random# 1)随机小数print(random.random()) # 获取大于0且小于1 之间的小数 &nb
- 前言众所周知我们获取的第一手数据往往都是比较杂乱无章的,这些文件保存一般都是csv文件或者是excel文件,读取转换成DataFrame还有
- asp之字符串函数示例用字符串函数对字符串进行截头去尾、大小写替换等操作。函数语 * 能LenLen(string|varname)返回字符串
- 阅读上一节:美化段落文本 Ⅰweb标准知识——美化段落文本 Ⅱ懒,可能是唯一解释为什么这么长时间才写这一篇的主要原因。不述详情,以此责心。上
- 在内容为主的网站中,搜索框往往是最常用的设计元素之一。从可用性的角度来看,搜索功能是用户有了明确的内容想看的时候最后使用的功能。如果一个网站
- 本文实例为大家分享了python超市商品销售管理系统的具体代码,供大家参考,具体内容如下需求分析:超市销售管理系统功能1.欢迎用户使用超市销