用 Python 制作“除夕夜倒计时”海报,新的一年你准备好了么?
2020-03-17 18:36
330 查看
本文源于《用Python自动化生成倒计时图片》的想法并结合《python繁琐工作自动化》一书,增添了一些设计元素,制作了新一版本的新年倒计时海报。 000. 效果预览
001. 创建图像 RGBA 值是一组数字, 红、绿、蓝和alpha(透明度) 代表0(根本没有)到255(最高)的整数 在 Pillow 中, RGBA 值表示为四个整数值的元组。 例如,红色表示为(255,0,0,255) 这种颜色中红的值为最大,没有绿和蓝, 并且alpha 值最大,这意味着它完全不透明。 绿色:(0,255,0,255) 蓝色:(0,0,255,255) 白色是各种颜色的组合:(255,255,255,255) 而黑色没有任何颜色:(0,0,0,255) 灵感来源:2019新年倒计时动态海报系列 Pillow 提供ImageColor.getcolor()函数, 所以你不必记住想用的颜色的RGBA值。 该函数接受颜色名称字符串作为第一个参数, 字符串'RGBA'作为第二个参数, 返回一个RGBA 元组。 from PIL import ImageColor ImageColor.getcolor('red', 'RGBA') 运行结果: (255, 0, 0, 255) 本例中的图像尺寸和颜色: 尺寸:1000*2160 颜色:(174,60,58,255) 相关代码如下: from PIL import Image, ImageDraw, ImageFont import os # 创建图像,并设置尺寸和颜色 im = Image.new('RGBA', (1000, 2160), (174,60,58,255)) draw = ImageDraw.Draw(im)
002. 设置字体 要设置字体和大小, 我们首先将文件夹名称保存在fontsFolde中。 然后调用ImageFont.truetype(), 传入我们想要的字体的.TTF 文件, 之后是表示字体大小的整数。 将ImageFont.truetype()返回的Font对象 保存在arialFont这样的变量中, 然后将该变量传入text(), 作为最后的关键字参数。
# 使用使用的字体及字号 fontsFolder = 'D:/05.python_code/00.py_projects/new_year_last' font1 = ImageFont.truetype(os.path.join(fontsFolder, 'wenzangshufang.ttf'), 580) font2 = ImageFont.truetype(os.path.join(fontsFolder, 'SourceHanSerifCN-SemiBold.otf'), 90) font3 = ImageFont.truetype(os.path.join(fontsFolder, 'SourceHanSerifCN-SemiBold.otf'), 180)
003. 绘制矩形 rectangle(xy, fill, outline) 方法 绘制一个矩形 xy 参数是一个矩形元组,形式为(left,top, right, bottom)。left 和top 值指定了矩形左上角的x 和y 坐标,right 和bottom 指定了矩形的右下角。可选的fill 参数是颜色,将填充该矩形的内部。可选的outline 参数是矩形轮廓的颜色。
# 绘制矩形 left = pos_x_3 top = 1750 right = pos_x_3 + txtSize_3[0] bottom = 1700 + txtSize_3[1] draw.rectangle((left, top, right, bottom), fill=(217, 217, 217, 255))
004. 绘制文本 ImageDraw 对象还有text()方法, 用于在图像上绘制文本。 text()方法有4 个参数: xy参数是两个整数的元组,指定文本区域的左上角text 参数是想写入的文本字符串可选参数fill 是文本的颜色可选参数font 是一个ImageFont 对象,用于设置文本的字体和大小 因为通常很难预先知道一块文本 在给定的字体下的大小, 所以ImageDraw 模块也提供了textsize()方法。 textsize()方法返回一个两整数元组, 表示如果以指定的字体写入图像, 文本的宽度和高度。
# 计算各文本的放置位置 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 wenhou = ["除夕夜", "贴春联", "把面发", "置新衣", "煮肉肉", "买年货", "大扫除", "祭灶台"] txtSize_3 = draw.textsize(wenhou[i-1], font3) pos_x_3 = (1000 - txtSize_3[0]) / 2 # 设置文本放置位置,居中 draw.text((pos_x_1, 200), '距 离 新 年 还 有', fill=(217, 217, 217, 255), font=font2) draw.text((pos_x_2, 1400), '天', fill=(217, 217, 217, 255), font=font2) draw.text((pos_x_3, 1700), wenhou[i-1], fill=im_color[i-1], font=font3) # 设置变化的文本属性 txtSize_4 = draw.textsize(str(i), font1) pos_x_4 = (1000 - txtSize_4[0]) / 2 draw.text((pos_x_4, 600), str(i), fill=(255, 192, 0, 255), font=font1)
005. 保存图像到本地
保存图像到当前目录中 命名为:dayx.png
# 保存图像 filename = 'day' + str(i) + '.png' im.save(filename)
006. GitHub项目地址 https://github.com/wwtm/gitpython_examples 近期文章 精选课程 | Python数据分析实战视频教你从巨潮咨询网站批量下载上市公司公告pdf文件 用python帮你生产指定内容的word文档 Modin:一行代码让pandas加速数十倍 2020年B站跨年晚会弹幕内容分析 综述:文本分析在市场营销研究中的应用Lazy Prices公司年报内容变动碰上股价偷懒使用pandas做数据可视化 用statsmodels库做计量分析YelpDaset: 酒店管理类数据集10+GNRC词语情绪词典和词语色彩词典Loughran&McDonald金融文本情感分析库股评师分析报告文本情感分析预测股价使用分析师报告中含有的情感信息预测上市公司股价变动一行pandas代码生成哑变量 使用Python读取图片中的文本数据代码不到40行的超燃动态排序图
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 如何最快速度ps入门(迅速制作海报,logo等等)
- [Python]利用Qt ListView制作的定时器工具
- Python 爬虫实战(1):分析豆瓣中最新电影的影评并制作词云
- Python采用Django制作简易的知乎日报API
- Python制作自己的数据集
- Docker 容器镜像制作(python程序)
- JS制作支付倒计时页面
- python 判断这一天是这一年的第几天
- [置顶] 【python 天气预报】python制作属于自己的天气预报
- Python制作回合制手游外挂简单教程(上)
- (So You’d Like To Make a Map Using Python) 所以你想用Python制作地图
- python安装包制作|Django+Celery+Rabbitmq
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)制作自己的数据和训练网络(三)
- Python制作豆瓣图片的爬虫
- python实战教程1 定时提醒程序的制作(3)
- 如何制作一张海报
- (转)Python下使用Tkinter 制作图形界面
- ubuntu上将Python小应用制作为deb安装包
- 2.python连接mongodb,利用微博数据制作云图
- python基础知识点制作图片