昨晚,我用python帮学妹P证件照自拍,然后发现。。。

news2024/11/26 11:36:16

人生苦短,我用Python

  • 前因后果
    • 先上效果
  • 准备工作
  • 证件照尺寸调整
  • 证件照背景调整
  • 各种背景颜色图片
  • 完整代码
  • 结尾
  • 最后

前因后果

事情是这样的

晚上我正在聚精会神写代码(打游戏~)

突然,收到学妹给我发来的消息

还有一张自拍照

而且是可以放在结婚证上的那种哦

就是 之前帮过她几次忙

难道要以身相许 去一起办证

原来是照片尺寸不合适

让我帮她修图。还要什么蓝底、红底各种背景的

虽然有些失落

还是,默默的撸出了我39米长的python大刀

先上效果

1、尺寸长宽调整为:295x413

2、背景色调为蓝底 和 红底各一张

3、还要一张透明背景的证件照。

一顿啪啪啪操作,效果如下。

在这里插入图片描述

准备工作

我们需要用到两个python模块:pillow和removebg

pillow模块:用于调整照片的像素大小。

removebg模块:用于抠图,调整背景。

#安装python模块
pip install pillow
pip install removebg

证件照尺寸调整

先来调整尺寸吧,调好了,再来调整背景颜色。

学妹说,她考试要求的照片尺寸:295x413

from PIL import Image

old_img = 'C:/Users/Administrator/Desktop/img/学妹.png'
new_img = 'C:/Users/Administrator/Desktop/img/学妹-new.png'
img = Image.open(old_img)
# 读取照片尺寸
(x, y) = img.size
# 重新设置照片尺寸
x_s = 295  # 宽
y_s = 413  # 高
out = img.resize((x_s, y_s), Image.ANTIALIAS)  # resize image with high-quality
out.save(new_img)

print('原始照片尺寸(宽x高): ', x, "x", y)
print('调整后照片尺寸:(宽x高) ', x_s, "x", y_s)

啪啪一顿操作,照片尺寸调好了。

证件照背景调整

1、通过removebg模块的方法,我们可以把人像抠图出来。

2、我们通过颜色背景来定义三个背景颜色

BACKGROUND_COLOR = {
    'RED': (255, 0, 0, 255),
    'BLUE': (67, 142, 219, 255),
    'WHITE': (255, 255, 255, 255)
}

3、将抠出来的无背景的图片 粘贴到我们自己画的背景板上

# 老照片路径、新照片路径、无背景照片路径、颜色
def get_img_bg(old_img_path, new_img_path, no_bg_img_path, color):
    # 去掉背景图,提取照片
    rmbg.remove_background_from_img_file(old_img_path)
    foreground = Image.open(no_bg_img_path)
    background = Image.new('RGBA', foreground.size, BACKGROUND_COLOR[color])  # 背景图,大小同前景图
    background.paste(foreground, mask=foreground)
    background.save(new_img_path)


if __name__ == '__main__':
    get_img_bg('C:/Users/Administrator/Desktop/img/学妹.png', 'C:/Users/Administrator/Desktop/img/学妹_red.png',
               'C:/Users/Administrator/Desktop/img/学妹.png_no_bg.png', 'RED')
    get_img_bg('C:/Users/Administrator/Desktop/img/学妹.png', 'C:/Users/Administrator/Desktop/img/学妹_blue.png',
               'C:/Users/Administrator/Desktop/img/学妹.png_no_bg.png', 'BLUE')

啪啪啪代码一顿执行,所有照片都拿到了。

各种背景颜色图片

原图、透明背景、蓝色背景、红色背景图片全部生成。

完整代码

完整代码文末名片自取

结尾

在经过我啪啪啪,敲了半个小时代码之后,我把P好的证件照,发给了学妹。

学妹反响很强烈!

最后

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

Python零基础入门全套教程

Python进阶全套教程

Python实战100例

再见!

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

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

相关文章

基于stm32单片机的超声波测距显示倒车雷达提醒报警系统Proteus仿真

资料编号:145 下面是相关功能视频演示: 145-基于stm32单片机的超声波测距显示倒车雷达提醒报警系统Proteus仿真(源码原理图仿真论文)设计内容 本次嵌入式课程设计综合实验的内容为倒车测距系统。以proteus keilU5为模拟硬件基础…

Android studio中控件TextView学习

1、TextView 基础属性 layout_ width; 组件的宽度layout. _height: 组件的高度id: 为TextView设置- -个组件idtext; 设置显示的文本内容textColor: 设置字体颜色textStyle: 设置字体风格,三个可选值: n normal(无效果),bold(加粗), italic(斜…

Springboot @Async 失效的坑

异步应用场景 为了提高接口的响应性能,当业务非常复杂的情况下,可以将一部分跟业务关联性不是特别强的逻辑进行异步处理。如日志记录、短信发送、增加积分等。通常而言会将此类业务逻辑通过异步的方式进行处理,从而加快接口的响应速度&#…

【HMS Core】集成多种HMS Core服务,让APP成为旅行小助手

1 介绍 Duration: 5:00 总览 旅行者能够使用该应用在华为地图上搜索附近名胜景点、游玩去处或是附近ATM、餐馆和医院等。 服务场景描述 Tourism应用通过集成机器学习服务的地标识别能力,能够提供旅行过程所有必要的信息,还可以识别图片中的地标建筑。…

[Python]字符串常用操作与方法

前言 系列文章目录 [Python]目录 文章目录前言1. 字符串的常用操作1.1 格式化输出1.1.1 %1.1.1.1 语法1.1.1.2 字符串格式操作符(%)的格式化符号%c:以字符的形式格式化输出整数或长度为1的字符串%r:将数据格式化为供解释器读取的形式%s:将数据…

一文带你精通Git

一文带你精通git回顾git对象树对象提交对象重新认识git 基本命令git 高层命令分支(特别重要)分支冲突&分支合并git 存储git 后悔药远程分支和团队协作远程仓库冲突回顾 博主之前直接已经写过了git的相关基础博客了,老铁可以自行去查看。本篇文章的目…

【分割链表】

目录:前言一、题目描述二、算法思想(一)值交换1、题目解析2、代码实现(二)重构链表1、题目解析2、代码实现总结前言 大家好,今天我们来了解一下leetcode中比较简单的单链表问题。 一、题目描述 题目描述如…

MySQL事务隔离级别

MySQL的四种隔离级别 读未提交读提交可重复读串行化 隔离级别可以通过MySQL的视图来实现。 读未提交 读未提交是一个事务仅修改了数据但还未提交时,本次修改可以便可被其他事务查询到变更后的值。读未提交隔离级别下,其他事务进行查询时,直…

新手小白学JAVA 日期类Date SimpleDateFormat Calendar

Date日期类 类 Date 表示一个特定的瞬间,精确到毫秒 1.1 Date的构造函数 Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒) Date(long date) 分配一个 Date 对象,表示自从标准基准时间起指定时间的毫秒数 标…

【Java实验五】继承与多态

一、实验一 对于父类的含参构造方法,子类必须通过super调用,重写父类的构造方法 设计一个应用程序要求: 设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x和y值的publ…

SpringBoot项目的创建(三):手动创建一个Maven工程,然后引入SpringBoot所需的dependency来完成 (不需联网,但复杂)

SpringBoot项目的创建1.配置Maven环境。2.创建一个新的maven项目3.创建出来的目录结构4 继承springboot父项目5.添加Spring Boot Maven插件6.添加spring和web模块的依赖7.创建入口类8.添加代码测试1.配置Maven环境。 在以maven方式创建Spring Boot项目之前,需要先确…

交换网络基础

交换网络基础网络基础交换机的转发行为数据帧分类交换机MAC地址表ping包来回过程VLAN概念:VLAN接口类型ICMP返回值网络基础 路由器:基于3层路由表转发交换机:基于2层MAC地址表转发,数据帧转发 交换机的转发行为 泛洪&#xff1…

Buffer Pool Size of Total RAM No data

1.问题描述 1)问题现象 通过prometheus监控mysql实例和服务器,使用grafana做可视化展示,grafana 中添加 7362 号dashboard 作为mysql看板,添加 11074 号dashboard 作为主机看板。但是添加后查看 MySQL Overview 看板发现 Buffer Pool Size …

Python制作GUI学生管理系统毕设,大学生总会用得到

有很多可爱的大学生跟我吐槽: 咋这个大学跟我想象的不一样呢? 老师叫我们自己做… 还是那句话,技术才是硬道理 源码、资料电子书文末名片获取 有个经典案例就是 学生管理系统 写完了放在那也是放着,所以今天分享给大家吧&…

2022第四届长安杯复盘

容器加挂密码:2022.4th.changancup! 案件背景: 某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用”USTD币“购买所谓的"HT币”,受害人充值后不但 “HT币”无法提现、交易,而且手机还被恶意…

PID算法

目录 一、PID算法 二、模拟PID 模拟PID调节器的控制规律为 模拟PID调节器的传递函数为 三、数字PID P控制 PI控制 PD控制 PID控制 数字PID增量型控制算式 PID位置型控制算式 一、PID算法 PID控制是最早发展的自动控制策略之一,是微机化控…

C++ opencv图像存储和MAT容器

1.图像在内存之中的存储方式: 图像矩阵的大小取决于所用的颜色模型,确切说,取决于所用通道数。如果是灰度图像,矩阵就会如图5.1所示。 对于多通道图像来说,矩阵中的列会包含多个子列,其子列个数与通道数相同&#xf…

【运筹优化】结合天际线启发式的蚁群算法求解二维矩形装箱问题 + Java代码实现

文章目录一、天际线启发式二、蚁群算法结合天际线启发式2.1 构建序列2.1.1 思路一2.1.2 思路二2.1.3 思路N三、Java代码实现3.1 项目结构3.2 Ant3.3 ACO3.4 Run3.5 运行结果展示3.5.1 思路一3.5.2 思路二3.5.3 思路N四、小结一、天际线启发式 关于天际线启发式的介绍请看我的另…

推荐算法---矩阵分解

矩阵分解报告 1. 试验介绍 矩阵分解就是把原来的大矩阵,近似的分解成小矩阵的乘积,在实际推荐计算时不再使用大矩阵,而是使用分解得到的两个小矩阵。具体来说就是,假设用户物品的评分矩阵R是m乘n维,即一共有m个用户&…

Redis资料整理

Redis--->是非关系型数据库(也称缓存数据库),是一种NoSQL数据库 存放5种数据类型 String key-value形式 另外list,set,zset,hash 另外两种不常用的:bitmap(位图类型),geo(地理位置类型),另外Redis5.0新增 stream类型 相对来说Redis适合存放少数据量的数据,如果需要存放…