2020年,这个看起来如此浪漫的年份,你还是一个人吗?

难不成我还能是一条狗?

18年的时候,写过一篇介绍如何使用 Python 来表白的文章。

虽然创意和使用效果都不错,但有一缺点,这是那个exe文件,女神需要打开电脑,才有可能参与进来,进而被你成功"调戏”。

由于是很早期的文章了,应该有很多人没有看过。

提醒你一下,后天就是 2月14日了。什么?还是一条狗呢?

行吧,那你赶上了,今天的文章,就是为你而写。

明哥今天来教你如何使用 Python 来向心中的女神表白。

前段时间,在微博上刷到了一条推荐。内容是这样的

出于好奇,我点开了,放大再放大,emmm,有点意思吖…

这四个字,对于像我这样腼腆的DS男来说,还真不好意思说,说出来,万一被拒绝了咋办?

使用套路来表白,并观察对方的反应,你大概能清楚对方是否对你也有好感,先测试下自己有几成的把握再下手或许更稳妥。

今天就教大家一个这样的套路:如何使用 Python 来做出来这样的图,有点浪漫,又有点极客。能不能拿下你女神,就要靠你(命)了。(๑•́₃ •̀๑)

首先,你得先找到一张你女神的高清图片(尽量分辨率高点的吧,效果会好点)。

这里我以一张高圆圆的图来做一下演示,原图是这样的(分辨率是:2000*1328)。

使用我写好的脚本运行后,就生成了这样一张图,请你点击,放大再放大。(惊喜?

然后将这张图片发给你的女神,具体话术你自己想咯。

好吧,相比女神来说,你可能更在意这是如何实现的(活该你单身)。

其实原理很简单,代码也还不到20 行。

首先,来讲讲原理。

事实上,每一张图片都是由一个一个的像素点所组成的。而每个像素点,都有自己的颜色,其颜色可以用一个数组来表示:(a,b,c),其中每位数的取值范围都是 0-255。

比如(0,0,0)代表白色,(255,255,255)代表黑色。

当像素点足够多的时候,这张照片就是我们所说的高清照片。

而如果当像素点太少,我们的肉眼就能感知到明显的锯齿感。

用 Excel 画了个图,每一方格代表一个像素,其中若我的字体的大小设置 5(非字号5,而是每个字占用5个像素),效果大概就是如下这样子。

我只要每个像素取出一个像素值,并使用这个像素做为该字的颜色即可,在像素量够多的情况下,从远处看,是能看到我们原来图像的轮廓的。

有了思路,就可以开始我们的代码。

首先,使用 pillow.Image读取图像,并使用load函数获取到每一个像素值。

img_raw = Image.open(img_path) img_array = img_raw.load()

然后新建一张画布,并选好你要使用的字体和字体大小。

img_new = Image.new("RGB", img_raw.size, (0, 0, 0)) draw = ImageDraw.Draw(img_new) font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size)

由于需要不断循环 “我喜欢你!”,这五个字符。所以这里可以while循环 yield 来实现一个生成器。

def character_generator(text): while True: for i in range(len(text)): yield text[i]

最后,要给这些字加上相应的颜色,写入新创建的画布中。

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("F://gyy_save.jpeg")

完整代码如下,供你参考

from PIL import Image, ImageDraw, ImageFont font_size = 7 text = "我喜欢你!" img_path = "F://gyy.jpeg" img_raw = Image.open(img_path) img_array = img_raw.load() img_new = Image.new("RGB", img_raw.size, (0, 0, 0)) draw = ImageDraw.Draw(img_new) font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size) 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)

最后再多上几张效果图吧(对,我是海贼迷)。

1. 路飞

2. 索隆

3. 山治

(文章来源:Python编程时光)

python表白-情人节来了,教你个用 Python 表白的技巧相关推荐

  1. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  2. python怎么画人像_教你如何用Python画出心目中的自己

    原标题:教你如何用Python画出心目中的自己 引言:人脸图像的生成在各个行业有着重要应用,例如刑事调查.人物设计.教育培训等.然而一幅逼真的人脸肖像,对于职业画家也要至少数小时才能绘制出来:对于从未 ...

  3. 如何利用python在yi'ge_今天教大家一招Python神奇的技术!如何利用Python来写请柬!...

    今天,教大家如何用Python批量制作精美的请柬.具体效果如下: Python代码实现: import docx from docx.enum.text import WD_ALIGN_PARAGRA ...

  4. python数据分析环境搭建_教你零搭建Python数据分析环境

    编辑推荐: 来源于cnblogs,介绍了 Python 以及必要的库安装,python 编写 , SublimeText 集成等. Python以及必要的库安装 Python目前有两个版本,一个是2. ...

  5. python调用摄像头转向_教你如何利用python调用摄像头

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def v ...

  6. 专业放心的python入门视频_手把手教你掌握学习Python方法,让你不再从入门到放弃...

    随着数据科学概念的普及,Python 这门并不算新的语言火得一塌糊涂.因为写了几篇用 Python 做数据分析的 文章,经常有读者和学生私信问我,想学习 Python,该如何入手?我经常需要根据学习, ...

  7. python篮球-资深程序员教你,利用python预测NBA比赛结果,太精彩了

    我从小就是NBA篮球迷,长大了从事程序员的工作,即使工作再忙,也不会忘了紧追NBA赛事. 而今天,我就给大家分享一个有关用python分析NBA比赛结果的方法. ​ 1.简单介绍 如何用NBA以往的数 ...

  8. python训练营 朋友圈_教你如何用python来弄一个高逼格的朋友圈

    小编今天要给大家介绍一个Python库: PIL(Python Image Library) 下面我们用一个实际的例子 看看50行python代码可以做什么神奇的事情 这是小编发的一个朋友圈 切图前是 ...

  9. python制作自动化办公_教你如何用Python制造一款自动化办公软件脚本!下班,下班...

    1 PySimpleGUI安装 在命令行/终端输入:pip install pysimplegui,等待安装完成后,进入python环境,输入import PySimpleGUI回车无误后,确认安装成 ...

  10. python pywinauto 单击鼠标_教你快速用 Python 控制键盘和鼠标,彻底解放双手

    你还在为在计算机上双击或提交表单而烦恼吗?今天就用python来控制键盘和鼠标,解放双手! 第一,Pyauogui库 我们可以首先安装pyauogui库,通过它我们可以编写一些Python脚本来控制鼠 ...

最新文章

  1. Numpy 对象和字符串相互转换
  2. 转:中国学生为什么学不好计算机 谭浩强
  3. django模板中使用JQ代码实现瀑布流显示效果
  4. PHP系统编程--01.多进程与多线程
  5. DCMTK:CT采集类型FG类的测试
  6. sklearn 决策树例子_机器学习|决策树的生成过程是怎样?(一)
  7. 小程序json字符串取值问题,怎么取出来的是undefined,eval函数不能用?
  8. oracle dump enq hw,经典故障分析 - ASSM引发的索引争用与 enq HW -contentio
  9. python iterator iterable_Python中Iterator和Iterable的区别
  10. 设计模式(9)工厂模式(讲解+应用)
  11. python单引号和什么的作用几乎是一样的_python里的单引号和双引号的有什么作用...
  12. 程序员的自我进化:共享经济新模式——共享员工
  13. 手机如何双声道录音_中老年智能手机教程:手机通话如何录音?
  14. iPhone/iPad 屏幕旋屏
  15. 羊毛党 青龙-阿东和非阿东脚本仓库大全
  16. CSR867x — 如何添加自定义AT Command
  17. 右键文件夹提示“No localized file found - emedloc.dll”
  18. python学习:break用法详解
  19. 医疗器械经营许可证,您了解多少?
  20. 百度超级链作为中国唯一企业代表出席WTO论坛,携手国际领袖制定全球区块链标准...

热门文章

  1. 怎样用python自动化办公_会python基础,如何学习自动化办公?
  2. 怎么用python爬取整个网站_5分钟学会Python爬取整个网站
  3. 服务器cpu天梯图_九月手机处理器排名 2020年9月最新版手机CPU天梯图
  4. 为什么TCP建立连接需要三次握手
  5. Pandas初学者代码优化指南
  6. javascript里的偏函数——本质函数式编程+闭包,返回函数
  7. python hmac
  8. nginx 只允许/不允许 其他域名直接访问
  9. Vue开发跨端应用(四)electron发布web应用并打包app
  10. windows中的常用Dos命令