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学习笔记之常用函数及说明
May 23 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python单例模式获取IP代理的方法详解
Sep 13 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python 内置函数汇总详解
Sep 16 Python
Django 框架模型操作入门教程
Nov 05 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Python 内存管理机制全面分析
Jan 16 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
自己动手做一个SQL解释器
2006/10/09 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
jquery键盘事件介绍
2011/01/31 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python中p-value的实现方式
2019/12/16 Python
分享一个python的aes加密代码
2020/12/22 Python
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
2014年廉洁自律承诺书
2014/05/26 职场文书
好人好事演讲稿
2014/09/01 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年工商所工作总结
2014/12/09 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js
Python中第三方库Faker的使用详解
2022/04/02 Python