Python情人节表白女神代码(修订版)

Python情人节表白女神代码(修订版)

引言:又是一年一度的情人节来临之际,最近后台私信不断,槽点:20年初写的表白女神代码无法调试出结果,临时加更本篇内容(对每一行进行了注释解析,自定义妥妥保姆级教程),希望能帮到有需求的伙伴们。文末有彩蛋喔!

1.前置准备

  • Python3.x
  • Python第三方库Pillow
  • 勤劳的双手,清晰的头脑

在这里插入图片描述

2.图片选择

选择我心目中草原无所不能的角色作为此篇的题材

ps:这里的图片选择清晰度越高处理后的细节效果越佳,我这边条件有限只找到张高清的做演示

image-20220517161424101

处理效果,细节这里就不做展示了,代码下方已给出,自行调试出来更有感觉。

在这里插入图片描述

3.源码贡献

流程简述

其实整个过程并不复杂,纯代码只有区区不到30行的代码,原理也很简单
我们都知道每张图片都是由像素点组成的,每个像素点都有自己的颜色,
其颜色可以用一个数组来表示:(a,b,c),其中每位数的取值范围都是 0-255,(0,0,0)代表白色,(255,255,255)代表黑色,也就是我们常说的RGB值
这里我在强调一下,使用的照片最好像素高一点,不然会肉眼看到明显的锯齿感
实现的思路就一句话:只要每个像素取出一个像素值,并使用这个像素做为该字的颜色即可,在像素量够多的情况下,从远处看,是能看到我们原来图像的轮廓的。
首先,使用 pillow.Image读取图像,并使用load函数获取到每一个像素值

// 导包
from PIL import Image, ImageDraw, ImageFont, ImageMode
// 字体大小
font_size = 7
// 背景填充字体
text = "懒羊羊"

// 图片存放位置及图片名称,建议建立独立文件夹将代码和处理的图片放在同一层级,这里给没有linux基础的铁子科普下./释义在当前目录下存在lanyy.jpg这个图层
img_path = "./lanyy.jpg"

# 导入ta的图片,我这里是懒羊羊,铁子们应该懂这里用谁的照片吧,手动狗头
img_raw = Image.open('lanyy.jpg')
# 新建一张画布
img_array = img_raw.load()

# 字体颜色,可取网上自行翻阅RGB大神调色
img_new = Image.new("RGB", img_raw.size, (0, 0, 0))
draw = ImageDraw.Draw(img_new)
# 字体,使用了windows系统自带的字体,为了增加代码的适配性,我使用的字体是win用户默认存在的,可以不修改直接调用
font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size)

# 然后由于需要不断循环 “懒羊羊”,这三个字符(字符串可以自己自定义,如:我xx)。我这里使用while循环 使用yield 来实现一个生成器,减少不必要的内存开支
def character_generator(text):
    while True:
        for i in range(len(text)):
            yield text[i]


# 为字体添加相应的颜色,写入新创建的画布中
ch_gen = character_generator(text)
# 可自定义颜色,修改参数即可
for y in range(0, img_raw.size[1], font_size):
    for x in range(0, img_raw.size[0], font_size):
        draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None)
# 将生成的图片保存在本地目录
img_new.convert('RGB').save("wolanyy.jpg")

4. 拓展修改

替换字体,选择自己喜欢的字体添加为背景墙
在这里插入图片描述

往期绘图

玫瑰花绘图直达链接请戳此
在这里插入图片描述
了解更多知识请戳下:

@Author:懒羊羊

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会撸代码的懒羊羊

打赏5元,买杯咖啡醒,继续创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值