永恒python图片_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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值