掌握Python的X篇_35_用Python为美女打码_图像库Pillow
本篇将会介绍python中的一个图像库Pillow。
文章目录
- 1. Pillow与PIL的关系
- 2. 调整大小
- 3. 加滤镜
- 4. 剪裁
- 5. 生成验证码
1. Pillow与PIL的关系
我们在网上搜python的图像库的话,可能搜到的时PIL。实际上之前python发展的时候就是PIL,这个库比较好用,可惜的是只支持到python2,而在python有一个大坑就是版本间即2跟3之间是不兼容的。
而到了3就有人在PIL的基础上,开发了Pillow,并且接口、导入等都是按照PIL的,所以大家可以简单的认为:Pillow就是python3版本上PIL。
- PIL(Python Image Library)
- Pillow
Pillow安装代码为:
pip install pillow
下面使用到的实例原图为下图:

2. 调整大小
In [26]: from PIL import ImageIn [27]: im = Image.open("photo.jpg")In [28]: newim = im.resize((100,100))In [29]: newim.save("output1.jpg")

3. 加滤镜
In [31]: from PIL import ImageFilterIn [32]: im2 = im.filter(ImageFilter.BLUR)In [33]: im2.save('blur.jpg','jpeg')

4. 剪裁
In [34]: im3 = im.crop((100,100,400,400))In [35]: im3.save("subclip.jpg","jpeg")

5. 生成验证码
早期验证码的生成方式代码如下:
from PIL import Image,ImageDraw,ImageFont,ImageFilterimport random
# 随机字母:
def rndChar():return chr(random.randint(65,90))# 随机毅色1:
def rndColor():return (random.randint(64,255),random.randint(64,255),random.randint(64,255))# 随机毅色2:
def rndColor2():return (random.randint(32,127),random.randint(32,127),random.randint(32,127))# 240 X 68:
width = 60 * 4
height = 68
image = Image.new("RGB",(width, height),(255,255,255))
# 创建Font对象:
font = ImageFont.truetype(r"C:\windows\Fonts\arial.ttf",36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):for y in range(height):draw.point((x,y),fill=rndColor())
# 输出文字:
for t in range(4):draw.text((60*t + 10,10), rndChar(), font=font, fill=rndColor2())
# 模糊
image = image.filter(ImageFilter.BLUR)
image.save("code.jpg","jpeg")
运行结果为下:

自此,作为自学引导的模块学习到此为止,python还有很多的模块,需要未来大家自行进行学习。
下篇将会进行python的主线学习,学习python中的面向对象的编程,那些讲完之后如果还有更好玩的第三方模块再进行介绍。
6. 学习视频地址:用Python为美女打码
相关文章:
掌握Python的X篇_35_用Python为美女打码_图像库Pillow
本篇将会介绍python中的一个图像库Pillow。 文章目录 1. Pillow与PIL的关系2. 调整大小3. 加滤镜4. 剪裁5. 生成验证码 1. Pillow与PIL的关系 我们在网上搜python的图像库的话,可能搜到的时PIL。实际上之前python发展的时候就是PIL,这个库比较好用&…...
SpringBoot 异步、邮件任务
异步任务 创建一个Hello项目 创建一个类AsyncService 异步处理还是非常常用的,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会成功,所以我们一般会采用多线…...
【LeetCode】45. 跳跃游戏 II - 贪婪算法
目录标题 2023-8-11 09:49:25 45. 跳跃游戏 II 2023-8-11 09:49:25 自己没做出来,废物Orz class Solution {public int jump(int[] nums) {int length nums.length;int end 0;int maxPosition 0;int steps 0;for (int i 0; i < length - 1; i) {maxPosit…...
[C初阶笔记]P1
什么是C语言 1、机器语言(二进制)>汇编语言(助记符)>高级语言(C、C等) 2、c语言擅长底层软件开发(操作系统、驱动程序),并不意味着不能开发其他。 C语言更贴近操作…...
外企面试题
Interview Prepare is there anyone we can talk to for a character reference? yes, I have some teammate can help to provide related working information. why did you leave/quit your last job? I got blocked on my last job. I found I cant learn new things fr…...
【目标检测系列】YOLOV1解读
前言 从R-CNN到Fast-RCNN,之前的目标检测工作都是分成两阶段,先提供位置信息在进行目标分类,精度很高但无法满足实时检测的要求。 而YoLo将目标检测看作回归问题,输入为一张图片,输出为S*S*(5*BC)的三维向量。该向量…...
Sentieon | 每周文献-Multi-omics(多组学)-第九期
多组学系列文章-1 标题(英文): Prediction of axillary lymph node metastasis in triple-negative breast cancer by multi-omics analysis and an integrated model标题(中文): 基于多组学分析和综合模型…...
CSDN竞赛70期
CSDN竞赛70期 CSDN竞赛70期1.小张的手速大比拼分析代码 2.坐公交分析代码 3.三而竭分析代码 4.争风吃醋的豚鼠分析代码 CSDN竞赛70期 1.小张的手速大比拼 在很久很久以前,小张找到了一颗有 N 个节点的有根树 T 。 树上的节点编号在 1 到 N 范围内。 他很快发现树上…...
mac安装vscode 配置git
1、安装vscode 官网地址 下载mac稳定版安装很慢的解决办法 (转自) mac电脑如何解决下载vscode慢的问题 选择谷歌浏览器右上角的3个点,选择下载内容,右键选择复制链接地址,在新窗口粘贴地址, 把地址中的一段替换成下面的vscode.cd…...
UI自动化环境的搭建(python+pycharm+selenium+chrome)
最近在做一些UI自动化的项目,为此从环境搭建来从0到1,希望能够帮助到你,同时也是自我的梳理。将按照如下进行开展: 1、python的下载、安装,python环境变量的配置。 2、pycharm开发工具的下载安装。 3、selenium的安装。…...
AbstractQueuedSynchronizer
目录 AQS是什么AQS什么样内部类成员变量方法public如果不使用AQS会怎样 AQS的应用ReentrantLockSyncNonfairSyncFairSync 其他实现 AQS是什么 AbstractQueuedSynchronizer(AQS)是Java中的一个并发工具,位于java.util.concurrent.locks包中&a…...
谈谈什么是云计算?以及它的应用
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 编辑 一、什么是云计算 二、云计算的优势与劣势? 1、云计算的优势 ①提高资源利用率 ②提升效率 ③降低成本 2、云…...
【BASH】回顾与知识点梳理(十六)
【BASH】回顾与知识点梳理 十六 十六. 十二至十五章知识点总结及练习16.1 总结16.2 练习16.3 简答题 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 十六. 十二至十五章知识点总结及练习 16.1 总结 绝对路径:『一定由根目录 / 写起』…...
docsify gitee 搭建个人博客
docsify & gitee 搭建个人博客 文章目录 docsify & gitee 搭建个人博客1.npm 安装1.1 在Windows上安装npm:1.2 在macOS上安装npm:1.3 linux 安装npm 2. docsify2.1 安装docsify2.2 自定义配置2.2.1 通过修改index.html,定制化开发页面…...
SpringBoot2-Tomcat部署
1.排除内置 Tomcat 在pom.xml文件中的下添加以下代码,用于排除SpringBoot内置Tomcat <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion&…...
Docker查看、创建、进入容器相关的命令
1.查看、创建、进入容器的指令 用-it指令创建出来的容器,创建完成之后会立马进入容器。退出之后立马关闭容器。 docker run -it --namec1 centos:7 /bin/bash退出容器: exit查看现在正在运行的容器命令: docker ps查看历史容器࿰…...
leetcode1. 两数之和
题目:leetcode1. 两数之和 描述: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中…...
温室花卉种植系统springboot框架jsp鲜花养殖智能管理java源代码
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于Git无线传感网络的温室花卉种植智能控制系统 系统…...
测试老鸟经验总结,Jmeter性能测试-重要指标与性能结果分析(超细)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Aggregate Report …...
IDEA设置Maven自动编译model
IDEA设置Maven自动编译model 项目工程结构IDEA maven设置 项目工程结构 假设我们的项目结构是下图这样,也就是一个父工程下包含多个子模块,其中dubbo-01-api是公共模块,其它两个模块要想使用必须在pom文件中引入。 本地开发要想不会报错&am…...
RL4LMs KL控制器原理:如何保持语言模型与原始模型的语义一致性
RL4LMs KL控制器原理:如何保持语言模型与原始模型的语义一致性 【免费下载链接】RL4LMs A modular RL library to fine-tune language models to human preferences 项目地址: https://gitcode.com/gh_mirrors/rl/RL4LMs 在强化学习(RL࿰…...
小模型在昇腾NPU上的推理部署:【AISBENCH】
作者:昇腾实战派 小模型在NPU上的推理部署: 【知识地图】 引言 在边缘计算和端侧AI应用蓬勃发展的今天,如何在资源有限的设备上实现高效、低延迟的模型推理,成为开发者面临的关键挑战。昇腾(Ascend)NPU …...
Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析
Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析 1. 模型简介 Z-Image-Turbo-辉夜巫女是一款基于Z-Image-Turbo模型的轻量级LoRA变体,专门针对"辉夜巫女"主题进行优化。这个模型能够根据简单的文字描述…...
从理论到实践:GM(1,1)灰色预测模型的MATLAB一站式实现与检验
1. 灰色预测模型入门:当数据不足时的智慧选择 第一次接触灰色预测是在研究生时期,导师扔给我一组只有7个数据点的年度销售记录,要求预测未来两年的趋势。当时我满脑子都是"这怎么可能?"——传统时间序列分析至少需要30个…...
上海精装房供应商
在上海这座现代化大都市,精装房已成为许多家庭的首选。然而,传统装修材料可能带来的环保问题一直是业主们关注的焦点。上海海丽泷全铝有限公司作为一家专注于全铝家居定制的本地企业,为上海地区的精装房项目提供了环保、耐用的替代方案。本土…...
行业词典融入:提升gte-base-zh在垂直领域的语义理解
行业词典融入:提升gte-base-zh在垂直领域的语义理解 最近在做一个金融领域的智能问答项目,用到了gte-base-zh这个中文通用文本嵌入模型。模型本身效果不错,但一遇到“量化宽松”、“M2增速”、“同业存单”这类专业术语,语义抓取…...
从理论到实测:全国电赛D题电路特性测试仪之输出阻抗、增益与上限频率实战解析
1. 输出阻抗测量:从理论到实战的关键细节 输出阻抗是电子电路设计中一个看似简单却暗藏玄机的参数。在实际比赛中,我们团队最初对输出阻抗的理解停留在课本定义上,直到动手测量才发现理论到实践的鸿沟。输出阻抗本质上反映了电路带负载能力的…...
Agent 能为企业定制专属的数字员工吗?——2026年企业智能自动化落地全解析
站在2026年这个被公认为“智能体(AI Agent)落地元年”的时间节点回望,企业数字化转型已完成了从“指令响应”到“智能执行”的质变。针对Agent 能为企业定制专属的数字员工吗?这一核心命题,答案不仅是肯定的࿰…...
微信支付JSAPI报错排查指南:从‘total_fee’到云函数unifiedOrder的完整配置流程
微信支付JSAPI全链路调试手册:从参数校验到云函数协同的深度解析 第一次在小程序里集成微信支付时,那个红色的报错弹窗"调用支付JSAPI缺少参数:total_fee"让我盯着屏幕发呆了十分钟。明明已经按照文档把参数都传了,为什…...
python commitizen
# 关于Python Commitizen,你可能需要知道这些 在团队协作开发中,代码提交信息的质量常常被忽视,却直接影响项目的可维护性。杂乱无章的提交信息就像没有标签的档案柜,时间一长,谁都说不清某个改动究竟为何发生。Python…...
