【python 的各种模块】(9) 在python使用PIL,即pillow模块

news2025/1/11 16:44:38

目录

1 用PIL模块和读入,生成图片

1.1 导入PIL模块

1.1.1 常用的导入形式

1.1.2 常用的导入形式

1.1.3 PIL下面的常用子模块

1.2 用 PIL.Image.open() 读入图片

1.3 用PIL.Image.new()  生成新图片

1.5 PIL中图片的格式

1.6 pic1.show() 显示图片

1.7 测试代码

2 PIL相关的图片的属性

2.1 PIL的坐标轴

2.2 颜色模式

2.3 各种信息

3 PIL的方法

3.1 copy

3.2 裁剪

3.3 旋转

4 画图

4.1 画图


1 用PIL模块和读入,生成图片

1.1 导入PIL模块

1.1.1 常用的导入形式

  • import PIL  
  • #注意,包名并不是 pillow 或Pillow,包名而不是as的别名就是PIL
  • # 错误的  import pillow  
  • # 错误的  import Pillow  

1.1.2 常用的导入形式

  • from PIL import  Image
  • from PIL import  ImageDraw

1.1.3 PIL下面的常用子模块

  • Pillow库最常用的两个模块是Image和ImageDraw
  • Image模块主要封装了对图像的一些基本操作,比如:裁剪、复制、粘贴、旋转等这样一些操作。
  • ImageDraw主要封装了在图像上绘制一些形状、文本的功能。
  • 此外,这个库还提供了像ImageFont、ImageFile、ImageFilter、ImageGrab、ImageTk、ImageQt等模块,这些模块扩展了图像库的一些额外功能。

1.2 用 PIL.Image.open() 读入图片

  • 用 PIL.Image.open() 可以读入图片
  • 注意大小写  Image.open()  不是 image.open()

path1=r"C:\Users\Administrator\Desktop\tp2.jpg"

pic1=PIL.Image.open(path1)


 

1.3 用PIL.Image.new()  生成新图片

  • pic2=PIL.Image.new(size=(100,100),mode="RGB",color=(255,255,0))  
  • 参数
  • size=(100,100),
  • mode="RGB"    #注意大小写mode="rgb"报错
  • color=(255,255,0)

1.5 PIL中图片的格式

  • 读入的图片,就是图片本身的格式
  • <class 'PIL.JpegImagePlugin.JpegImageFile'>
  • PIL新生成的图片的格式默认是'PIL.Image.Image'
  • <class 'PIL.Image.Image'>

1.6 pic1.show() 显示图片

pic1=PIL.Image.open(path1)
pic2=PIL.Image.new(size=(100,100),mode="RGB",color=(255,255,0))

pic1.show()
pic2.show()

1.7 测试代码

import PIL  #注意,包名并不是 pillow 或Pillow,包名而不是as的别名就是PIL

path1=r"C:\Users\Administrator\Desktop\tp2.jpg"
pic1=PIL.Image.open(path1)
pic2=PIL.Image.new(size=(100,100),mode="RGB",color=(255,255,0))  #注意大小写mode="rgb"报错

print(type(path1))
print(type(pic1))
print(type(pic2))

pic1.show()
pic2.show()

2 PIL相关的图片的属性

2.1 PIL的坐标轴

pillow的坐标轴,是以 top为X轴,left为Y轴的坐标系

一般使用该区域顶点坐标(左、顶)和范围坐标(右、底)表示一块矩形区域。

2.2 颜色模式

RGB

RGBA,A是alpha通道,透明度

2.3 各种信息

print('字典信息: ', image.info)

print('宽度(px): ', image.width)

print('高度(px): ', image.height)

print('尺寸(px): ', image.size)

print('颜色模式: ', image.mode)

print('格式(扩展名): ', image.format)

print('类别: ', image.category)

print('只读(1为只读): ', image.readonly)

print(type(pic1))

  • 读入的图片,就是图片本身的格式
  • <class 'PIL.JpegImagePlugin.JpegImageFile'>
  • PIL新生成的图片的格式默认是'PIL.Image.Image'
  • <class 'PIL.Image.Image'>

3 PIL的方法

3.1 copy

3.2 裁剪

image = Image.open('5.jpg')

img_crop = image.crop(box=(110,215,670,670))

img_crop.show()

3.3 旋转

rotate()方法

3.4 利用 transpose()

3.6 image.resize()

Pillow库的**thumbnail()**方法可以生成图像的缩略图

添加水印。Pillow库提供了丰富的绘图功能

4 画图

4.1 画图

im = Image.new('RGBA', (200, 200), 'white')

# 创建一个画图实例

draw = ImageDraw.Draw(im)

5 保存图片

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

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

相关文章

软件测试|解析selenium.common.exceptions.ElementClickInterceptedException错误及解决方法

导言 在自动化测试中&#xff0c;Selenium是一个广泛使用的工具&#xff0c;用于模拟用户在网页上的操作。然而&#xff0c;有时候在执行点击操作时&#xff0c;可能会遇到ElementClickInterceptedException异常&#xff0c;这可能是由于多种原因导致的。本文将深入探讨这个错…

金和OA jc6 GetAttOut SQL注入漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

C++上位软件通过Snap7开源库访问西门子S7-200/LOGO PLC/合信M226ES PLC V存储区的方法

前言 在前面例程中谈到了C 通过Snap7开源库S7通信库跟西门子S7-1200PLC/S7-1500PLC以及合信CTMC M226ES PLC/CPU226 PLC通信的方式方法和应用例程。但是遗憾的是Snap7中根据官方资料显示只能访问PLC的 DB区、MB区、C区、T区 、I区、Q区&#xff0c;并没有提到有关如何访问S7-20…

C#用正则表达式获取字符串中汉字的数量

目录 一、关于字符串和判断其组成常识 二、用正则表达式获取字符串中汉字的数量 1.字符是否为汉字的正则表达式 2.实例 3.生成结果 三、相关知识点 1.Regex.IsMatch 方法 一、关于字符串和判断其组成常识 字符串中可以包括数字、字母、汉字或者其他字符。使用Char类型的…

国标28181平台的手机视频监控客户端的电子地图功能对比

目 录 一、手机客户端 1、概述 2、具体功能简述 二、电子地图功能 1、经纬度定位 2、附近设备 3、实时浏览功能 4、录像回放 5、缩放功能 三、手机web客户端和CS客户端上的电子地图功能对比 1、对比表 2、测距&#xff08;PC客户端功能&#xff09; 3…

Oracle数据库19c OCP 1z0-082考场真题解析第24题

考试科目&#xff1a;1Z0-082 考试题量&#xff1a;90 通过分数&#xff1a;60% 考试时间&#xff1a;150min 本文为云贝教育郭一军guoyJoe原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Orac…

Vue3+Echarts:柱状图的图例(legend)不显示

一、问题 在使用Echarts绘制堆积柱状图的时候&#xff0c;想给柱状图添加图例&#xff0c;但是添加完后&#xff0c;图例不显示。 二、问题及解决 原因 这里图例不显示&#xff0c;是因为legend里面图例的文字内容跟series里每一项的name的内容不一致&#xff0c;必须得两者…

【已解决】c语言编写的lib如何调用

本博文源于笔者在vs2015正在编写的lib想要调用的问题&#xff0c;正常的操作是将项目生成lib&#xff0c;但是然后又如何操作呢&#xff0c;本博文就是解决这样的问题 文章目录 问题再现步骤1&#xff1a;编写lib.h与lib.c步骤2&#xff1a;生成lib步骤3&#xff1a;添加用得到…

nginx基础面试题以及配置文件解析和命令控制

目录 1、nginx是什么 2、nginx的特点 3、为什么中国大陆有&#xff1a;百度、京东、新浪、网易、腾讯、淘宝等这么多用户使用nginx 4、nginx 的内部技术架构 上一期我们配置安装了nginx接着讲一下nginx配置文件的解析和nginx 命令控制 感谢观看&#xff01;希望能够帮助到…

Kali Linux——aircrack-ng无线教程

目录 一、准备 二、案例 1、连接usb无线网卡 2、查看网卡信息 3、开启网卡监听 4、扫描wifi信号 5、抓取握手包 6、强制断开连接 7、破解握手包 三、预防 一、准备 1、usb无线网卡&#xff08;笔记本也是需要用到&#xff09; 2、密码字典&#xff08;Kali 系统自带…

随机数种子seed

之前的方案 只在train.py文件里添加了这两句代码&#xff0c;但是还不够 import random random.seed(42) # 保证随机结果可复现 现在的方案 在utils.py包里添加 def seed_torch(seed42):random.seed(seed) # Python的随机性os.environ["PYTHONHASHSEED"] str(…

Java进阶十—JDBC

Java进阶十—JDBC 一.说明 用Java语言操作Mysql&#xff0c;首先需要学习Mysql MySQL入门教程-CSDN博客 二.JDBC的由来以及定义 JDBC是什么&#xff1f; Java数据库连接(Java Database Connectivity)简称JDBCJDBC是Java操作各数据库的一种规范&#xff0c;是Java语言中用来…

全网最细RocketMQ源码一:NameSrv

一、入口 NameServer的启动源码在NameStartup&#xff0c;现在开始debug之旅 二、createNamesrcController public static NamesrvController createNamesrvController(String[] args) throws IOException, JoranException {System.setProperty(RemotingCommand.REMOTING_VER…

倍福(Bechhoff) CX8090嵌入式PC控制器开发没有想像中的那么难

笔者曾2023年初曾为云南阜外医院新风系统开发自动控制系统。医院所有新风设备和公区照明全部采用倍福嵌入式PC控制器实现智能控制。其中新风和供水计量通过CX8090实现控制&#xff1b;公区照明通过BC9050实现控制&#xff1b;并采用美国邦纳人机界面(THM035B&#xff09;实现远…

MES系统数据采集的几种方式

生产制造执行MES系统具有能够帮助企业实现生产数据收集与分析、生产计划管理、生产过程监控等的功能板块&#xff0c;在这里小编就不一一介绍了&#xff0c;主要讲讲它的数据采集功能板块&#xff0c;可以说&#xff0c;数据采集是该系统进行数据统计与生产管理等后续工作的基础…

Logstash应用-同步ES(elasticsearch)到HDFS

1.场景分析 现有需求需要将elasticsearch的备份至hdfs存储&#xff0c;根据以上需求&#xff0c;使用logstash按照天级别进行数据的同步 2.重难点 数据采集存在时间漂移问题&#xff0c;数据保存时使用的是采集时间而不是数据生成时间采用webhdfs无法对文件大小进行设置解决…

uniapp 设置底部导航栏

uniapp 设置原生 tabBar 底部导航栏。 设置底部导航栏 一、创建页面&#xff0c;一定要在 pages.json 文件中注册。 二、在 pages.json 文件中&#xff0c;设置 tabBar 配置项。 pages.json 页面 {"pages": [...],"globalStyle": {...},"uniIdRout…

软件测试|探索Python中获取最高数值的几种方法

前言 在数据分析、统计和编程领域&#xff0c;经常会遇到需要从一组数值中找出最高数值的情况。Python 作为一门功能丰富的编程语言&#xff0c;提供了多种方法来实现这一目标。在本文中&#xff0c;我们将探索几种获取最高数值的方法&#xff0c;帮助大家在不同情况下选择最适…

Python 潮流周刊#34:Python 3.13 的 JIT 方案又新又好

△△请给“Python猫”加星标 &#xff0c;以免错过文章推送 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯&#xff0c;…

滚柱导轨精度等级是如何划分?

滚柱导轨的精度等级主要根据其表面精度、滑块与导轨表面的公差以及定位精度等性能指标来划分。根据不同的标准和应用需求&#xff0c;精度等级的划分存在一定的差异。 1、行走平行度&#xff1a;普通级&#xff08;无标注/C&#xff09;5μm&#xff0c;高级&#xff08;H&…