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. Codeforces Round #113 (Div. 2) B. Polygons Andrew求凸包

    B. Polygons time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  2. Sign Up Account In CloudAMQP

    CloudAMQP 有多种账号级别,请参考下面的链接的内容访问你可以注册的级别:https://www.cloudamqp.com/plans.html 作为测试来说,你可以注册免费的的消息. 你可以 ...

  3. 7.6 GRASP原则六: 多态 Polymorphism

    GRASP原则六: 多态 Polymorphism  How to handle alternative behaviors based on type 如何处理依据类型不同而有 不同行为的一类需求 ...

  4. mybat使用注解的方式如@Select写sql

    package com.polymer.app.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibati ...

  5. SpringCloud服务负载均衡实现原理02

  6. sass compass config.rb

    require 'compass/import-once/activate' # Require any additional compass plugins here. # Set this to ...

  7. Win10系列:C#应用控件基础12

    TextBlock控件 TextBlock控件是应用程序开发过程中经常使用的控件之一,它的主要功能是显示一段只读的文本内容.开发者可以使用TextBlock控件来显示提示信息,还可以根据需求将显示的提 ...

  8. 隐藏WORDPRESS账户登录错误信息

    将下面的脚本添加到当前主题的functions.php文件中. function no_wordpress_errors(){  return 'Something is wrong!';}add_f ...

  9. 定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素, 添加另一个集合,删除元素,判断集合中是否包含一个元素, 判断是否为空,清除集合, 返回集合里元素的个数等常用操作。

    package com.lanxi.demo2; import java.util.HashSet; import java.util.Iterator; import java.util.Set; ...

  10. VS遇到的问题记录

    Q:id为xxxx的进程当前未运行 A:将端口改掉.