Python-模块系列-pillow库-图像处理库-获取字体大小外包围矩形

1.概述

  PIL,全称Python Imaging Library,已经是Python平台事实上的图像处理标准库。PIL功能非常强大,但API却非常简单易用。Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持python2和python3。

2.常用对象

  图像颜色:Pillow中的颜色采用一个包含3个元素的元组表示,如(R,G,B)。也可以用具有特定意义的字符串表示,如黑色:‘black’。
  Image:它是Pillow库中最核心的类,表示图像。它有一些常用的方法,如读取图像,保存图像,图像参数等,如下所示:

from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw

# 从文件读取图像
img = Image.open('E:/相册/尼康/花朵.jpg');
print((img.format, img.mode, img.size))  # 输出图片基本信息
data = list(img.getdata())  # 返回图像序列数据并转为rgb列表
img.show();

img_resize = img.resize((256, 256))  # 调整尺寸
img_resize.save("花朵256.jpg")
img_rotate = img.rotate(45)  # 中心逆时针旋转
img_rotate.save("花朵45.jpg")

# 自定义新建图像
img2 = Image.new("RGB", (256, 256), "black")  # 黑色背景
print((img2.format, img2.mode, img2.size))  # 输出图片基本信息

  以上代码中有内容的注释,有几个常用函数功能描述。Pillow库图像处理功能非常强大,上面只是简单实例,后面会逐步更新在文字识别过程中涉及到的函数。

  ImageFont: 它表示一个字体对象。用于在图像上绘制文字。一个简单创建字体的例子,如下所示:

from PIL import ImageFont, ImageDraw, Image

image = Image.new("RGB", (128, 128), "black")  # 黑色背景
draw = ImageDraw.Draw(image) # 绘制对象
# use a truetype font
font = ImageFont.truetype('.\chinese_fonts\DroidSansFallbackFull.ttf', 15)
draw.text((10, 25), "world", font=font)
image.show();

  ImageDraw: 它是一个基于Image的二维绘图类。可以用它生成包含文字,图形和其它需要的自定义图像。如上所示,它绘制一个文字在image上。text方法,原型如下:
PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None)

Draws the string at the given position.–指定位置绘制文字。
参数:
xy – Top left corner of the text.–文字的左上角点
text – Text to be drawn.–需绘制的文本
font – An ImageFont instance.–字体对象
fill – Color to use for the text.–填充颜色

3.获取字体大小外包围矩形

源代码如下所示:

def Pt2MM(val):
    ret = val * 25.4 / 72;
    return ret;

def GetFontRenderSize(text, fontsize):
    canvas = Image.new('RGB', (512, 512));
    draw = ImageDraw.Draw(canvas);
    monospace = ImageFont.truetype(r"msyh.ttc", fontsize);
    draw.text((0, 0), text, font=monospace, fill="white");
    bbox = canvas.getbbox();
    
    # 宽高
    sizept = (bbox[2] - bbox[0], bbox[3] - bbox[1]);
    fontsizewmm = Pt2MM(sizept[0]);
    fontsizehmm = Pt2MM(sizept[1]);
    return (fontsizewmm, fontsizehmm);

4.作者答疑

如有疑问,敬请留言。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值