用 Python 制作“除夕夜倒计时”海报,新的一年你准备好了么?
本文源于《用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]) / 2wenhou = ["除夕夜", "贴春联", "把面发", "置新衣", "煮肉肉", "买年货", "大扫除", "祭灶台"]
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 制作“除夕夜倒计时”海报,新的一年你准备好了么?相关推荐
- python制作海报_用python制作“除夕夜倒计时”海报,新的一年你准备好了么?
别忘记你的三连!!别忘记你的三连!!别忘记你的三连!! 000.效果预览 001.创建图像 RGBA 值是一组数字, 红.绿.蓝和alpha(透明度) 代表0(根本没有)到255(最高)的整数 在 P ...
- 来了,来了~用python制作一个“除夕夜倒计时”海报
- python图像识别生成矢量图_使用python制作矢量图
Get一个使用python制作矢量图的新技能: 前言: Matplotlib远比我们想象的强大,而这只是众多python强大的包中的一个,不愧是群英荟萃. 绘图后端我们一般是看不见的,matplotl ...
- 春节倒计时,让我来秀一手:用Python制作一个对联生成器
前言 跨年跨完了,马上就要迎来春节了,这不得秀一手? 那就直接开始春节的表演呗 勉勉强强来用python制作对联生成器吧 效果展示 这里的话,你自己想要啥春联主题是可以搜索滴,有些地方也是可以看着改的 ...
- Android蒙版倒计时,【倒计时海报设计】- 虎课网
我们在大街上经常会看到各种宣传海报,有时商家为了达到促销的目的会在醒目的地方张贴一张倒计时海报,为的就是吸引群众的眼睛,大家了解PS倒计时海报设计的制作过程吗?如果对这方面操作不太了解的话,大家可以关 ...
- matlab制作打地鼠游戏,Python制作打地鼠小游戏
原标题:Python制作打地鼠小游戏 导语 大家好,欢迎来到 Crossin的编程教室 ! 打地鼠游戏相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~ 今天就给大家分享一个 ...
- 基于Python制作的消消乐小游戏
导语 哈喽,好久不见.消失人口上线更新一波每月必出的 python 制作小游戏系列文章.本期我们将制作一个消消乐小游戏,让我们愉快地开始吧 开发工具 Python 版本:3.6.4 相关模块: pyg ...
- python多张图片合并拼接,python制作sprite图、雪碧图
python多张图片合并拼接,python制作sprite图.雪碧图 整理图片集 找两个文件夹,yangying和zhaoliying,分别放上照片8张,共16张照片. 创建sprite.py # 多 ...
- arcgis python工具-使用python制作ArcGIS插件(1)工具介绍
使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...
最新文章
- windows安装TensorFlow和Keras遇到的问题及其解决方法
- 前端应该掌握的网络知识(1)
- java ee文件下载_JavaEE实现文件下载
- 【转载】DNN6开源CMS
- centos5 安装python 需要的rpm包
- 黄聪:360浏览器、chrome开发扩展插件教程(1)开发Chrome Extenstion其实很简单
- 使用监控宝监控php-fpm状态
- vue中swiper,vue-awesome-swiper实现轮播;鼠标移入暂停,移除播放;点击暂停按钮暂停,再点击播放。
- VC++实现内存映射文件(附源码)
- LOMO+XQDA(2015CVPR)
- 大疆网上测评题库_大疆校招笔试题及参考(一个小编程题)
- 经典4电阻差动放大器
- tablueau地图标记圆形_高德/百度地图画圆标记
- omi html转义,特殊字符读法
- 快速学习COSMIC软件规模度量方法
- python 列表操作(完整版)
- SQL Server 常见的7种约束以及where条件表达式
- linux用户日志在哪里看,Linux用户登录记录日志和相关查看命令汇总
- 软件测试的前景怎么样?要不要转行软件测试?
- Automatic Modulation Classification UsingConvolutional Neural Network 解读(基于SPWVD和BJD特征融合的卷积神经网络调制自动)
热门文章
- Unity优化 lod技术
- MSE(均方误差)、MAE(平均绝对误差)
- 1+1/2!+1/3!+…+1/20!
- 第一讲、雷达基本公式(matlab)
- 组合数学 —— 斯特林数(Stirling)
- 科奥斯扫地机器人怎么样_科沃斯和小米扫地机器人哪个好?有何区别
- GD32系列单片机EXTI外部中断配置
- 可解释性神经网络(可视化):CAM/Grad-CAM pytorch相关代码
- 【星海出品】sqlite入门
- 华为 中间系统IS-IS协议基础配置