本文已参与「新人创作礼」活动,一起开启掘金创作之路。
夏天到了,又一届的高三学生要解放了。
2022届的考生明年就要迎来高考第一天,在此,我用python写了一个好运签祝福各位考生:鱼跃龙门,金榜题名!
运行环境
语言:python
python版本:3.9.8
开发工具:Visual Studio Code(VS Code)
成品展示
步骤及相关解释
- 安装python,这一点我之前写过安装教程,大家查看即可。
python的下载与安装以及sublime的安装 - 掘金 (juejin.cn)
- 安装要使用的库文件,这里用到了pillow库,打开cmd,在其中输入
pip install pillow即可安装
如果出现了黄色字体的WARNING,图片中警告是说pip有新版本了,要更新了,按照引号中的指令,跳转到相应的文件夹下,执行该指令即可
若要查看都安装了哪些库文件,输入pip list即可查看。可以看到,我们已经安装了Pillow库,版本是9.1.1
- 打开VS Code,创建一个新的python文件,我这里命名为gaokao.py
- 导入库文件
from PIL import Image,ImageDraw,ImageFont
import os
PIL是一个图像处理库,Pillow是PIL的一个派生分支,所以我们安装的是Pillow,Image是和图片打开显示有关,ImageDraw用于创建绘图对象,ImageFont用于加载字体
- 创建并绘制图像,设置图像的大小和颜色
im=Image.new('RGBA',(1000,1800),(210,2,2,255))
draw=ImageDraw.Draw(im)
Image.new(颜色格式,图像大小,颜色)
- 设置几个字体样式及大小
fontsFolder="C:\WINDOWS\Fonts"
font1=ImageFont.truetype(os.path.join(fontsFolder,'STXINGKA.TTF'),350)
font2=ImageFont.truetype(os.path.join(fontsFolder,'SIMLI.TTF'),80)
font3=ImageFont.truetype(os.path.join(fontsFolder,'STXINGKA.TTF'),80)
从Windows字体文件夹中选择字体,并设置颜色
- 设置文本内容、颜色及文本所在的位置
draw.line([(20,20),(980,20),(980,1780),(20,1780),(20,20)],fill=(254,209,92,255))
txtSize_1=draw.textsize('2022 年 6 月 6 日',font2)
pos_x_1=(1000-txtSize_1[0])/2
draw.text((pos_x_1,70),'2022 年 6 月 6 日',fill=(254,209,92,255),font=font2)
draw.line([(40,200),(960,200)],fill=(254,209,92,255))
txtSize_2=draw.textsize('大 吉',font1)
pos_x_2=(1000-txtSize_2[0])/2
draw.text((pos_x_2,250),'大 吉',fill=(254,209,92,255),font=font1)
draw.line([(40,640),(960,640)],fill=(254,209,92,255))
txtSize_3=draw.textsize('你 已 经 做 得 很 好 了',font3)
pos_x_3=(1000-txtSize_3[0])/2
draw.text((pos_x_3,700),'你 已 经 做 得 很 好 了',fill=(254,209,92,255),font=font3)
txtSize_4=draw.textsize('这只是你人生中的一件事',font3)
pos_x_4=(1000-txtSize_4[0])/2
draw.text((pos_x_4,850),'这只是你人生中的一件事',fill=(254,209,92,255),font=font3)
txtSize_5=draw.textsize('并不是人生的全部',font3)
pos_x_5=(1000-txtSize_5[0])/2
draw.text((pos_x_5,1000),'并不是人生的全部',fill=(254,209,92,255),font=font3)
txtSize_6=draw.textsize('像平常一样去面对吧',font3)
pos_x_6=(1000-txtSize_6[0])/2
draw.text((pos_x_6,1150),'像平常一样去面对吧',fill=(254,209,92,255),font=font3)
txtSize_7=draw.textsize('明 天 的 你',font3)
pos_x_7=(1000-txtSize_7[0])/2
draw.text((pos_x_7,1300),'明 天 的 你',fill=(254,209,92,255),font=font3)
txtSize_8=draw.textsize('会 有 一 个 好 运 气',font3)
pos_x_8=(1000-txtSize_8[0])/2
draw.text((pos_x_8,1450),'会 有 一 个 好 运 气',fill=(254,209,92,255),font=font3)
txtSize_9=draw.textsize('注意要保持平常的饮食哦',font3)
pos_x_9=(1000-txtSize_9[0])/2
draw.text((pos_x_9,1600),'注意要保持平常的饮食哦',fill=(254,209,92,255),font=font3)
draw.line():绘制线条,列表中每一对元组代表的是绘制点的横坐标和纵坐标,fill表示线的颜色 txtSize_1:获得文本所在的位置,txtSize_1[0]为横坐标,txtSize_1[1]为纵坐标 draw.text():在指定位置书写文本内容
- 显示图像
im.show()