使用了PIL库。
PIL有3个模块
Image,ImageFont,ImageDraw。
可以参考大佬们的相关学习链接:
Image模块:
Python图像处理PIL各模块详细介绍_章子雎的博客-CSDN博客_pil.image
ImageFont模块:
Python图像处理库PIL的ImageFont模块介绍_icamera0的博客-CSDN博客_imagefont.truetype
ImageDraw模块:
Python图像处理库PIL的ImageDraw模块介绍_icamera0的博客-CSDN博客
直接给出代码:
调用了PIL,time(计时)库,如果Python环境配置正确不会报错。
from PIL import Image,ImageFont,ImageDraw
import time
def size_add(tuple_file,add): #将tuple_file(二维元组)加宽add,以元组输出
tuple_file=list(tuple_file)
print(‘文本占用像素:’,tuple_file)
tuple_file[0]=tuple_file[0]+100 ; tuple_file[1]=tuple_file[1]+100
return tuple(tuple_file)
print(‘这是一个文字转图片的工具,输出为JPG格式。’)
file_place=input(‘输入文本的路径:如E:\\Python_file\\文字转图片\\temp.txt’)
file_size=int(input(‘输入字体大小(建议50)’))
time_start=time.perf_counter()
print(‘计时开始,程序运行中…..\n’)
fo=open(file_place,encoding=’utf-8′) #编码方式我utf-8,支持中文
text=fo.read() #读取这个文件,txt格式
fo.close() #关闭打开的文本
im = Image.new(“RGB”, (10, 10), ‘white’) #新建一个图像
draw= ImageDraw.Draw(im) #建立一个绘图的对象
font = ImageFont.truetype(‘C:\\Windows\\Fonts\\simkai.ttf’, file_size) #设置字体格式楷体和大小
im_size=draw.textsize(text,font=font) #得到文本占用像素大小
im_size=size_add(im_size,file_size) ##将文本大小加大一行
im = Image.new(“RGB”, im_size, ‘white’) #创建等大的图像
draw= ImageDraw.Draw(im) #建立一个绘图的对象
draw.text((0,0), text, font=font, fill=”black”) #在图像上打印文字
print(‘运行时间{:.2}秒’.format(time.perf_counter()-time_start))
im.show() #打开这个图片
样例:
常用的函数总结:
Image模块:
Open:加载图片
im = Image.open(
“E:\mywife.jpg”
)
Save:保存图片
im.
save(
“E:\mywife.png”
)
Show:打开图片:
im.show()
format:查看图片格式:
print(im.format)
## 打印出格式信息
Mode:图像的模式:灰度图像,彩色图像等。
print(im.mode)
## 打印出模式信息
Convert:将当前图像转换为其他模式,并且返回新的图像。
new_im = im
.convert
(
‘P’
)
图像的模式:
New:使用给定的变量mode和size生成新的图像:
n_im= Image.
new(
“RGB”
, (
128
,
128
)
,
“green”
)
Copy:拷贝这个图像
im =
Image
.open(
“E:\mywife.jpg”
)
拷贝一个新的图像
Crop:截取图像:
box = (
300
,
100
,
700
,
700
)
##确定拷贝区域大小
region = im.crop(box)
##将im表示的图片对象拷贝到region中,大小为box
Resize:改变图像的尺寸:
region = im.
resize((
400
,
400
)
) ##重新设定大小
Seek:截取GIF图像特定的帧:
im_gif.
show(
3
)
##第
3
帧
ImageDraw模块
Draw:创建一个可以在给定图像上绘图的对象:
draw =ImageDraw.Draw(im01)
Arc:在给定的区域内,在开始和结束角度之间绘制一条弧(圆的一部分)
:
draw.arc((0,0,200,200),0, 90, fill = (255,0,0))
圆,椭圆,长方形等。
Text:在图像中加入英文,不支持中文,不能设置字体大小:
draw.text((0,0),”Hello”, fill = (255,0,0))
ImageDraw模块的option变量:
Option变量有三个属性,分别为outline,fill和font。Outline和fill都可为整数或者元组;font为ImageFont类的实例。变量option的font用于指定所用字体。它应该是类ImangFont的一个实例,使用ImageFont模块的load()方法从文件中加载的。变量options的fill给定文本的颜色:
dr.text((
0
,
0
),
‘Hollow’
, font=font, fill=”#000000″)
位置,转换文本,字体,颜色
Textsize:返回给定字符串的大小,以像素为单位。
draw.textsize(string,options)⇒
(width, height)
ImageFont模块
Truetype:创建一个字体对象。
ImageFont.truetype(file,size)
⇒
Font instance
>>> ft = ImageFont.truetype(“C:\\Windows\\Fonts\\simhei.ttf”, 20)
#楷体
>>> draw.text((30,30), u”Python图像处理库PIL从入门到精通”,font = ft, fill = ‘red’)