【小白学Python】自定义图片的生成(二)

Python学习
【小白学Python】自定义图片的生成(一)

1. 文件内容

正如上篇文章所说,我需要读取txt文件的文字内容,将文字内容填充到图片上,按照一定规则生成多个图片。
文件大致内容如下
在这里插入图片描述

2.生成图片规则

txt是之前从zhihu问答模块尝试爬取的,可以看出来,上述文字是以问答形式呈现的,生成图片规则有两个:

  1. 每个QA的文字单独一张图片Q一行,A一行
  2. 去掉**@之后,:**之前的文字。

3. 修改代码

上一篇的完整代码如下

from PIL import Image, ImageDraw, ImageFont

# 设置图片大小
width, height = 800, 800
image = Image.new('RGB', (width, height), color='black')

# 设置文字
text = "123456"

# 加载字体文件,并设置字体大小
# 注意:确保arial.ttf字体文件路径是正确的
font = ImageFont.truetype('C:\\Windows\\Fonts\\arial.ttf', 60)
# font.color = 'yellow'
# 创建画布
draw = ImageDraw.Draw(image)

# 使用draw的textsize方法获取文本大小
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='white')

# 保存图片
image.save('text_image.png')

2.1 尝试一行汉字展示

替换代码如下
在这里插入图片描述
执行main.py,查看生成的图片,有问题,乱码了。
在这里插入图片描述

搜索后发现是字体使用的不兼容,更换字体为simhei.ttf,图片文字正常展示。
调整图片长宽为 width, height = 600, 900,文字位置为

x = (width - text_width) / 2
y = (height - text_height) / 3.5

执行main.py,目前看起来运作一切良好。
在这里插入图片描述

3.1 读取txt文件

为了读取指定的txt文件,我们对上述代码做了如下改动

  • 使用file.readlines()一次性读入所有txt内容,大文件需要注意,内存可能会爆
  • 根据文件内容,每4行拼接一次text,并生成一个图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值