前几天是情人节,就用Python图像库PIL来搞点事情。

先看图:

其实这样看不出什么来,然后需要放大:

放大以后就能看到你相对女神说的话。

但是对于学计算机的我来说,更想琢磨是怎样的流程完成的这个图。

--------------------------------------------------------------分割线--------------------------------------------------------------

我们需要用到的是PIL库中的Image,ImageDraw,ImageFont来进行操作

我们需要做的第一步就是使用Image.open()函数来读取图像,并且使用Image.load()函数来获取像素值,图像是由像素点组成的,因此我们需要获取并通过填充字体的颜色来实现改变。

 #使用pillow.Image读取图像,并使用load函数获取到每一个像素值
img_raw = Image.open(img_path)
img_array = img_raw.load()

当我们读取完图像并分析完以后需要新建一个画布来尽享填充。

#新建画布,并选择好使用的字体和字体大小
img_new = Image.new("RGB",img_raw.size,(0,0,0))
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('路径',font_size)

然后我们需要不断输入“XXX",来填充文字

 #需要不断输入“xxx”,就要用while循环yield来实现一个生成器
def characte_generator(text):
while True:
for i in range(len(text)):
yield text[i]

再将字体加上颜色写入新创建的画布中

 #给字体加上颜色写入新创建的画布中
for y in range(0,img_raw.size[1],font_size):
for x in range(0,img_raw.size[0],font_size):
draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None)

最后保存在图片

img_new.convert('RGB').save('F://love.jpeg')

这样就大功告成了。

完整代码如下:

 from PIL import Image, ImageDraw, ImageFont

 font_size = 6
text = " 情人节快乐 "
img_path = "F://Python//1.png"
#使用pillow.Image读取图像,并使用load函数获取到每一个像素值
img_raw = Image.open(img_path)
img_array = img_raw.load()
#新建画布,并选择好使用的字体和字体大小
img_new = Image.new("RGB",img_raw.size,(0,0,0))
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('C://Windows//Fonts//STXINGKA.TTF',font_size)
#需要不断输入“xxx”,就要用while循环yield来实现一个生成器
def characte_generator(text):
while True:
for i in range(len(text)):
yield text[i] ch_gen = characte_generator(text)
#给字体加上颜色写入新创建的画布中
for y in range(0,img_raw.size[1],font_size):
for x in range(0,img_raw.size[0],font_size):
draw.text((x,y),next(ch_gen),font = font,fill = img_array[x,y],direction = None)
img_new.convert('RGB').save('F://love.jpeg')

[学习笔记]用Python简易向喜欢的人表白的更多相关文章

  1. Noah的学习笔记之Python篇:命令行解析

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  2. Noah的学习笔记之Python篇:函数“可变长参数”

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  3. Noah的学习笔记之Python篇:装饰器

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  4. python3.4学习笔记(九) Python GUI桌面应用开发工具选择

    python3.4学习笔记(九) Python GUI桌面应用开发工具选择 Python GUI开发工具选择 - WEB开发者http://www.admin10000.com/document/96 ...

  5. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  6. 【学习笔记】Python 3.6模拟输入并爬取百度前10页密切相关链接

    [学习笔记]Python 3.6模拟输入并爬取百度前10页密切相关链接 问题描述 通过模拟网页,实现百度搜索关键词,然后获得网页中链接的文本,与准备的文本进行比较,如果有相似之处则代表相关链接. me ...

  7. 学习笔记之Python 3

    学习笔记之Python 3 教程 https://www.cnblogs.com/pegasus923/p/7624416.html 学习笔记之X分钟速成Python3 https://www.cnb ...

  8. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  9. 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...

随机推荐

  1. java课后作业10.14

    一.简单总结一下java中类的初始化的规律: 1.类的构造函数优先 2.初始化块儿和定义时候的赋值,这俩个初始化方法优先级是一样的,在程序中谁最后执行,那么程序就采用谁的初始化值. 二.在java中想 ...

  2. nginx tar包安装步骤

    1.将tar包通过 Xftb工具传输到远程服务器 2.通过 cd 命令进入存放nginx包的文件夹目录 3.tar -zxvf + 文件名 解压 4.cd nginx-1.12.0 进入源码目录 5. ...

  3. 用记事本编辑HTML文件后保存代码全堆在一起了,记事本打开html文件格式乱了

    经常会遇到这么一个现象,记事本打开编辑html代码,保存后格式就乱了,代码全部堆在一行了.遇到这种情况有时候也很无语 因为平常工作中也经常遇到这样的情况,后来通过研究,大概找到问题的所在. 我是这么一 ...

  4. webpack4从安装到使用入过的那些坑

    1.全局安装 安装 webpack 前要确保已经下载 node.js 最新版本(node.js官网地址) 目前使用命令行安装的 webpack 默认为最新版本(以下我使用了全局安装.官网建议本地安装, ...

  5. Sass环境安装-Sass sublime 编辑器插件编译方法

    首先官网(http://www.ruby-lang.org/en/downloads/)下载 ruby (1)打开链接进入到下载页面,点击如下位置进行下载 (2)下载页面 (3)进入到各个版本的列表页 ...

  6. CF776D The Door Problem [2sat]

    考虑 \(\texttt{2-SAT}\) 首先每个门 \(i\) 都有一个初始状态 \(a_i\) 题目条件每个门只被两个开关控制,那么很显然的 \(\texttt{2-SAT}\) 用 \(b_{ ...

  7. conda使用以前安装的python环境

    在装anaconda时,很多时候,我们自己之前安装了python环境,里面装了很多的包,不想换,所以想直接使用原来的python环境,所以可以使用以下命令: conda create --prefix ...

  8. IntelliJ IDEA提示URI is not registered几种解决方法

    IntelliJ IDEA提示URI is not registered几种解决方法使用IntelliJ IDEA (以下简称IDEA)导入项目或是在maven生成  archetype时候,如果提示 ...

  9. PAT (Advanced Level) Practice 1035 Password (20 分)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  10. ALSA Lib-简单的播放例子

    参考:https://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html #include <stdio.h&g ...