摘要:每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。今天给大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!

每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。

你说送花吧,到时候朋友圈里一划,全部都是送花的,女票:“没创意!”,遂卒;

你说送礼物吧,要是送的礼物不合心意,女票:“你根本不懂我!”,又卒;

你说逛街买买买吧,摸摸空空的口袋,默默把这个想法丢到一边...

今天,就和大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!

成品图!

什么?看不清长啥样?放大来康康

(满眼都是爱你的形状~)

想做出这样的照片吗?那么~我们现在就开始啦~

1. 需要准备的有

女票超级无敌可爱美腻的照片 1张!

python (这里用的是python3.7)

需要的用到的库

cv2:用来读取照片

PIL:用来生成新的图片

性能比较OK的电脑

(如果没有接触过python,不想/不会配环境、装cv2、PIL之类的库,或者电脑性能不太够,强烈推荐使用华为云的ModelArts进行开发~直接解决环境配置、电脑性能的各种问题~)

2. 基本思路

要实现这样的效果,首先需要有一张照片,提取其像素信息,然后赋给排布满文字的新图片,就能得到如上图所示的一张新图片啦!

废话不多说,接下来就开始吧~

3.操作流程

1.首先导入用到的库(两者的作用在1中已有介绍)import cv2

from PIL import Image, ImageDraw, ImageFont

2.然后开始声明绘图的方法

这里有两个参数,分别是原图片的路径和要写的文字def draw(pic, draw_text):

3.接着读取图片

使用cv2中的imread方法读取图片信息,

使用PIL中的Image方法创建一个新的图片,其尺寸和源图片一致,背景为白色img = cv2.imread(pic)

blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")

drawObj = ImageDraw.Draw(blank) # 告诉程序,我们接下来就要在这个图上写字啦!

4.声明绘图的一些参数(这些参数都是我经过多次试验得到的最佳大小~)n = 10 # 读取像素的间隔

m = 9 # 字体的大小

font_path = '你使用字体的位置' # 字体的路径

font = ImageFont.truetype(font_path, size=m) # 将字体信息赋给font变量,供后续使用

5.接下来就是最关键的一步!把文字写上去,并按照源图片给图片上色

通过两个for循环,依次定位到每个文字所在的色块(中间间隔n是因为文字比像素块大得多,不可能完全按照每个像素的位置和色彩来排布)

使用text()方法填入带色彩的文字,几个参数分别代表:

[j, i] -- 坐标位置

draw_text[int(j / n) % len(draw_text)] -- 找到当前该写入哪个文字了(比如“我爱你”中的第几个字)

fill=(img[i][j][2], img[i][j][1], img[i][j][0]) -- 代表源图片对应位置的颜色(三个分别代表RBG颜色值)

font -- 显然就是字体信息啦~for i in range(0, img.shape[0], n):

for j in range(0, img.shape[1], n):

drawObj.text(

[j, i],

draw_text[int(j / n) % len(draw_text)],

fill=(img[i][j][2], img[i][j][1], img[i][j][0]),

font=font

) # 按句子的顺序填充文字

6.写入完成,导出图片blank.save('img_' + pic) # 保存生成的图片

7.调用我们封装好的方法~

输入图片路径和目标文字,运行~一张独一无二的表白图就大功告成!

draw('1.jpg', "我爱你")

附上全代码(记得把字体路径改成自己电脑的哟~)import cv2

from PIL import Image, ImageDraw, ImageFont

def draw(pic, draw_text):

img = cv2.imread(pic)

blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")

drawObj = ImageDraw.Draw(blank)

n = 10

m = 9

font = ImageFont.truetype(font_path, size=m)

for i in range(0, img.shape[0], n):

for j in range(0, img.shape[1], n):

drawObj.text(

[j, i],

draw_text[int(j / n) % len(draw_text)],

fill=(img[i][j][2], img[i][j][1], img[i][j][0]),

font=font

)

blank.save('img_' + pic)

draw('1.jpg', "我爱你")

进阶~

既然都能做成一帧一帧的图片了,为什么不把他们连接起来~做成一个表白视频呢?

当然阔以!

python输出n个我爱你,赶在520之前,程序员如何用Python送上最特别的“我爱你”表白...相关推荐

  1. 看老程序员如何用Python的SimPy库简化复杂的编程模型的

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 文章目录 随机的定义 设置商店:对模拟编程 用监控程序监视模拟 三人不欢:一些结果(以及它们意味着什么) 在我遇到 SimPy 包 ...

  2. python 中煤_程序员如何用Python科学炒股

    菜鸟学Python的第155篇原创文章 阅读本文大概需要3分钟 菜鸟独白 我是一个程序员,也是一个老股民,差不多有5年的股龄,经历过牛市也经历过熊市.起起伏伏,都没有怎么赚钱,至到去年我开始用Pyth ...

  3. 彩民看过来,看老程序员如何用Python数据分析双色球基于线性回归算法预测下期中奖结果示例

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果.分享给大家供大家参考,具体如下: 前面讲述了关于双色球 ...

  4. 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白

    摘要: 每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题--怎么给女朋友/老婆一个与众不同的节日惊喜.今天给大家分享一个独特的表白方法--用"我爱你"拼出心爱人的模样 ...

  5. python输出斐波那契数列_python面试题之如何用Python输出一个斐波那契数列

    [BZOJ1623] [Usaco2008 Open]Cow Cars 奶牛飞车 贪心 SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. ...

  6. 程序员如何用Python了解女朋友的情绪变化?

    作者:云外孤岛 来源:https://www.cnblogs.com/cloudbird/p/ 10534658.html 好不容易有了女朋友,可相处起来总是磕磕碰碰. 有时候,你很想关心她,但是你太 ...

  7. python全栈人工智能192集视频_黑马程序员分享:python全栈开发环境构建

    Sublime简介 Sublime Text是一个代码编辑器.也是HTML和散文先进的文本编辑器.漂亮的用户界面和非凡的功能,例如:多选择,Python插件,代码段等等.完全可自定义键绑定,菜单和工具 ...

  8. python编程计算前30项的和_Python 程序员需要知道的 30 个技巧

    如果你让一个 Python 程序员说一下 Python 的优势,他会说简洁以及高可读是最有影响力的优势.为证明上述两点,在这个 Python 教程里,我们将聊聊许多基本的 Python 建议和技巧. ...

  9. Python学习笔记(1)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 Linux基础 Python基础 一.Python介绍 0 ...

最新文章

  1. python3 读取txt替换、n_从Python2迁移到Python3实战(一) pyupgrade
  2. ABAP实例之ALV
  3. matlab imfilter函数,Matlab的imfilter函数用法详解
  4. java url utf 8_java中文乱码解决之道(八)—–解决URL中文乱码问题
  5. java代理机制简单实现
  6. Animation中的scale、rotate、translate、alpha
  7. android api版本 闪退_解决 Android 升级 SDK API 27 过程中遇到的问题
  8. Windows Phone 7.5 OS版本7.10.8107.79 官方更新
  9. Java注释 及 标识符
  10. 2015年-读书笔记
  11. 基于python的网络聊天室论文_基于python的聊天室(2),实现,二
  12. Python实现学生成绩分析
  13. Android 属性动画使用(二)
  14. 北京冬奥带火“数字雪花”,隐藏的科技秘密暴露了
  15. jetson nano的处理器架构
  16. (转载)常见的差分(动)阻抗计算模型(CITS25 软件)
  17. [Hive优化]--常用参数优化汇总
  18. Xilinx 原语简介--(Xilinx FPGA开发实用教程)
  19. windows下快速安装nginx 并配置 开机自启动
  20. 什么是mysql存储过程_mysql 存储过程

热门文章

  1. 开机按F1才能进入(启动)系统的解决方式
  2. python编译举例_PythonOCC开发-如何搭建开发环境和一个创建圆台例子
  3. 如何给U盘分区 如何显示U盘隐藏分区 U盘如何分区 U盘多分区
  4. 【实训01】基于视图的访问控制
  5. 《梦断代码》摘录及感悟
  6. 实现前后端分离-vue
  7. Java入门系列之访问修饰符作用范围
  8. hi3516a——armlinux下搭建live555 RTSP Server
  9. sqlsugar支持mysql,SqlSugar
  10. SqlSugar增删改操作