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


Posted in Python onMay 20, 2020

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

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

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

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

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

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

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

成品图!

520使用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 相关文章推荐
python实现计算倒数的方法
Jul 11 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
python实现多张图片拼接成大图
Jan 15 Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python向字符串中添加元素的实例方法
Jun 28 Python
django中使用POST方法获取POST数据
Aug 20 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python实现手势识别
Oct 21 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
django 外键创建注意事项说明
May 20 #Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 #Python
Python使用Paramiko控制liunx第三方库
May 20 #Python
解决django框架model中外键不落实到数据库问题
May 20 #Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 #Python
让Django的BooleanField支持字符串形式的输入方式
May 20 #Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 #Python
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
对于Python中线程问题的简单讲解
2015/04/03 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python序列类型的打包和解包实例
2019/12/21 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
银行求职信个人范文
2013/12/16 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
教师个人考察材料
2014/12/16 职场文书