如何用python给女神写一封照片情书?亲测表白率100%~

news2024/11/26 2:53:12

嗨害大家好鸭!我是小熊猫❤

咳咳…大家都问我 是怎么追到我女神的,

斗胆来分享一下俺的小教程💨

在这里插入图片描述

实现步骤

想要实现把情书写在像素中,

那么我们就需要用到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图片。

在这里插入图片描述
来看看图片是什么样子的在这里插入图片描述
粉粉嫩嫩的,就是它了~

重新绘制图片

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

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 = './king.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站上传最大限制,

所以不能上传原图,

没办法,只能截个图看看效果了:

在这里插入图片描述

放大版的,还可以放大,我就不放到最大了。

我这里显示的字是竖的,因为我的图片是长比宽大,

改成横版照片的话,字就是横的了。

下面是照片放大细节图:

述

这要是看不清楚的话,大家可以自己去试试,放到最大。

反正表白率在我这里是100%的嗷~

其他的照片示例:

请添加图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述

快去试试吧~

对文章有问题的,或者有其他关于python的问题,

可以在评论区留言或者私信我哦~

觉得我分享的文章不错的话,可以关注一下我小熊猫~

或者给文章点赞(/≧▽≦)/~

今天的文章就到这里啦~

我是小熊猫,咱下篇文章再见啦(✿◡‿◡)~

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

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

相关文章

【Spring Boot项目】个人在线音乐播放器

文章目录项目简介数据库表的设计拦截器及返回数据格式注册功能登陆功能音乐列表相关业务查询功能上传音乐播放音乐收藏音乐删除功能删除单个音乐批量删除音乐收藏列表查询收藏的音乐取消收藏注销功能项目简介 本项目主要是实现了在线播放音乐的功能,用户可以随时登…

[RCTF 2019]Nextphp

知识点;利用 FFI 绕过 disable_functionFFI 介绍与利用 首先 FFI 肯定要开,且 PHP 版本肯定要早 7.4 以上 简介: FFI ,可以让我们直接在PHP脚本中调用C语言写的库中的函数。 FFI 的安全性问题 FFI虽然给了我们很大的灵活性&am…

人脸视频检索系统设计(C++)

目录 人脸检索系统框架的构建 1 一.软件实现的主要界面 1 二.软件的需求概括 1 三.软件代码设计过程中需要注意的问题 2 四.程序到目前为止产生的诸多缺陷 4 五.程序的详细设计过程 4 1.输入部分的设计 4 2.检测结果部分的设计过程 10 人脸检索系统框架的构建 ------FaceMFC_v…

腾讯148道面试题,(程序员必备学习方向)全会拿45Koffer没问题

相信你可能经历过这些: 已经工作两三年了,每个项目都会加班加点全力以赴去完成,薪资增长幅度却不如人意。听说年后离职的老同事,金三刚拿下高薪offer,年薪直奔50万了。由于现在的公司接触不到新技术,对自己…

思科网络部署实验

作者介绍: 作者:小刘在C站 每天分享课堂笔记,一起努力,共赴美好人生! 夕阳下,是最美的绽放。 今天带个大家一个实验,为网络篇的综合实验,有能力的可以试一试不会的可以私信小刘。 配…

排序算法:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序、归并排序

排序算法相关总结,涉及的排序算法有:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序、归并排序(动图不是自己画的🌞)。 目录1.插入排序2.冒泡排序3.选择排序4.希尔排序5.堆排序6.快速排序7.归并排序总结稳…

【Revit二次开发】模型中存储数据——参数和外部存储(Parameter, Schema and Entity)

模型中存储数据参数读取写入外部存储SchemaEntity快速获取外部存储参数参数 在Revit平台API中,每个图元对象都有参数属性,它是隶属于图元所有属性的集合,在此集合中更改属性值。 每个图元的参数都有一个与之关联的ElementId类型的ID大多数参…

KMP算法

文章目录KMP算法KMP算法 KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串&…

C++图的建立---邻接矩阵-----邻接表

目录 图的表示方式 邻接矩阵 邻接表 图的遍历 深度优先遍历 深度优先遍历算法步骤: 图的广度优先遍历 广度优先遍历算法步骤: 图的邻接矩阵存储来创建图 代码 运行结果: 图的邻接表存储来创建图 如下图: 运行结果&#xff1…

认定能源管理体系的条件

能源管理体系认证申请清单(GB/T 23331-2012《能源管理体系 要求》国家标准)体系运行时间超过6个月 1、营业执照复印件; 2、组织机构代码证(适用时); 3、生产许可证和其他行政许可证明复印件、资质证明等…

保卫城市消费券安全,从这些做起

近日,顶象发布的《城市消费券安全调研报告》(以下简称《调研报告》)中明确提出,自消费券发放之日起,黑灰产便盯上了这块蛋糕。据不完全统计,190多亿的消费券,消费者只抢到29%。 而在百度键入消…

公众号网课答案在线查搭建

公众号网课答案在线查搭建 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 题库:题库后台(点击跳转&#…

操作系统实验三虚拟存储器管理之模拟页面置换算法(FIFOLRU)

文章目录 一、概述 (1)置换算法 (2)缺页率与命中率 二、先进先出置换算法(FIFO) (1)定义 (2)示例 (3)Belady异常 三、最近最久未使用置换算法(LRU) &#…

LeetCode每日一题——764. 最大加号标志

LeetCode每日一题系列 题目:764. 最大加号标志 难度:普通 文章目录LeetCode每日一题系列题目示例思路题解题目 在一个 n x n 的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i] [xi, yi]表示 g…

谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

目录 前言 一、什么是GET、POST? 1.1GET 1.2POST 二、如何轻松回答? 第一步、直接盖棺定论: 第二步、谈细节上的区别: 前言 要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注…

阿宇wifi球机如何连接手机

首先下载APP,请见以下三种方式: (1)至APP Store、各大应用市场搜索 “智U”,下载并安装APP。  (2)登录ezcloud.uniview.com官网,扫描界面右下方智U APP二维码,下载并…

SpringBoot线上服务假死解决,CPU内存正常

背景 开发小伙伴都知道线上服务挂掉,基本都是因为cpu或者内存不足,出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们 带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗? 对就是这个0,和本次事故没关…

Python基础知识入门(二)

Python基础知识入门(一) 一、数字类型 Python 数字数据类型用于存储数值。数据类型是不允许改变的,如改变数字数据类型的值,将重新分配内存空间。 1.数字函数 函数 描述 abs(x) 返回数字的绝对值。如abs(-10) 返回 10。 fa…

前端小游戏——推箱子

最近刚刚更新完了HTML,CSS的万字总结,有很多人已经学习完了文章,感觉反馈还不错,今天,用HTML,CSS,JS的知识编写了一个童年经典游戏 - 推箱子,供学习参考。 推荐学习专栏&#xff1a…

EdrawMax Ultimate v12.0 图表和流程图

EDraw Max 是一个多合一的应用程序,用作演示构建器、图表创建者、可视化业务规划师和协作空间(用于快速共享图表和模型并接收反馈)。 该软件可用于哪些潜在用途? 任何人都可以从 EDraw Max 中受益。它所针对的主题和感兴趣的领域…