[Python-PIL] pillow操作图片:赛博抽签,启动!

一、来一签吗?

抽签,一个古老而有趣的传统,总能在各种场合带来惊喜和期待。但你有没有想过,将这一传统活动带入数字时代,赋予它全新的赛博朋克风格?今天,我们就将探索如何使用Python的Pillow库,将一张普通的图片转变为一张简约风的签,让抽签活动变得更加现代和刺激。

来一签吗?镇楼图放这儿啦~

下面是程序运行的截图:

二、原理及实现

(1)准备

1、一张名为1.jpg的背景图

2、Python环境

3、Pillow库(第三方拓展库)

4、Random库(自带)

5、字体。自己下载。

图片如下:

 

其中,Pillow(PIL)库可在cmd中下载。打开cmd,输入以下代码:

pip install pillow

 如果觉得下载得太慢,可以是用镜像源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow

下载完成后,就可以开始编写代码了。

(2)原理解析

抽签嘛,总得有个吉凶。

我们的图片就是【底图+吉凶+装饰(几个框框)+古诗】。

当然了,如果你想要其他的文字,也可以自己更换。

(3)程序编写

step1:导入模块,初始化抽签内容。

from PIL import Image, ImageChops, ImageDraw, ImageFont
import random


say_ = ['醉后不知天在水,\n满船清梦压星河。', '休言女子非英物,\n夜夜龙泉壁上鸣。', '我也不登天子船,\n我也不上长安眠。', '但远山长,\n云山乱,\n晓山青。', ' 一川烟草,满城风絮,\n梅子黄时雨。'
        , '此时情绪此时天。\n无事小神仙。', '欲买桂花同载酒,\n终不似,少年游。', '待来竟不来,\n落花寂寂委青苔。'
        , '我见青山多妩媚,\n料青山见我应如是。', '我有一瓢酒,\n可以慰风尘。']

jx_ = ['大吉', '中吉', '中吉', '中吉', '小吉', '小吉', '小吉', '小吉', '小吉',
       '大凶', '中凶', '中凶', '中凶', '小凶', '小凶', '小凶', '小凶', '小凶']

step2:读取图片,并调整其大小。

img = Image.open("1.jpg")
im = img.resize((400, 666))
drawer = ImageDraw.Draw(im)

step3:绘制相应内容。

# 字体文件: "D:\font\YeZiGongChangTangYingHei\YeZiGongChangTangYingHei\YeZiGongChangTangYingHei-2.ttf"
# 字体字典:
font_file = {'t1': r"D:\font\YeZiGongChangTangYingHei\YeZiGongChangTangYingHei\YeZiGongChangTangYingHei-2.ttf",
             't2': r"D:\font\AiDianGanFengXingShuttf\AiDianGanFengXingShuttf-2.ttf",
             }

# 设置字体对象
title = ImageFont.truetype(font_file['t1'], 60)
title2 = ImageFont.truetype(font_file['t2'], 55)
logo = ImageFont.truetype('simkai.ttf', 20)
text = ImageFont.truetype('simkai.ttf', 30)

# 绘制字体
drawer.text((80, 30), text="今日运势", font=title, fill="black")  # 标题
drawer.text((143, 155), text=random.sample(jx_, 1)[0], font=title2, fill="#cc0000")  # 结果
drawer.text((110, 630), text='[made by Soaing_Hz]', font=logo, fill="black")  # logo
drawer.text((90, 400), text=random.sample(say_, 1)[0], font=text, fill="black")  # logo

# 绘制边框:
drawer.rectangle(xy=(30, 100, 370, 626), fill=None, outline="#cc0000", width=1)
drawer.rectangle(xy=(35, 105, 365, 621), fill=None, outline="#cc0000", width=5)
drawer.rectangle(xy=(80, 140, 320, 220), fill=None, outline="#cc0000", width=3)

其中:random.sample(jx_, 1)[0]代表抽签过程。

step4:显示并保存图片

im.show()
im.save('test.png', quality=95)  #quality代表图像清晰度,65-95可选。

至此,程序已经大致完成了。当然了,这与之前的[Python-Cv2] 彩色图转素描:Just for fun.一样,多是娱乐用

如果你喜欢的话,欢迎在评论区留言交流!对于代码中的细节问题或扩展需求,也可以提出你的想法,我们可以一起探讨。

感谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值