Python表白妙招,把情书写进她的照片里

news2024/11/28 22:52:26

前言

我的好兄弟们,2022年可算是过去了,这不马上要过年了吗

就是说,各位兄弟有对象了吗,没有的回家还要面对亲戚的各种提问

在这里插入图片描述

退一步来说,有心仪的人吗,如果有的话,就来看看这篇 程序员的表白小妙招吧

咳咳,这里还是要准备好一张照片的哈,我就直接拿表情包了,你们应该拿什么照片自己心里还是有数的吧

实现步骤

想要实现把情书写在像素中,那么我们就需要用到pillow这个神器。

众所周知,图片是由无数个像素所组成的,把图片无限放大,就会看到一个个小方格,这就是像素。

1.准备工作

我们都知道,针对图片进行操作,就会用到Pillow这个库,因为Pillow 是第三方库,所以在使用前,我们要使用pip进行安装。

pip install Pillow

2.Pillow 介绍

安装完成后,我们先来简单介绍几个常用示例

新建及保存图片

from PIL import Image

#创建一张新的图片:mode 为RGB,size :520x520 ,color :0,100,200
img = Image.new('RGB',(520,520),(255,192,203))

# 保存图片
img.save('img.jpg')

运行代码,可以看到,在默认路径自动创建一张img.jpg图片。

请添加图片描述

来看看图片是什么样子的

请添加图片描述

重新绘制图片

完整 源码 点击 此处 领取 即可

我们在上面生成的图片中,画两条线

python学习交流Q群:309488165 ### 源码领取
from PIL import Image,ImageDraw

#创建一张新的图片
#img = Image.new('RGB',(520,520),(0,100,200))
#img.save('img.jpg')

#直接打开生成的img.jpg图片
img = Image.open('img.jpg')

#取得绘图对象,需要绘制对角线
draw = ImageDraw.Draw(img)

#绘制对角线
draw.line((0,0,img.size[0],img.size[1]),fill = 128 ,width = 2)
draw.line((0,img.size[1],img.size[0],0),fill = 128 ,width = 2)
#保存图片
img.save('img-line.jpg')

再来看看生成的图片

请添加图片描述

图片合并

然后我们把两张图片合并

from PIL import Image

#直接打开img.jpg图片
img = Image.open('img.jpg')

#创建一个小的图片
img_small = Image.new('RGB',(30,30),'yellow')

#把img_samll 黏贴在 img.jpg图片的 的20x20的位置
img.paste(img_small,(20,20))

#保存新生成的图片
img.save('img-paste.jpg')

看看效果如何

请添加图片描述

确认过眼神,是我要的效果~

3.实战演练

思路大致分三步

1、先创建基本的信息:文案内容,像素尺寸,字体类型,图片路径;
2、创建小图来填充内容,在创建大图状态填充好的小图内容;
3、循环遍历图片的内个像素点,把文字黏贴上去。

实现代码

完整 源码 点击 此处 领取 即可

from  PIL import Image,ImageDraw,ImageFont

#像素放大尺寸
img_king_size = 20

#输入内容
text = '这是阳敌'
#设置字体
font = ImageFont.truetype('simsun.ttc',img_king_size)

#图片路径
img_path = 'C:/小圆/python学习交流Q群:309488165.jpg'

#打开图片
img = Image.open(img_path)
img_w,img_h = img.size

#创建一个小图,用于填充字体
img_child = Image.new("RGB", (img_king_size, img_king_size))
#创建一个大图,状态填充好的小图字体
img_ans = Image.new("RGB",(img_w * img_king_size,img_h * img_king_size))

#获取单个文字的宽和高
text_w,text_h = font.getsize('中')
#文字水平居中
offset_x = (img_king_size - text_w) >> 1
#文字垂直居中
offset_y = (img_king_size - text_h) >> 1

char_index = 0
#小图用于绘制文字
draw = ImageDraw.Draw(img_child)

#循环遍历原图的每一个像素点
for x in range(img_w):
    for y in range(img_h):
        #绘制背景,让图片更好看
        draw.rectangle((0,0,img_king_size,img_king_size),fill = 'lightgray')
        #用(x,y)处的像素点的色值进行绘制字体
        draw.text((offset_x,offset_y),text[char_index],font = font,fill = img.getpixel((x,y)))
        img_ans.paste(img_child,(x * img_king_size,y * img_king_size))
        char_index = (char_index + 1) % len(text)

img_ans.save('king-letter.jpg')

效果展示

我们看下效果图

请添加图片描述

生成的图片超过C站上传最大限制(我这张图46M哈哈哈,给你们看看我男神)

所以不能上传原图,只能截个图看看效果了:

在这里插入图片描述

放大版的,还可以放大

在这里插入图片描述

我这里显示的字是竖的,因为我的图片是长比宽大,改成横版照片的话,字就是横的了。

大家可以自己去试试,放到最大。

最后

朋友们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。
那么对于这些朋友们,我准备了大量的免费视频教程,PDF电子书籍,以及源代码!直接在文末名片自取即可哦!

今天的分享到这里就结束了

顺便给大家推荐一些Python视频教程,希望对大家有所帮助:

Python零基础教学合集

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue + Koa 前后端分离项目实战7】使用开源框架==>快速搭建后台管理系统 -- part7 前端实现最新期刊管理【增删查改】

人生没有白走的路,每一步都作数。 对应后端部分章节回顾: 【Vue Koa 前后端分离项目实战5】使用开源框架>快速搭建后台管理系统 -- part5 后端实现最新期刊列表管理【增删查改】_小白Rachel的博客-CSDN博客 效果展示: 目录 一、…

少儿Python每日一题(15):回文数

原题解答 本次的题目如下所示: 【编程实现】 回文数是指一个像14641这样“对称”的数,即:将这个数的各位数字按相反的顺序重新排列后,所得到的数和原来的数一样。请编程求不同位数数字的回文数的个数。用户输入一个正整数M(2<M<7),M作为回文数的位数。要求输出M位…

【Javascript】高阶函数,JSON

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录高阶函数箭头函数apply函数JSON高阶函数 把函数作为参数&#xff0c;或者返回一个函数&#xff…

【并发】并发锁机制-深入理解synchronized(一)

【并发】并发锁机制-深入理解synchronized&#xff08;一&#xff09; synchronized 基础篇&#xff08;使用&#xff09; 一、Java共享内存模型带来的线程安全问题 1. 代码示例 2. 运行结果 3. 问题分析 4. 临界区&#xff08;Critical Section&#xff09; 5. 竞态条件…

【Go】内存模型中的内存可见性

前言 使用go必然会使用到协程以及其他的并发操作&#xff0c;初期学习的时候&#xff0c;经常在启动协程时操作变量出现问题&#xff0c;要么就是变量没更新&#xff0c;要么就是各种崩溃&#xff0c;或者vscode报告警之类的&#xff0c;于是浅看了一下Go的内存模型&#xff0…

离散制造业ERP系统对生产物料管理有哪些帮助?

在离散制造企业生产加工过程中&#xff0c;生产物料管理是一个至关重要的环节。车间物料能不能管控好&#xff0c;影响着整个产品的品质、工作效率及制造成本的控制等。离散制造业通常需要品类、属性繁多的原材料和配套件&#xff0c;而各类物料的及时供应十分重要&#xff1b;…

优思学院|QCC 是什么意思?有什么用?

QCC 的中文意思是质量控制圈&#xff0c;也有人称为品质圈。 质量控制圈&#xff08;QCC&#xff09;是来自日本的一种质量管理方法&#xff0c;这个概念的作者是石川馨、日本科学家和工程师联盟&#xff08;JUSE&#xff09;共同发明。 QCC的方法是建立由5-11名成员组成的小团…

【VUE2-01】vue2的起步

文章目录一、初识vue1.1vue.js的特点1.2什么是虚拟的dom&#xff1f;1.3为什么使用虚拟的dom1.4vue设计思想二、第一个vue应用如果想系统细致的学习&#xff0c;建议阅读vue的官方网站目前vue官网默认的是vue3的内容&#xff0c;此篇以vue2为基础开始学习一、初识vue 1.1vue.j…

电脑重装系统后没声解决步骤

电脑重装系统之后&#xff0c;发现声音功能&#xff0c;不能正常使用了。对于电脑小白来说&#xff0c;不知道该如何处理&#xff0c;下面就和大家说说重装系统后没声音怎么办呢?&#xff0c;其实完全可以自己处理这种情况&#xff0c;快来看看小白重装系统后没声解决方法吧! …

插入损耗——线对上的信号衰减

“您好&#xff0c;我需要您的帮助。我在测试长距离线缆的时候&#xff0c;插入损耗没有通过测试&#xff01;”这是在对铜缆布线进行验收测量时&#xff0c;我们经常能够听到的问题。针对这一情况&#xff0c;为了能提供更专业的支持&#xff0c;我们必须了解这一电气特性的基…

如何修改linux下的vim复制行数限制

vim-如何修改linux下的vim复制行数限制来自北方的小强正在努力成为资深数字IC搬砖工的搬砖工个人根目录下的.vimrc (~/.vimrc)添加如下内容:set viminfo1000,<600linux下&#xff0c;默认最多复制50行&#xff0c;上述修改即将限制改为600行。注意&#xff1a;1 如果.vimrc文…

Arduino固件库的离线安装方式

参考&#xff1a;https://www.cnblogs.com/hilary0614/p/libraries.html https://jingyan.baidu.com/article/9f7e7ec09d90906f281554e1.html&#xff0c;开发板管理器和管理库区别 Arduino 经常推出新的控制器&#xff0c;这些新的控制器可能不在现有的板子型号中&#xff0c;…

【Linux】Linux 项目自动化构建工具 -- make/makefile

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux 文章目录一、前言二、概念三、demo 实现四、原理与规则1、依赖关系和依赖方法① 感性理解② 深层理解…

回顾 2022

前言回顾过去的 2022 年&#xff0c;感觉自己学习了不少&#xff0c;输出的不多。适合 Golang 新手入门的项目 go-gin-api[1]&#xff0c;今年基本没更新&#xff0c;目前已收到 4.1k star&#xff0c;感谢大家的认可。关于健康今年室外跑步&#xff0c;跑了有 175 km&#xff…

什么蓝牙耳机音质好?发烧友力荐四款好音质蓝牙耳机

随着蓝牙技术的发展&#xff0c;现如今蓝牙耳机的音质越来越可以与有线耳机的音质相媲美了。音质作为选择蓝牙耳机的重要参考因素之一&#xff0c;在我们的日常生活中&#xff0c;不管是听歌、追剧、通话等&#xff0c;音质不一的蓝牙耳机都能带来不一样的听觉体验。下面&#…

提高1--数字三角形模型

1.摘花生 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。 Hello Kitty只能向东或向南走,不…

Java基础知识复习

文章目录复习1. Java编译和运行2. Java运行环境3. Java注释4. Java中的打印5. 数据类型整形浮点型字符类型字节类型布尔类型数据类型转换强制类型转换隐式类型转换小结6. 变量命名规范7. 运算符算数运算符逻辑运算符移位运算符关系运算符8. switch9. 方法方法的重载可变参数变程…

http请求走私详解

前言 HTTP请求走私是一种干扰网站正常处理从一个或多个用户收到的HTTP请求的方法&#xff0c;请求走私漏洞在本质上通常很关键&#xff0c;允许攻击者绕过安全控制&#xff0c;获得对敏感数据的未授权访问&#xff0c;并直接危害其他应用程序的用户。 随便提一句&#xff1a;…

关系抽取概念及相关论文解读

1.信息抽取概述 信息抽取是构建知识图谱的必要条件。知识图谱中以&#xff08;subject&#xff0c;relation&#xff0c;object&#xff09;三元组的形式表示数据。信息抽取分为两大部分&#xff0c;一部分是命名实体识别&#xff0c;识别出文本中的实体&#xff0c;另外就是关…

【dp】排列问题——零钱兑换和组合总和IV

文章目录零钱兑换组合总和IV零钱兑换 很明显&#xff0c;本题使用完全背包算法&#xff0c;求解的是组合数&#xff0c;直接使用完全背包算法即可&#xff0c;为什么是组合数呢&#xff1f; 如果题目说 amount5&#xff0c;coins[1,2,5] 有9种方法&#xff0c;那就是排列数&am…