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

目录

1 导入PIL模块(pillow)

1.1 导入PIL模块

1.1.1 可用的导入形式

1.1.2 常用的导入形式

1.1.3 PIL下面的常用子模块

2 用 PIL读入,生成和显示图片

2.1 用 PIL.Image.open() 可以读入图片

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

2.3 PIL中图片的格式

2.4 pic.show() 显示图片

2.5 上述内容的测试代码

3 PIL相关的图片的属性

3.1 PIL的坐标轴

3.2 颜色模式

3.3 PIL中关于图片的各种信息

3.3.1 除了前面查看的图片的类型 type()

3.3.2  PIL的图片的信息

4 PIL相关的方法

4.1 copy

4.2 裁剪 image.crop()

4.3 旋转 rotate()方法

4.4 利用 transpose()

4.5 image.resize()

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

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

5 画图 PIL.ImageDraw

5.1 画图 PIL.ImageDraw.Draw(im)

6 保存图片


1 导入PIL模块(pillow)

1.0 PIL的全称:Python Imaging Library

  • PIL的全称:Python Imaging Library
  • 所以你可以理解确实模块名不叫pillow,而叫PIL了
  • 但是在python中查找是否安装了pillow,却可以用pillow,如输入 pip show pillow

  • import PIL             #而不是 import pillow  
  • pip show pillow    # 而不是 pip show PIL

1.1 导入PIL模块

1.1.1 可用的导入形式

  • import PIL  
  • 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
  • 此外,这个库还提供了像ImageFont、ImageFile、ImageFilter、ImageGrab、ImageTk、ImageQt等模块,这些模块扩展了图像库的一些额外功能。
  1. Image模块主要封装了对图像的一些基本操作,比如:裁剪、复制、粘贴、旋转等这样一些操作。
  2. ImageDraw主要封装了在图像上绘制一些形状、文本的功能。

2 用 PIL读入,生成和显示图片

2.1 用 PIL.Image.open() 可以读入图片

  • 用 PIL.Image.open() 可以读入图片
  • PIL.Image.open(path)
  • path是图片的路径:绝对/同目录下的相对路径
  • 注意大小写  Image.open()  不是 image.open()

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

pic1=PIL.Image.open(path1)


 

2.2 用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)

2.3 PIL中图片的格式

读入的图片,就是图片本身的格式jpg 在PIL里对应的类型:'PIL.JpegImagePlugin.JpegImageFile'

  • <class 'PIL.JpegImagePlugin.JpegImageFile'>

PIL新生成的图片的格式默认是'PIL.Image.Image'

  • <class 'PIL.Image.Image'>

2.4 pic.show() 显示图片

  • pic.show()
  • 其中pic 指代已经在PIL中打开的文件
  • 而打开的方式不是显示在python的IDE中,而是在操作系统如windows中打开图片

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

pic1.show()
pic2.show()

2.5 上述内容的测试代码

import PIL  #注意,包名并不是 pillow 或Pillow,包名而不是as的别名就是PILpath1=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()

3 PIL相关的图片的属性

3.1 PIL的坐标轴

  • pillow的坐标轴,是以 top为X轴,left为Y轴的坐标系。
  • 也就是看起来像“第4象限”
  • 很多表格,和作图软件都采用这种坐标系,比如EXCEL表本质也是这样的坐标系。
  • 一般使用该区域顶点坐标(左、顶)和范围坐标(右、底)表示一块矩形区域。

如前面的代码生成的图片的左上角,右下角的点坐标可以由着size()决定

  • size=(100,100)
  • pos left top=(0,0)
  • pos righ bottom =(0,0)
import PILpic2=PIL.Image.new(size=(100,100),mode="RGB",color=(255,255,0))  #注意大小写mode="rgb"报错
print(type(pic2))
pic2.show()

3.2 颜色模式

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

PIL支持的图片的颜色mode有很多种:

  • RGB,red,green,blue 三色混合
  • RGBA,A是alpha通道,透明度
  • YCB  彩色电视机格式?
  • CMYK模式:

CMYK模式

  1. C:Cyan = 青色,又称为‘天蓝色’或是‘湛蓝’;
  2. M:Magenta = 品红色,又称为‘洋红色’;
  3. Y:Yellow = 黄色;
  4. K:blacK=黑色)

3.3 PIL中关于图片的各种信息

3.3.1 除了前面查看的图片的类型 type()

print(type(pic1))

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

3.3.2  PIL的图片的信息

查看image 属性的一些通用python方法

  • type(image)

image/picture 本身的各种属性

  • 字典信息:  image.info
  • 宽度(px): image.width
  • 高度(px): image.height
  • 尺寸(px): image.size
  • 颜色模式:  image.mode
  • 格式(扩展名): image.format
  • 只读(1为只读):image.readonly

from PIL import Image
path1=r"C:\Users\snow\Desktop\pic1.jpg"
pic1 = Image.open(path1)
pic1.show()print("pic图片数据类型",type(pic1))
print('字典信息: ', pic1.info)
print('宽度(px): ', pic1.width)
print('高度(px): ', pic1.height)
print('尺寸(px): ', pic1.size)
print('颜色模式: ', pic1.mode)
print('格式(扩展名): ', pic1.format)
print('只读(1为只读): ', pic1.readonly)
pic图片数据类型 <class 'PIL.JpegImagePlugin.JpegImageFile'>
字典信息:  {'jfif': 257, 'jfif_version': (1, 1), 'dpi': (120, 120), 'jfif_unit': 1, 'jfif_density': (120, 120)}
宽度(px):  64
高度(px):  64
尺寸(px):  (64, 64)
颜色模式:  RGB
格式(扩展名):  JPEG
只读(1为只读):  0

4 PIL相关的方法

4.1 复制,img_obj.copy()

  • img_obj.copy()
  • 复制图片,避免直接修改原图,在copy上做修改

4.2 裁剪 img_obj.crop()

  • img_crop = image.crop(box=(左上角点的X,  左上角点的Y,  width,height))
  • box=(左上角点的X,  左上角点的Y,  width,height)
import PILpic2=PIL.Image.new(size=(100,100),mode="RGB",color=(255,255,0))  #注意大小写mode="rgb"报错
pic3=pic2.copy()
pic4=pic3.crop(box=(0,0,50,50))
pic4.show()

4.3 粘贴图片 img_obj.paste()

  • img_obj.paste(img_obj_other, (posx, posy))
  • 被粘贴的目标图片(小图片,(小图片在坐标系内的左上角X,左上角Y)) 
  • 只能粘贴在目标图片的范围之内

4.3 旋转 rotate()方法

4.4 利用 transpose()

4.5 image.resize()

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

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

5 画图 PIL.ImageDraw

5.1 画图 PIL.ImageDraw.Draw(im)

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

# 创建一个画图实例

draw = ImageDraw.Draw(im)

6 保存图片

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

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

相关文章

如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合

首先&#xff0c;需要用到的这个工具&#xff1a; 百度 密码&#xff1a;qwu2蓝奏云 密码&#xff1a;2r1z 说明一下情况 文件夹&#xff1a;1、2、3里面分别放置了各100张动物的图片&#xff0c;模拟实际情况的各种文件 操作&#xff1a;这里演示的是从3个文件夹里各取2张图…

MySQL 按日期流水号 条码 分布式流水号

有这样一个场景&#xff0c;有多台终端&#xff0c;要获取唯一的流水号&#xff0c;流水号格式是 日期0001形式&#xff0c;使用MySQL的存储过程全局锁实现这个需求。 以下是代码示例。 注&#xff1a;所有的终端连接到MySQL服务器获取流水号&#xff0c;如果获取到的是 “-1”…

软件测试|好用的pycharm插件推荐(二)—— JSON Parser

简介 PyCharm是一款强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多插件来增强开发体验。其中一个非常有用的插件是"JSON Parser"&#xff0c;它允许你在PyCharm中轻松解析和处理JSON数据。在本文中&#xff0c;我们将详细介绍如何安…

linux手动安装 vscode-server

适用场景 很多时候&#xff0c;我们需要在本机&#xff08;比如windows&#xff09;通过remote ssh访问远程服务器&#xff08;一般是ubuntu&#xff09;&#xff0c;但经常出现 vscode 一直连不上远程服务器的情况&#xff0c;看一下 log&#xff1a; 这个log表示远程服务器…

助力智能密集人群检测计数,基于YOLOv8全系列模型【n/s/m/l/x】开发构建通用场景下密集人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

php物联网平台云监控WEB设备iot管理后台源码带文字安装教程

物联网平台云监控WEB设备iot管理后台源码带文字安装教程 运行环境 服务器宝塔面板 PHP 5.6 Mysql 5.6 Linux Centos7以上 物联网监控平台&#xff0c;含有web平台、APP代码、硬件短代码&#xff0c;可使用Wifi、2G、4G硬件模块。 具有数据查看、集中显示、报警功能&#xff0c;…

FPGA图形化前仿真

引言 上文提到电路连接如下&#xff1a; 期望结果如下&#xff1a; 一.创建wrapper文件 1.创建HDL wrapper&#xff1b; 2.要是该文件不是顶层&#xff08;set as top&#xff09;&#xff0c;则需要把文件置于顶层 二.综合 1.综合的目的主要是排除语法的错误&#xff1b; 2.内…

重磅!GPT Store正式上线!

GPT Store来了。根据公告&#xff0c;用户可以在ChatGPT Plus、Team和Enterprise中访问、分享和销售使用OpenAI技术创建的AI模型。 而且&#xff0c;GPT Store确实有“推荐”机制&#xff1a;“特色GPTs”&#xff0c;商店会每周更新一批官方推荐的GPTs。另外OpenAI提供了“举报…

【sqlite3】sqlite3在linux下使用sqlitebrowser工具实现数据可视化

sqlite3在linux下使用sqlitebrowser工具实现数据可视化 1. ### install sqlitebrowser 1. ### install sqlitebrowser 安装指令 sudo apt-get install sqlitebrowser通过工具打开数据库 sqlitebrowser stereo.db打开效果

1.6计算机网络的性能指标

1.6计算机网络的性能指标 常用的计算机网络的性能指标有7个&#xff1a;速率、带宽、吞吐量、时延、往返时间、利用率、丢包率 1.6.1速率 计算机发送的信号是以二进制数字形式的。一个二进制数字就是一个比特(bit&#xff0c;binary digit)字节:Byte&#xff0c;1Byte8bit(1…

数据结构(三)堆和哈希表

目录 哈希表和堆什么是哈希表 &#xff1f;什么是堆 &#xff1f;什么是图 &#xff1f;案例一&#xff1a;使用python实现最小堆案例二 &#xff1a; 如何用Python通过哈希表的方式完成商品库存管理闯关题 &#xff08;包含案例三&#xff1a;python实现哈希表&#xff09; 本…

强化学习求解TSP(八):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…

MySQL修炼手册4:分组与聚合:GROUP BY与HAVING的应用

写在开头 MySQL数据库的强大功能为我们提供了丰富的数据处理工具&#xff0c;其中GROUP BY与HAVING的应用使得数据的分组与聚合变得更加灵活和高效。在本篇博客中&#xff0c;我们将深入研究GROUP BY与HAVING的基础知识&#xff0c;并通过实际案例&#xff0c;展示它们在数据分…

vue的mvvm模式

1.mvvm优点&#xff1a; 低耦合&#xff1a;视图&#xff08;View&#xff09;可以独立于Model变化和修改&#xff0c;一个ViewModel可以绑定到不同的View上&#xff0c;当View变化的时候Model可以不变&#xff0c;当Model变化的时候&#xff0c;View也可以不变。 可复用&…

使用ros_arduino_bridge控制机器人底盘

使用ros_arduino_bridge控制机器人底盘 搭建了ROS分布式环境后,将ros_arduino_bridge功能包上传至Jetson nano&#xff0c;就可以在PC端通过键盘控制小车的运动了。实现流程如下&#xff1a; 系统准备&#xff1b;下载程序&#xff1b;程序修改&#xff1b;分别启动PC与Jetson…

基于嵌入式的智能台灯系统

基于嵌入式的智能台灯系统 功能说明 通过微信小程序控制台灯的亮灭及亮度。采集温湿度传到微信小程序上&#xff0c;台灯可以显示实时北京时间。 功能展示 01智能台灯演示 Mqtt服务器 http://www.yoyolife.fun/iot&#xff1a;Mqtt服务器&#xff0c;我是在这里注册的&#x…

ubuntu20固定串口名称

查看串口的详细信息 udevadm info --name/dev/ttyUSB0结果&#xff1a; P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 N: ttyUSB0 L: 0 S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UAR…

电阻如何读取阻值

前言&#xff1a;大家经常见到的贴片电阻上的丝印有纯数字、数字与R组合、数字与除R之外的字母组合的&#xff0c;但大家知不知道这样的标注与贴片电阻的i精度相关&#xff1f;同一个阻值因为精度不同&#xff0c;标注也会不同。例如封装为0805的贴片电阻&#xff0c;丝印473和…

tailwindcss真的好用吗?

写在前面 今天写一篇关于tailwindcss 的文章&#xff0c;其实这个css技术已经出现很久了&#xff0c;在一些大型项目很多人也已经在用了&#xff0c;虽然不是说必须要会吧&#xff0c;但是没听说过肯定是不行的&#xff0c;他的操作逻辑应该是和unocss差不多&#xff0c;但是今…

Docker 安装:在linux系统CentOS7 版本 安装Docker

目录 一&#xff0c;Docker介绍&#xff1a; 1.1Docker是什么&#xff1f; 1.2Docker组成 二&#xff0c;Docker安装&#xff1a; 三&#xff0c;Docker基本使用 3.1服务 3.2镜像 3.3容器 &#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&am…