2019-01-19派森学习第62天

实现了另外一种把文字自适应换行写在图片上:

2019-01-19派森学习第62天_第1张图片
自动换行

仔细研究这份代码后发现,有缺点有优点。

缺点:居然把每行文字的位置,自己手动写进字典里,一点都不能自适应,不够智能。

2019-01-19派森学习第62天_第2张图片
预设参数

优点:用while加上if判断实现了自动换行。效果如第一个图。

2019-01-19派森学习第62天_第3张图片
自动换行

接下来,改进缺点,吸纳优点。

textsize()返回给定的字符串的大小,以像素为单位。

2019-01-19派森学习第62天_第4张图片
改变输出范围效果
2019-01-19派森学习第62天_第5张图片
返回给定的字符串的大小

可知,每个汉字有25个像素宽。

现在每行的文字可以实现换行了,但是怎么实现在本行换行后,下一行在下一个位置继续写呢?


2019-01-19派森学习第62天_第6张图片
坐标搞错了

(x,y),x表示本行开头是在距离左侧多少像素的地方,y表示本行距离顶端多少像素。

给write_line函数增加了y_position参数后,可以在增加一行时位置自动向下:

2019-01-19派森学习第62天_第7张图片
文本位置自动向下

效果如图:

2019-01-19派森学习第62天_第8张图片
效果

经过实验发现,下图中两条参考线之间的距离是30像素,也就是说每行的垂直的间距y_position是每行顶端之间的距离。

2019-01-19派森学习第62天_第9张图片
每行垂直距离

想要放弃的时候,又成功了:

本来,没有在for循环里加

if (current_frame_height + font_height) > max_height:

    break

时,总是在当前高度已经超过设置的最高限制后,程序还会错误的往下继续写。

2019-01-19派森学习第62天_第10张图片
超过了 max_height

现在,好了:


2019-01-19派森学习第62天_第11张图片
不会再超过 max_height了

至此,adaption.py实现了文本宽度自适应和高度超过限制中断的功能。

还可以改进的地方:

1 把当前的图片保存,把剩下的文字继续生成新的图片。

2 标点符号在某一行第一个位置时的问题。

你可能感兴趣的:(2019-01-19派森学习第62天)