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之间绘制一个字符。

  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模块的实例

  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:\Windows\Fonts文件夹下。本实例中用到的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()

python, ImageFont的更多相关文章

  1. Python PIL ImageDraw 和ImageFont模块学习

    ImageDraw 新建一个空白图片为本文作示例,新建空白文件的方法 见Image模块,Image.new: import Image blank = Image.new("RGB" ...

  2. 【Python开发】Python PIL ImageDraw 和ImageFont模块学习

    ImageDraw 新建一个空白图片为本文作示例,新建空白文件的方法 见Image模块,Image.new: mport Image   blank = Image.new("RGB&quo ...

  3. python 小功能

    目录 1.上传文件 2.验证码 一.上传文件 首先了解一下 request.FILES : 字典 request.FILES 中的每一个条目都是一个UploadFile对象.UploadFile对象有 ...

  4. 【Python图像】给你的头像+1

    早些年,微信朋友圈有段时间非常流行这个头像+1的套路,简直逼死强迫症. 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 涉及知识: Pyt ...

  5. 当我学完Python时我学了些什么

    本文是本人学完Python后的一遍回顾,加深理解而已,Python大神请过~ 学习Python的这几天来,觉得Python还是比较简单,容易上手的,就基本语法而言,但是有些高级特性掌握起来还是有些难度 ...

  6. Python模块:PIL

    PIL:是Python Image Library的缩写,图像处理的模块.Image,ImageFont,ImageDraw,ImageFilter Image模块: 常用方法: open() #打开 ...

  7. (python)图片处理Pillow模块的使用

    Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片. 还有一个类为ImageDraw,用来画图. 1. ...

  8. Python 练习册

    01:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果 [图像处理] 类似于图中效果: py 2.7代码: from PIL import Image, Im ...

  9. 用Python给你的博客加上水印

    之前写的博客里面用到的图片都没有加水印,今天才在别的网站上发现自己的博客居然一个字不动的出现在了别人的文章里,而且还不标注出处,简直醉了. 其实博客这种东西讲真我是很愿意让别人看得,因为自己写的也比较 ...

随机推荐

  1. IDEA中更改Tomcat服务器的URL

    先别参考以下的做法,貌似出了点状况,后续修正!!! 直接上图吧 看IDEA的右上角 点击黄色方框内的Edit Configurations,进入以下的编辑面 后面四个框内的都可以修改,当然不要修改和其 ...

  2. mysql查看配置生效

    mysql> show status like 'Threads%';+-------------------+-------+| Variable_name     | Value |+--- ...

  3. 【转载】如何将本地文件上传到github托管

    转自:http://www.cnblogs.com/babywin/p/6073124.html 清楚明白.  

  4. javascript 位操作符

    not: 按位非,符号为波浪线~ 作用吧二进制数的所有位进行非操作,对应的十进制结果为原先10进制数字取负值然后减去1 其他的操作符感觉不是很常用,分别为按位与(&),按位或(|),左移(&l ...

  5. html 入门 "地表最强"干货 你值得拥有

    # 入门 ## 一.前端三剑客 #### html ```完成页面架构的搭建文件: .html``` #### css ```完成页面样式布局(装修)文件: .css``` #### js ```完成 ...

  6. yii2 中excel表导出

    首先下载phpexcel 在引入类文件(在web中index.php入口文件或者控制器中引入) require_once dirname(dirname(__FILE__)).'/excel/PHPE ...

  7. Forth 采用Create,Does>定义新的词(word)& 延迟词技术

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  8. python语法之函数

    函数: 将特定功能代码编写在一个函数里 便于阅读和复用 对一组表达特定功能表达式的封装 使程序模块化 python内置函数: input(),print(),eval()... 函数定义 函数语法格式 ...

  9. ActiveMQ使用介绍及实例

    上一篇讲了rabbitmq的使用以及demo,activemq的思路也与之有相似的地方. activemq是基于Java实现的.activemq没有rabbitmq那么多的路由规则,其通信方式只有两种 ...

  10. apache配置,apache直接打开文件而不下载问题

    apache什么用,如何下载的上面就不说了,apache的配置是一个非常复杂的工作,下面介绍最基本的apache配置吧,再介绍配置文件管理系统. 安装过后需修改配置: 修改httpd.conf配置文件 ...