下面是完整的Python2和Python3实现在图片上加汉字的方法攻略。
准备工作
- 首先,需要安装Pillow库。可以使用pip命令进行安装:
pip install Pillow
- 接着,准备一张需要添加汉字的图片。
加字功能实现
下面是实现在图片上添加汉字的两个示例。
示例1: 添加单行汉字
在这个示例中,我们将在图片中心位置添加一行文本,如下:
from PIL import Image, ImageDraw, ImageFont
# 打开图片
img = Image.open('pic.jpg')
# 取得图片大小
width, height = img.size
# 创建画布
draw = ImageDraw.Draw(img)
# 设置字体、大小
font = ImageFont.truetype('MSYH.TTF', 36)
# 在图片中心加上一行文本
text = u'这是一行文本'
text_width, text_height = draw.textsize(text, font=font)
x = (width - text_width) / 2
y = (height - text_height) / 2
draw.text((x, y), text, font=font, fill=(0, 0, 0))
# 保存图片
img.save('result.jpg')
代码解释:
- 使用Pillow库中的Image.open()方法打开一张图片;
- 使用ImageDraw模块创建画布;
- 设置字体、大小;
- 使用draw.textsize()方法获取文本大小;
- 根据图片中心位置计算文本位置;
- 使用draw.text()方法添加文本到图片上;
- 最后使用Image.save()方法保存图片。
示例2: 添加多行汉字
在本示例中,我们将在图片的底部添加一段文本,如下:
from PIL import Image, ImageDraw, ImageFont
# 打开图片
img = Image.open('pic.jpg')
# 取得图片大小
width, height = img.size
# 创建画布
draw = ImageDraw.Draw(img)
# 设置字体、大小
font = ImageFont.truetype('MSYH.TTF', 18)
# 定义文本
text = u'这是一行文本\n这是第二行文本\n这是第三行文本'
# 获取文本行数、行高
lines = text.split('\n')
line_height = font.getsize(lines[0])[1]
# 循环添加文本
x, y = 20, height - line_height * (len(lines) + 1) - 20
for line in lines:
draw.text((x, y), line, font=font, fill=(0, 0, 0))
y = y + line_height
# 保存图片
img.save('result.jpg')
代码解释:
- 使用Pillow库中的Image.open()方法打开一张图片;
- 使用ImageDraw模块创建画布;
- 设置字体、大小;
- 定义文本,使用'\n'分隔行;
- 使用font.getsize()方法获取行高;
- 使用循环,使用draw.text()方法添加文本到图片上;
- 最后使用Image.save()方法保存图片。
结语
以上就是在Python2和Python3中实现在图片上添加汉字的方法攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python2和python3实现在图片上加汉字的方法 - Python技术站