520使用Python实现“我爱你”表白
作者:Python学习交流 发布时间:2022-07-16 05:25:47
摘要: 每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。今天给大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!
每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。
你说送花吧,到时候朋友圈里一划,全部都是送花的,女票:“没创意!”,遂卒;
你说送礼物吧,要是送的礼物不合心意,女票:“你根本不懂我!”,又卒;
你说逛街买买买吧,摸摸空空的口袋,默默把这个想法丢到一边...
今天,就和大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!
成品图!
什么?看不清长啥样?放大来康康
想做出这样的照片吗?那么~我们现在就开始啦~
一. 需要准备的有
女票超级无敌可爱美腻的照片 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', "我爱你")
来源:https://www.cnblogs.com/shannian999/p/12916383.html


猜你喜欢
- sql server的备份与恢复(查询分析器) 查询分析器: 命令: 1:备份数据库命令: backup database whdb1(要备
- 如下所示:#!/usr/bin/env python# -*- coding: utf-8 
- 在这篇文章中,我们将讨论mask R-CNN背后的一些理论,以及如何在PyTorch中使用预训练的mask R-CNN模型。1.语义分割、目
- 数据驱动数据的改变从而驱动自动化测试用例的执行,最终引起测试结果的改变。简单说就是参数化的应用。测试驱动在自动化测试中的应用场景:测试步骤的
- 今天来聊一下 Go 如何使用 set,本文将会涉及 set 和 bitset 两种数据结构。Go 的数据结构Go 内置的数据结构并不多。工作
- 项目结构├── node_modules # 项目依赖包目录├── build &nb
- 在使用mysql的过程中,有个问题就是mysql的优化,mysql中longblob字段在5.5版本中默认的为1M。 想改变这个问题,需要注
- 在pycharm中,当调用( import / from … import… )其他文件夹下的函数或模块,会发现编辑器无法识别( can n
- 1.使用 urllib2 实现#! /usr/bin/env python# -*- coding=utf-8 -*- import url
- 分支结构分支结构是结构化程序设计中的基础。针对分支结构,Go 提供了两种语句形式,一种是 if,另一种是 switch。ifif 语句是 G
- mysql replace实例说明:UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'de
- shell=True参数会让subprocess.call接受字符串类型的变量作为命令,并调用shell去执行这个字符串,当shell=Fa
- 前言通常执行 python 程序要有相应的 Python 环境,但某些特定场景下,我们可能并不愿意这么麻烦的去配置这些环境(比如将写好的脚本
- 贪吃蛇游戏是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。在诺基亚时代,风靡整个手机界,今天我们来看看另类的,
- # coding=utf-8 from BeautifulSoup import BeautifulSoup, Tag, Navigable
- logging模块介绍Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己
- 感想我们在做深度学习处理图片的时候,如果是自己制作或者收集的数据集,不可避免的要对数据集进行处理,然后大多数模型都只支持RGB格式的图片,这
- 题目大意问 太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成,其间关系如下,求每种牛的个数。公牛中,白牛多于棕牛,二者之差为
- 本系列文章是我在sqlskill.com的PAUL的博客看到的,很多误区都比较具有典型性和代表性,原文来自T-SQL Tuesday #11
- 由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。