|
|
51CTO旗下网站
|
|
移步端
  • 情人节来了,教你个用 Python 表白的技艺

    2020年,其一看起来如此浪漫之年度,你还是一番人口吗?困难不成我还能是一枝狗?18年之时节,写过一篇介绍如何使用 Python 来表白的篇章。

    笔者:Python编程时光 来源:Python编程时光| 2020-02-13 13:50

    2020年,其一看起来如此浪漫之年度,你还是一番人口吗?

    困难不成我还能是一枝狗?

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

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

    出于是很早期的篇章了,有道是有许多人口没有看过。

    没有看过的,你可以点击这里查看:用Python写一个表白神器让你脱离单身

    指导你一下,次日就是 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函数获取到每一个像素值。

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

    下一场新建一张画布,并选好你要运用的字体和字体大小。

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

    出于需要不断循环 “我喜欢你!”,这五个字符。故此这里可以while循环 yield 来促成一个生成器。

          
    1. def character_generator(text): 
    2.     while True
    3.         for i in range(len(text)): 
    4.             yield text[i] 

    说到底,要送那些字加上相应的颜色,写入新创建的画布中。

          
    1. for y in range(0, img_raw.size[1], font_size): 
    2.     for x in range(0, img_raw.size[0], font_size): 
    3.         draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None) 

    说到底将产品保存

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

    完全代码如下,供你参考

          
    1. from PIL import Image, ImageDraw, ImageFont 
    2.  
    3. font_size = 7 
    4. text = "我喜欢你!" 
    5. img_path = "F://gyy.jpeg" 
    6.  
    7. img_raw = Image.open(img_path) 
    8. img_array = img_raw.load() 
    9.  
    10. img_new = Image.new("RGB", img_raw.size, (0, 0, 0)) 
    11. draw = ImageDraw.Draw(img_new) 
    12. font = ImageFont.truetype('C:/Windows/fonts/Dengl.ttf', font_size) 
    13.  
    14. def character_generator(text): 
    15.     while True
    16.         for i in range(len(text)): 
    17.             yield text[i] 
    18.  
    19. ch_gen = character_generator(text) 
    20.  
    21. for y in range(0, img_raw.size[1], font_size): 
    22.     for x in range(0, img_raw.size[0], font_size): 
    23.         draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None) 

    说到底再多上几张效果图吧(对,我是海贼迷)。

    1. 路飞

    2. 索隆

    3. 山治

    【编纂推荐】

    1. 尼日尔国家安全局 NSA 的 Python 铸就文档公开
    2. 不容低效!Python教你爬虫公众号文章和链接
    3. 瞩目!在Python官方不要所有操作都用列表
    4. 用Python做疫情数据分析,多维度解析传播率和动向,前途是乐观的
    5. 用什么库写 Python 命令行程序?瞧这一篇就够了
    【义务编辑: 华轩 TEL:(010)68476606】

    点赞 0
  • Python  数量  Excel
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Kubernetes:21远处完美通关

    Kubernetes:21远处完美通关

    从小白到修神
    共29章 | king584911644

    190人口订阅学习

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    122人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    209人口订阅学习

    视频课程+更多

    小白轻松学MySQL大数量调优

    小白轻松学MySQL大数量调优

    教授:齐毅27601人口学习过

    IPv6艺术精讲-Wakin产品

    IPv6艺术精讲-Wakin产品

    教授:谢斌1273人口学习过

    19.3crac_生产RHEL7_ORACLE19C_RAC_安装详细实战步骤+打19.4补丁

    19.3crac_生产RHEL7_ORACLE19C_RAC_安装详细

    教授:伟哥2127人口学习过

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微



    1. <dd id="105dc3d4"></dd>

      <p id="32b6fa5b"></p>