Post on: 2021-3-25Last edited: 2023-7-20Words 00 min

category
tags
type
status
slug
date
summary
icon
password

前言

继上一篇文章的需求,爬取新闻早报,拼成一张图片。本文说明如何将新闻文字排版成一张图片。
 

准备环境

  • 引入图片编辑库
我们用PIL(Python Imaging Library)这个库来实现P图,执行pip install pillow脚本安装(PIL仅支持到Python 2.7,在Python 3.x的版本中我们可以使用他的开源版Pillow)。安装执行如图:
notion image

编码实现

1. 实现简单的程序画图

代码如下 (代码#号后面的内容表示注释,便于理解,不会影响程序运行):
执行效果:
会弹出一张图片,上面用楷书写着’互联网日报‘
notion image

2. 预加工新闻文本

之前获取到的新闻内容,有几个小问题:
1. 内容中有一些没用的标签,例如 <p><br/></p>我们要去掉  2. 有一些空白的新闻,我们要过滤掉 例如 3、<br/> 
notion image
用以下代码进行去冗余工作:
最后,我们还需要将文本分割成每行限定25字的句子,否则句子长度不同会导致文字溢出图片。相关代码
用到的函数说明
💡
1. str(xxx) ,这个函数可以将其他数据格式,转换成纯字符串,便于进行字符串的查找替换处理 2. xxx.replace('a','b'), 这个函数在字符串中可以用,将字符串中的 a 替换成 b; 3. xxx.splitlines(), 这个函数将整段文字,按照换行符,分割成一组字符: 4. for xx in xxx: 遍历循环,每次从xxx中取出一个元素进行处理 5. if xxx: 逻辑判断条件,满足该条件则进入冒号后紧跟着的代码块 6. elif xxx: 如果不满足上满的条件,但是满足这个条件,则进入 7. else: 如果都不满足,则进入 8. len(xx) 计算xx的长度,如果xx是一个字符串,则计算字符串的字数;len = lenght的缩写。9. textwrap.wrap(xx,25); 将这个字符串分割成每行不超过25个字的数组。
经过处理后的文字效果:
notion image

3. 用代码在图片上绘制

创建图片并写入文字的程序步骤思路:
1. 引入图片、画笔、字体 2. 根据新闻行数,生成一个空白图片 3. 在图片上创建一个画笔 4. 指定写入文字的位置、字体、内容、颜色,然后从上往下逐行写入 5. 用一个变量记录当前写到图片的位置高度,每次画笔写入后,画笔的位置向下方移动特定的高度 6. 完成后展示、或保存图片
代码演示:
执行效果:
如果图片会直接弹框展示,恭喜你已经完成了这部分的内容;字体、颜色排班可以根据自己的想法调整试试~
notion image
 

总结

有了PIL这个库,python可以很方便地进行绘图,这篇文章的难点在于要汇入图片的文本内容清洗、以及图片元素在图片上的排版尺寸与位置。

Loading...
将视频转为文字—Python

将视频转为文字—Python

将视频里的语音转成文字,方便快速做学习笔记~。推荐两个提取视频文字的工具。


Python入门(一)—— 安装环境

Python入门(一)—— 安装环境

windows 安装Python开发环境


Announcement