点击上方 “AirPython”,选择 “加为星标”

第一时间关注 Python 技术干货!

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

难不成我还能是一条狗?

提醒你一下,后天就是 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 = 7text = "我喜欢你!"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)

img_new.convert('RGB').save("F://save.jpeg")

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

2. 索隆

3. 山治

推荐阅读如何用 Python 自动化在工作中摸鱼这款黑科技,不会代码也能玩自动化,高效摸鱼自动化篇 | 再也不用担心老人们用智能机了THANDKS- End -

python如何把一张图像的所有像素点的值都显示出来_情人节,教你用 Python 向女神表白...相关推荐

  1. python之对比两张图像的相似度

    python之图像背景识别 本着结合实际工作,实际落地并已应用的态度去码文. python之对比两张图像的相似度 需求:在某个手机端项目中,有多个页面图片,但每个图片都做了相应的修改,由于这种图片非常 ...

  2. python处理时间序列非平稳_手把手教你用Python处理非平稳时间序列

    简介 预测一个家庭未来三个月的用电量,估计特定时期道路上的交通流量,预测一只股票在纽约证券交易所交易的价格--这些问题都有什么共同点? 它们都属于时间序列数据的范畴!如果没有"时间" ...

  3. python如何训练模型生产_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...

    你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情: 对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像分类 ...

  4. python代码在线回归中怎么运行_手把手教你用Python进行回归(附代码、学习资料)...

    原标题:手把手教你用Python进行回归(附代码.学习资料) 作者: GURCHETAN SINGH翻译:张逸校对:丁楠雅 本文共5800字,建议阅读8分钟. 本文从线性回归.多项式回归出发,带你用P ...

  5. python图片分类技术介绍_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)!...

    介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...

  6. python图像分类_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)...

    介绍 你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测 图像分割 图像翻译 对象跟踪(实时),还有更多-- 这让我思考--如果一个图像中有多个对象类别,我们该怎么办?制作一个图像 ...

  7. python 词云手把手_手把手教你用python制作属于你的第一个词云

    相信很多人在网上,或者是在一些报告或者ppt上,都看到过类似这种图片 你可能会好奇它是怎么做出来的,如果你会ps,你可能会觉得,这是用ps一步一步制作出来的.是的没错,一开始我也是坚定不移的这么认为. ...

  8. 批量改名_手把手教你用Python批量给图片添加水印 | 知了干货分享

    我们在网上浏览一些文章的时候,经常会发现文章中会有一些图片,上面会有一些标识,而这些标识就是我们经常说的水印了.很多时候,我们需要给图片加上一些修饰,好让别人能直观的认识到这个图片的出处以及来源,同时 ...

  9. python数据预测代码_手把手教你用Python玩转时序数据,从采样、预测到聚类丨代码...

    原标题:手把手教你用Python玩转时序数据,从采样.预测到聚类丨代码 原作 Arnaud Zinflou 郭一璞 编译 时序数据,也就是时间序列的数据. 像股票价格.每日天气.体重变化这一类,都是时 ...

最新文章

  1. python实现二叉树的重建2 之由中序遍历和后序遍历重建
  2. 使用 NumPy 的标准化技巧
  3. python中post请求太慢_python中POST请求的连续响应
  4. php 替换字符串 图片,PHP替换字符串实现图片自适应屏幕实例代码
  5. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
  6. iOS 获取手机信息
  7. CSS性能优化:可以试一试内联CSS?
  8. ZetCode PHP Symfony 教程
  9. centos6.5安装mono
  10. [转]Unix awk完全使用手册
  11. web service中配置tcp/ip监视器
  12. 谷歌账号在谷歌浏览器无法登录,提示此浏览器或应用可能不安全的一种解决办法
  13. PPT(office365)之背景图片、矢量图标、颜色搭配使用心得
  14. 面向对象:结构化开发方法和面向对象开发方法
  15. Latex——论文翻译
  16. C# Delegate引介
  17. SVN-服务器及pc端SVN搭建
  18. 洛谷P3237 [HNOI2014]米特运输 题解
  19. 如何运行Python程序?
  20. 设置cookies过期时间的几种方法(cookies随浏览器关闭而失效的方法)

热门文章

  1. 广西高职计算机网络技术,计算机网络技术专业考试大纲-广西职业技术学院.DOC...
  2. Win11系统获取管理员权限的方法
  3. mongodb与java连接_MongoDBJava连接
  4. 使用CAS代替synchronized
  5. abap数据类型转换_ABAP 中JSON格式的转换与解析
  6. 扫地机器人电路原理图_扫地机有这一台就够了:石头扫地机器人T6 首拆
  7. 电脑怎么打出冒号符号_Mac小技巧:教你如何在Mac电脑打出command?、option?等特殊符号...
  8. php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程
  9. php手机电子相册,免费电子相册制作软件 手机电子相册制作软件
  10. java 提取电话号码_java – 如何使用正则表达式提取字符串的电话号码?