前几天是情人节,就用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. Spring Boot源码(二):SPI去除web.xml

    SPI广泛用于dubbo,spring boot,spring cloud alibaba等 关于SPI,可见SPI-Service Provider Interface 继续上篇文章 上面三句代码的 ...

  2. How Many Answers Are Wrong HDU - 3038 带边权并查集

    #include<iostream> #include<cstring> using namespace std; ; int d[N],p[N]; int find(int ...

  3. LeetCode 572. 另一个树的子树

    题目链接:https://leetcode-cn.com/problems/subtree-of-another-tree/ 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和 ...

  4. Linux网络课程学习第二天

    第二天学习日志: 今天的课程主要内容: 详细介绍了如何安装红帽RHEL7的系统,并对RPM,Yum,Systemd和bash进行了简单介绍.

  5. ArcMap 导入自定义样式Symbols

    管网的图例里有一些自定义的样式,这些在ArcMap中找不到,找到的也不合适,所以只能自己动手制作. 1. 菜单 Customize --> Style Manager 2 . 创建新的Style ...

  6. Android 基础知识 -- Intent

    Intent (意图) Android通信的桥梁,可以通过Intent启动Activity , Service , 发送指定广播到Receiver <1> 启动Activity : sta ...

  7. html行内元素、块级元素及空元素有哪些?区别是什么?

    一. html标签有哪些? 1)行内元素有哪些? 行内元素:行内大多为描述性标记 <span>...</span> <a>...</a>  链接. 锚点 ...

  8. maven - 一键删除maven仓库无效jar包工具

    背景 在进行maven开发时,往往需要下载大量jar包,而由于网络不稳定等其他因素可能导致jar未下载完毕,然后保留了lastUpdated文件,导致无法更新失效的jar包. 现在提供个bat脚本,只 ...

  9. VSCode常用插件之Simple New File使用

    更多VSCode插件使用请访问:VSCode常用插件汇总 Simple New File这是一个从命令面板简单创建新文件.文件夹.通过侧边栏创建新文件可能会很繁琐.该扩展旨在通过命令面板使创建文件或目 ...

  10. Win10安装2 —— 版本的选择与下载

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12368795.html 一:各个版本的区别 1.Windows10 Home(家 ...