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之间绘制一个字符。
- 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文件夹下选择所需字体文件。
实例:绘图,随机颜色填充背景,再画上文字,最后对图片进行模糊
# _*_ 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的更多相关文章
- Python PIL ImageDraw 和ImageFont模块学习
ImageDraw 新建一个空白图片为本文作示例,新建空白文件的方法 见Image模块,Image.new: import Image blank = Image.new("RGB" ...
- 【Python开发】Python PIL ImageDraw 和ImageFont模块学习
ImageDraw 新建一个空白图片为本文作示例,新建空白文件的方法 见Image模块,Image.new: mport Image blank = Image.new("RGB&quo ...
- python 小功能
目录 1.上传文件 2.验证码 一.上传文件 首先了解一下 request.FILES : 字典 request.FILES 中的每一个条目都是一个UploadFile对象.UploadFile对象有 ...
- 【Python图像】给你的头像+1
早些年,微信朋友圈有段时间非常流行这个头像+1的套路,简直逼死强迫症. 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 涉及知识: Pyt ...
- 当我学完Python时我学了些什么
本文是本人学完Python后的一遍回顾,加深理解而已,Python大神请过~ 学习Python的这几天来,觉得Python还是比较简单,容易上手的,就基本语法而言,但是有些高级特性掌握起来还是有些难度 ...
- Python模块:PIL
PIL:是Python Image Library的缩写,图像处理的模块.Image,ImageFont,ImageDraw,ImageFilter Image模块: 常用方法: open() #打开 ...
- (python)图片处理Pillow模块的使用
Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片. 还有一个类为ImageDraw,用来画图. 1. ...
- Python 练习册
01:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果 [图像处理] 类似于图中效果: py 2.7代码: from PIL import Image, Im ...
- 用Python给你的博客加上水印
之前写的博客里面用到的图片都没有加水印,今天才在别的网站上发现自己的博客居然一个字不动的出现在了别人的文章里,而且还不标注出处,简直醉了. 其实博客这种东西讲真我是很愿意让别人看得,因为自己写的也比较 ...
随机推荐
- svg(二)---半瓶子晃荡
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 软工实践练习一 关于GIT的使用
在Github上的操作部分: 1.在Github网站上进行注册.https://github.com/ 2.创建小组Organization. 3.将代码库https://github.com/sef ...
- PHP冒泡排序-手写
<?php $a = [1,3,5,2,9,6]; for ($i = 0 ;$i < count($a) ;$i++) { for ($j = $i + 1;$j < count( ...
- 在1-10中选择一个数,输出x+xx+xxx+xxx....x之和,如:数字为2,则2+22=24
代码: package bao; import java.util.Random; public class a { public static void main(String[] args) { ...
- Yahoo Programming Contest 2019 F - Pass
F - Pass 思路: dp[i][j] 表示到第 i 个球为止放了 j 个蓝球的方案数 第 i 个球来自的位置的最右边是min(i, n) 转移方程看代码 代码: #pragma GCC opti ...
- 20175317 《Java程序设计》第一周学习总结
20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...
- 【文献08】多移动机器人轨迹跟踪控制系统设计与实现-运动学ADRC控制
参考: 陈俊, 俞立, 滕游. 多移动机器人轨迹跟踪控制系统设计与实现[J]. 计算机测量与控制, 2017(7). https://drive.wps.cn/view/p/28819052019?f ...
- LeetCode--025--k个一组翻转链表(java)
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定这个链表: ...
- linux存储管理之文件系统
EXT3/4文件系统 ====================================================================================Ext3: ...
- EL函数库及用法
导入标签库: <%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%&g ...