用Python自动化生成倒计时图片

浏览: 1578

作者:法纳斯特,Python爱好者,专注爬虫,数据分析及可视化

微信公众号:法纳斯特(ID: walker398)


本次内容有感于《Python编程快速上手-让繁琐工作自动化》。

根据书中的「操作图像」章节内容,实现一个简单又实用的小操作。

使用的模块为Pillow,一个处理图像文件的Pyhton模块。

比如裁剪图像、调整图像大小、编辑图像的内容等。

可以实现自动编辑成千上万的图像。

比如说一些图片网站,你看图时它是没有水印的。

但是当你下载下来的时候,图片便会加上万恶的水印。

这其中恐怕和自动编辑脱离不了关系,毕竟不能人工去加水印吧...

本次利用Pillow库,实现自动化生成倒计时图片。


/ 01 / 科普

在进行代码操作前,简单对相关知识做个简单的学习。

计算机程序通常将图像中的颜色表示为RGBA值。

RGBA值是一组数字,指定颜色中的红、绿、蓝和alpha(透明度)的值。

这些值是从0(根本没有)到255(最高)的整数。

这些RGBA值分配给单个像素,像素是计算机屏幕上能显示一种颜色的最小点。

像素的RGB设置准确地告诉你应该显示哪种颜色的色彩。

在Pillow中,RGBA值表示为四个整数值的元组。

比如红色表示为(255, 0, 0, 255),其中alpha值最大,意味着完全不透明。

图像像素用x和y坐标指定,分别指定像素在图像中的水平和垂直位置。

原点是位于图像左上角的像素,为(0, 0)

这里的示例图使用的是验证码文章里的一张图。

/ 02 / 生成图片

图片的生成其实挺简单的,无非就是一个背景图、一个线框还有几个文本。

详细代码如下。

from PIL import Image, ImageDraw, ImageFont
import os

for i in range(122):
    # 创建图像,设置图像大小及颜色
    im = Image.new('RGBA', (10001800), (166124255))
    draw = ImageDraw.Draw(im)
    # 设置本次使用的字体
    fontsFolder = 'C:WindowsFonts'
    font1 = ImageFont.truetype(os.path.join(fontsFolder, '华康俪金黑W8.TTF'), 420)
    font2 = ImageFont.truetype(os.path.join(fontsFolder, '方正兰亭刊黑.TTF'), 40)
    # 计算各文本的放置位置
    txtSize_1 = draw.textsize('距 离 除 夕 夜', font2)
    pos_x_1 = (1000 - txtSize_1[0]) / 2
    txtSize_2 = draw.textsize('还 有', font2)
    pos_x_2 = (1000 - txtSize_2[0]) / 2
    txtSize_3 = draw.textsize('天', font2)
    pos_x_3 = (1000 - txtSize_3[0]) / 2
    txtSize_4 = draw.textsize('不 是 年 味 越 来 越 少', font2)
    pos_x_4 = (1000 - txtSize_4[0]) / 2
    txtSize_5 = draw.textsize('而 是 我 们 都 长 大 了', font2)
    pos_x_5 = (1000 - txtSize_5[0]) / 2
    # 设置文本放置位置,居中
    draw.text((pos_x_1, 200), '距 离 除 夕 夜', fill=(217217217255), font=font2)
    draw.text((pos_x_2, 300), '还 有', fill=(217217217255), font=font2)
    draw.text((pos_x_3, 1050), '天', fill=(217217217255), font=font2)
    draw.text((pos_x_4, 1350), '不 是 年 味 越 来 越 少', fill=(137183109255), font=font2)
    draw.text((pos_x_5, 1440), '而 是 我 们 都 长 大 了', fill=(137183109255), font=font2)
    # 绘制线框
    draw.line([(2020), (98020), (9801780), (201780), (2020)], fill=(217217217255), width=5)
    # 设置变化的文本属性
    txtSize_6 = draw.textsize(str(i), font1)
    pos_x_6 = (1000 - txtSize_6[0]) / 2
    draw.text((pos_x_6, 500), str(i), fill=(137183109255), font=font1)
    # im.show()
    # 保存图像
    filename = 'day' + str(i) + '.png'
    im.save(filename)


相关字体文件已上传网盘,公众号回复「字体」即可获取。

这里我不禁想起,阿里的鹿班设计。

通过人工智能技术,快速、批量、自动化的进行图片设计

一个据说能让设计者失业的AI设计师。

这里又不得不膜拜一波了。

看了我的这点小九九,我...

/ 03 / 总结

本次的成果如下。

不知不觉,就快要过年了。

不知道大家回家的车票买到了没有,希望大家都能买到。

小F也已把来回的车票搞定了。

家在哪,就向着哪个方向,团圆。

万水千山总是情,点个「好看」行不行。

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复课程即可获取

小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】

小编的Python入门免费视频课程!!!

小编的Python快速上手matplotlib可视化库!!!

崔老师爬虫实战案例免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

推荐 0
本文由 Python爱好者社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册