今天就来教大家这个套路:

如何使用 Python 来做出来这样有点浪漫,又有点极客的“内涵”图。

当然,能不能靠它得到心仪对象的青睐,就要靠你(命)了。(๑•́₃ •̀๑)

那么要怎么做呢?

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

我们先找一张女神的高清图片(尽量分辨率高点的吧,效果会好点)。这里以一张原图是这样的(分辨率是:3840*2160)。

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

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

好吧,相比女神来说,你可能更在意这是如何实现的。

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

首先,来讲讲原理。

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

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

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

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

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

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

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

首先,我们需要用到 PIL库,使用其中的 PIL.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\STHUPO.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("123.jpg")

完整代码如下,供你参考

from PIL import Image, ImageDraw, ImageFontfont_size = 7
text = "我喜欢你!"
img_path = "321.jpg"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:C:\Windows\Fonts\STHUPO.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("123.jpg")

如果你想在自己的电脑上运行,只要复制上面这段代码,保存为 python 文件(例如 draw.py),在代码编辑器或者命令行中运行即可。

需要注意的几点是:

1. 要安装 PIL 库。需要注意的是,这个模块名叫做 PIL,但现在已经不更新了,我们需要用另一个替代库:pillow。可以在命令行通过 pip install pillow 安装。

2. 将你的原始图片跟代码放在同一个目录,并修改文件中的图像文件名。

3. 字体可以自行更改,但要确保是中文字体,并且字体文件的路径正确。

Python18行代码做出来这样有点浪漫,又有点极客的“内涵”图相关推荐

  1. python画爱心原理_Python18行代码做出来这样有点浪漫,又有点极客的“内涵”图...

    今天就来教大家这个套路: 如何使用 Python 来做出来这样有点浪漫,又有点极客的"内涵"图. 当然,能不能靠它得到心仪对象的青睐,就要靠你(命)了.(๑•́₃ •̀๑) 那么要 ...

  2. 代码如何获取单反相机拍摄的照片_极客学院 | 如何用智能手机相机拍摄烟花照片...

    来自外媒phonearena的分享,19世纪后期的摄影师这项工作比人们想象中的要危险得多,在当时,摄影师们对化学品的处理非常重要,其中最引人注目的是闪光粉,这种化学材料被点燃之后以照亮低光场景,正如你 ...

  3. 极客标签:可能是目前最好的前端代码学习工具

    2019独角兽企业重金招聘Python工程师标准>>> 英国著名作家萧伯纳有一句名言:"两个人交换了苹果,每个人手里还是只有一个苹果:但是两个人交换了思想,每个人就同时有了 ...

  4. 4行python代码做出打字机效果

    4行python代码做出打字机效果 文章目录 4行python代码做出打字机效果 前言 一.导入库 二.完整代码 前言 今天想用python做一个打字机的效果出来看看! 一.导入库 import py ...

  5. 10行 python 代码做出哪些酷炫的事情?

    来源 | Python小二 Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的 ...

  6. 10行python代码做出哪些酷炫的事情?

    大家好,我是辰哥~ Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作.下 ...

  7. 10行python代码做出哪些酷炫的事情? 小白教程

    Python凭借其简洁的代码,赢得了许多开发者的喜爱.因此也就促使了更多开发者用Python开发新的模块,从而形成良性循环,Python可以凭借更加简短的代码实现许多有趣的操作.下面我们来看看,我们用 ...

  8. python浪漫代码-使用Python代码的程序员也浪漫

    原标题:使用Python代码的程序员也浪漫 代码也浪漫:用Python放一场圣诞节烟花秀! 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法 ...

  9. 代码表白小特效 一个比一个浪漫 !!!快收藏!!

    十款表白小特效 用代码表白 一个比一个浪漫 赶紧收藏起来吧!!! 文章简介 最近看了一街坊视频,问路人"你眼中的程序员是怎样的?" 然后一堆关键词就出来了"直男.宅.不懂 ...

最新文章

  1. OSSIM平台安全事件关联分析实践
  2. SVD、SVD++和Asymmetric SVD 以及实例
  3. HDU 4946 Area of Mushroom 凸包
  4. .Net Core 环境安装
  5. 联想计算机不能进入系统桌面,联想电脑装系统,进不了PE桌面,怎么处理?
  6. centos安装mysql5.7.12_CentOS二进制安装MySQL5.7.12
  7. Android应用检查更新下载安装打开
  8. html 使用百度搜索,百度搜索uzer,进入主页
  9. 为项目选择合适的语言
  10. 禁用ios7 手势滑动返回功能
  11. tablayout 动态改变标题_描点法画函数图像的动态演示——动态数学软件GeoGebra制作教程...
  12. java静态变量初始化顺序,赶快收藏备战金九银十!
  13. 软件项目需求调研报告模板下载_需求调研规范
  14. 常用shell命令(未完待续)
  15. uni-app 条形码(一维码)/二维码生成实现
  16. 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统
  17. 基于python的人脸识别开题报告怎么写_开题报告-人脸识别系统的研究与实现
  18. 剪不断,理还乱——UML的四种关系
  19. 给32位系统装8g内存条能用吗?为什么?
  20. 马云卸任后为物流站台 “菜鸟”将飞向何方

热门文章

  1. Laravel中使用Eloquent时给查询的字段设置别名
  2. 神舟电脑冲击创业板失败 首发未获证监会通过
  3. 取模(mod)与取余(rem)的区别——Matlab学习笔记
  4. 卡巴斯基发现新型恶意软件StoneDrill,或与 Shamoon有关
  5. atitit.设计文档---操作日志的实现
  6. 谈谈JS里的{ }大括号和[ ]中括号的用法
  7. Oracle8的不安全因素及几点说明
  8. StreamWriter、StreamReader 写读文件的两种方法
  9. CentOS 7添加开机启动服务/脚本
  10. Linux下Apache安装与配置(详细步骤+代码+验证)