520使用Python实现“我爱你”表白

 更新时间:2020年05月20日 10:25:20   作者:Python学习交流  
这篇文章主要介绍了520使用Python实现“我爱你”表白,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

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

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

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

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

成品图!

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

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

一. 需要准备的有

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

python (这里用的是python3.7)

需要的用到的库

cv2:用来读取照片

PIL:用来生成新的图片

性能比较OK的电脑

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

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

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

三.操作流程

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

from PIL import Image, ImageDraw, ImageFont

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

这里有两个参数,分别是原图片的路径和要写的文字

def draw(pic, draw_text):

3.接着读取图片

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

使用PIL中的Image方法创建一个新的图片,其尺寸和源图片一致,背景为白色

blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")
drawObj = ImageDraw.Draw(blank) # 告诉程序,我们接下来就要在这个图上写字啦!

4.声明绘图的一些参数(这些参数都是我经过多次试验得到的最佳大小~)

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颜色值)

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.写入完成,导出图片

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

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

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

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

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利用Matplotlib绘图无法显示中文字体的解决方案

    Python利用Matplotlib绘图无法显示中文字体的解决方案

    在很长一段时间里用Python绘图,matplotlib都不能很好的显示中文,下面这篇文章主要给大家介绍了关于Python利用Matplotlib绘图无法显示中文字体的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python3 pyecharts生成Html文件柱状图及折线图代码实例

    Python3 pyecharts生成Html文件柱状图及折线图代码实例

    这篇文章主要介绍了Python3 pyecharts生成Html文件柱状图及折线图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python Paramiko模块中exec_command()和invoke_shell()两种操作区别

    Python Paramiko模块中exec_command()和invoke_shell()两种操作区别

    invoke_shell 使用 SSH shell channel,而 exec_command 使用 SSH exec channel,本文主要介绍了Python Paramiko模块中exec_command()和invoke_shell()两种操作区别,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python利用socket模块开发简单的端口扫描工具的实现

    Python利用socket模块开发简单的端口扫描工具的实现

    这篇文章主要介绍了Python利用socket模块开发简单的端口扫描工具的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Opencv判断颜色相似的图片示例代码

    Opencv判断颜色相似的图片示例代码

    这篇文章主要介绍了Opencv判断颜色相似的图片示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Selenium 4.2.0 标签定位8种方法详解

    Selenium 4.2.0 标签定位8种方法详解

    这篇文章主要介绍了Selenium 4.2.0 标签定位8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 这三个好用的python函数你不能不知道!

    这三个好用的python函数你不能不知道!

    作为21世纪最流行的语言之一,Python当然有很多有趣的功能值得深入探索和研究.今天通过理论和实际例子来讨论,需要的朋友可以参考下
    2021-06-06
  • 深入解析Python中filter函数的使用

    深入解析Python中filter函数的使用

    在Python中,filter函数是一种内置的高阶函数,它能够接受一个函数和一个迭代器,然后返回一个新的迭代器,本文主要来介绍一下Python中filter函数的具体用法,需要的可以参考一下
    2023-07-07
  • Django Xadmin多对多字段过滤实例

    Django Xadmin多对多字段过滤实例

    这篇文章主要介绍了Django Xadmin多对多字段过滤实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解

    这篇文章主要介绍了通过python改变图片特定区域的颜色详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论