Python图像上绘制文本
2022-02-06 本文已影响0人
大龙10
参考资料:
1、脚本之家
https://www.jb51.net/article/204001.htm
2、pillow官方网站
https://pillow.readthedocs.io/en/latest/reference/ImageColor.html
https://pillow.readthedocs.io/en/latest/reference/ImageDraw.html
3、github
https://github.com/pytroll/aggdraw
一、ImageColor模块
该ImageColor模块包含颜色表和从 CSS3 样式颜色说明符到 RGB 元组的转换器。该模块由 PIL.Image.new()和ImageDraw模块等使用。
ImageColor 模块支持以下字符串格式:
- 十六进制颜色说明符
例如,“#ff0000”指定纯红色 - RGB函数
以“rgb(红色,绿色,蓝色)”给出,其中颜色值是0到255范围内的整数,如,“rgb(255,0,0)”和“rgb(100%,0%,0%) - 常见的HTML颜色名称
例如,“red”指定纯红色 - HSL函数
Hue-Saturation-Lightness (HSL) 函数,其中色调是颜色,以 0 到 360 度之间的角度给出(红色=0,绿色=120,蓝色=240),饱和度是 0% 到 100% 之间的值(灰色=0%,全色=100%),亮度是介于 0% 和 100% 之间的值(黑色=0%,正常=50%,白色=100%)。
例如,是纯红色。hsl(hue, saturation%, lightness%)hsl(0,100%,50%) - HSV 函数
Hue-Saturation-Value (HSV) 函数,其中色调和饱和度与 HSL 相同,值介于 0% 和 100% 之间(黑色 = 0%,正常 = 100%)。
例如,是纯红色。这种格式也称为色相-饱和度-亮度 (HSB),可以给出为,其中每个值都按其在 HSV 中的形式使用。hsv(hue, saturation%, value%)hsv(0,100%,100%)hsb(hue, saturation%, brightness%)
二、ImageFont模块
字体模块,PIL.ImageDraw.ImageDraw.text() 中使用。
三、ImageDraw 模块
该模块为对象ImageDraw提供简单的 2D 图形 。可以使用此模块创建新图像、注释或修饰现有图像,以及动态生成图形以供 Web 使用。
有关 PIL 更高级的绘图库,请参阅aggdraw 模块。
四、图像上绘制文本
from PIL import Image, ImageDraw, ImageFont
# get an image
with Image.open("bgra.png").convert("RGBA") as base:
# make a blank image for the text, initialized to transparent text color
txt = Image.new("RGBA", base.size, (255, 255, 255, 0))
# get a font
fnt = ImageFont.truetype("simhei.ttf", 40)
# get a drawing context
d = ImageDraw.Draw(txt)
# draw text, 半透明
d.text((10, 10), "你好", font=fnt, fill=(255, 255, 0, 128))
# draw text, full opacity
d.text((10, 60), "World", font=fnt, fill=(0, 0, 255, 255))
out = Image.alpha_composite(base, txt)
out.show()
运行结果: