Python图像处理库PIL的ImageFont模块使用介绍


Posted in Python onFebruary 26, 2020

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

PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式。

从版本1.1.4开始,PIL可以配置是否支持TrueType和OpenType字体(和FreeType库支持其他的字体格式一样)。对于更早的版本,只在imToolkit包中支持TrueType字体。

TrueType采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,其特点是: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如下图所示:

Python图像处理库PIL的ImageFont模块使用介绍

到此这篇关于Python图像处理库PIL的ImageFont模块使用介绍的文章就介绍到这了,更多相关PIL ImageFont模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的一个简单LRU cache
Sep 26 Python
Python list操作用法总结
Nov 10 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
对python判断ip是否可达的实例详解
Jan 31 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
Python生成一个迭代器的实操方法
Jun 18 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python利用FFT进行简单滤波的实现
Feb 26 #Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 #Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 #Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 #Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 #Python
python实现银行实战系统
Feb 26 #Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 #Python
You might like
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python实现获取Ip归属地等信息
2016/08/27 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
一套.net面试题及答案
2016/11/02 面试题
生日宴会答谢词
2014/01/09 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
踏青活动策划方案
2014/08/19 职场文书
学雷锋的心得体会
2014/09/04 职场文书
个人借款协议书范本
2014/11/17 职场文书
安全责任书
2015/01/29 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书