Python:PIL(三)——Image
学习自:PIL官方文档——Image
(2条消息) Python图像处理PIL各模块详细介绍_章子雎的博客-CSDN博客
一、Image模块
1、open
用法
open(fp,mode='r',formats=None)
说明
打开图像;不过据官网文档所说,调用该方法后,实际的图像文件并没有读入进来,只是当后续数据处理时才真正读入。
参数
fp
mode:只能是r;
format:一个图像格式的List或Tuple,为什么是一个集合呢?因为当我们要打开某个文件夹中的指定格式图像时,只需要将这些图片的格式放入该集合中,那样在调用open时只会打开在集合中格式的文件。如果该项设置为None,则会尝试打开所有格式的文件。
如果我们想查看所有支持的格式,可以在cmd中运行指令python -m PIL查看;或者使用函数PIL.features.pilinfo()
返回
Image对象
抛出错误
FileNotFoundError
PIL.UnidentifiedImageError:文件打开失败
ValueError:mode不是'r',或者fp是StringIO对象时报错
TypeError:format不是None、List、Tuple时报错
2、图像处理
方法(用法PIL.Image.xxx) | 说明 | 注意事项 |
alpha_composite(im1,im2) | im1、im2进行alpha融合 | im1、im2需要有相同的尺寸,且必须都是RGBA模式 |
blend(im1,im2,alpha) | 图像融合;alpha为im2占比 | |
composite(im1,im2,mask) | 图像融合;融合时用到了mask | |
eval(image,*args) | 对图像中的每个像素用某个函数进行运算 | 如果有多个波段,则相同的函数将应用于每个波段上 |
merge(mode,bands) | 多波段融合为一副图像 |
3、构造图像
方法(PIL.Image.xxx) | 说明 | 注意事项 |
new(mode,size,color=0) | 用给定的mode和size创建新Image | color是构造时所有像素点的值,如果是单波段,给单个值,多波段,则要构造为tuple形式 |
fromarray(obj,mode=None) | 由某个array创建新Image | |
frombytes(mode,size,data,decoder_name='raw',*args) | 从数据流中创建新Image | |
frombuffer | 与frombytes类似,只是数据流是二进制缓冲区中的 |
4、生成具有某种效果的图像
方法(PIL.Image.xxx) | 说明 | 注意事项 |
effect_mandelbrot(size,extent,quality) | 生成Mandelbrot集合图像 | |
effect_noise(size,sigma) | 生成高斯噪声 | sigma:噪声的标准离差 |
linear_gradient(mode) | 生成线性梯度渐变图,大小256x256; | |
radial_gradient(mode) | 生成辐射状剃度颜色渐变图,大小256x256; |
二、Image类
1、方法,假设我们有Image对象im,则使用方法为im.xxx
方法 | 说明 | 注意事项 |
alpha_composite(im,dest=(0,0),source=(0,0)) | alpha融合 | |
convert(mode=None,matrix=None,dither=None,palette=0,colors=256) | 色彩转化,比如从彩色转灰色 | |
copy() | 图像复制 | |
crop(box=None) | 图像切割 | |
draft(mode,size) | 配置图像文件加载器,这样当我们打开某个图像时,可以自动根据该加载器将图像转化为指定Mode | 不一定是完全转化,而是转化为最接近的形式 |
effect_spread(distance) | 将一幅图像上的所有像素点随机散播到该点所在区域附近 | |
entropy(mask=None,extrema=None) | 计算图像的熵 | |
filter(filter) | 用指定滤波器对图像进行滤波 | |
frombytes(data,decoder_name='raw',*args) | 从二进制对象中加载图像 | |
getbands() | 获取所有band的名字 | 对RGB图像使用,返回{'R','G','B'} |
getbbox() | 获得图像值为非零区域的box框 | |
getchannel(channel) | 返回原图像中的单个通道图像 | |
getcolors(maxcolors=256) | 返回一个List,指示图像中各颜色的像素点个数 | |
getdata(band=None) |
以序列的方式返回图像的每个像素点的值。 |
每一列代表一个波段;如果想显示出来数据,可以list(im.getdata()) |
getextrema() | 返回每个波段的最大最小值 | |
getpalette() | 用list的方式返回图像的色板 | |
getpixel(xy) | 返回指定点处的像素值,xy的形式(x,y) | |
histogram(mask=None,extrema=None) | 直方图 | |
paste(im,box=None,mask=None) | 把另一个image粘贴到该image上 |
point(lut,mode=None) | 对每个像素点进行相同操作 | |
putalpha(alpha) | 加载一个alpha图层到该图像上 | |
putdata(data,scale=1.0,offset=0.0) | 从某个序列中拷贝数据到当前图像 |
从图像左上角开始,公式如下: 实际=data*scale+offset |
putpalette(data,rawmode='RGB') | 给该图像设置色板 | |
putpixel(xy,value) | 给指定位置处的像素赋值 | |
quantize(color=256,method=None,kmeans=0,palette=None,dither=1) | 用指定数量的颜色,将该图像转化为'P'mode | |
reduce(factor,box=None) | 图像缩小factor倍 | |
remap_palette(dest_map,source_palette=None) | 重组织色板 | |
resize(size,resampe=3,box=None,reducing_gap=None) | 变换图像大小 |
这个size是(w,h)样式,如果想要缩放至原大小的1/2,可以这样写: r_i=img.resize((img.width/2,img.height/2)) |
rotate(...) | 旋转图像(图像框架不旋转) | |
save() | 保存图像 | |
seek(frame) | 跳转到指定帧处 | |
show(title=None,command=None) | 展示图像 | |
split() | 波段分解 | |
tell() | 返回当前帧帧号 | |
thumbnail(size,resample=3,reducing_gap=2.0) | 返回当前图像的缩略图 | |
tobitmap(name='image') | 返回当前图像转化的位图 | |
to_bytes() | 返回当前图像的字节对象 | |
transform(size,method,data=None,resample=0,fill=1,fillcolor=None) | 对该图像进行变形,变形结果由参数给定 | |
transpose(method) | 旋转图像(图像框架会一起旋转) |
verify() | 验证图像内容(content) | 常用于判断图像是否损坏 |
load() | 为图像分配内存并加载图像 | |
close() | 关闭图像 |
2、属性,假设我们有Image对象im,则使用方法为im.xxx
属性 | 类型 | 说明 |
filename | str | 文件名 |
format | str | 图像格式 |
mode | str | 图像模式 |
size | tuple | 图像尺寸 |
width | int | 宽 |
height | int | 高 |
palette | PIL.ImagePalette.ImagePalette | 色板 |
info | dict | 信息 |
is_animated | bool | 是否是动画(多余一帧) |
n_frames | int | 帧数 |
Python:PIL(三)——Image的更多相关文章
- Python(三) PIL, Image生成验证图片
Python(三) PIL, Image生成验证图片 安装好PIL,开始使用. 在PyCharm中新建一个文件:PIL_Test1.py 1 # PIL 应用练习 2 # 3 # import PIL ...
- Python PIL
Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...
- python PIL 图像处理
python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage. ...
- 学习Python的三种境界
前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...
- selenium webdriver (python) 第三版
感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...
- Python,PIL压缩裁剪图片
自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 初学Python(三)——字典
初学Python(三)——字典 初学Python,主要整理一些学习到的知识点,这次是字典. #-*- coding:utf-8 -*- d = {1:"name",2:" ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
随机推荐
- 定义函数返回 ax2 + bx + c = 0 的两个解
# -*- coding: utf-8 -*- import math def quadratic(a, b, c): s = b*b - 4*a*c if a == 0: x = -c / b re ...
- Kindle连接移动的 Wi-Fi 时要求进行网页浏览器登陆怎么办?
在电脑上新建一个新文件,名为"WIFI_NO_NET_PROBE",同时把后缀名删掉,让它变成一个无格式文件.Kindle 连接电脑,把新建的文件放进Kindle的根目录,断开Ki ...
- 前端基础之javaScript(基本类型-布尔值数组-if-while)
目录 一:javaScript基本数据类型 1.字符串类型常用方法 2.返回长度 3.移出空白 4.移除左边的空白 5.移出右边的空格 6.返回第n个字符 7.子序列位置 8.根据索引获取子序列 9. ...
- 计算机网络再次整理————socket[一]
前言 以前也整理过吧,写了几篇之后,感觉没啥整理的必要了然后就放弃了,最近又想整理一下. 正文 这篇对应的是:https://www.cnblogs.com/aoximin/p/12235333.ht ...
- docker镜像制作Dockerfile
使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...
- docker 安装遇到404 not find
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce/repodata/repomd.xml: [Errno 14] HTTPS E ...
- pl/sql 编程!
一,pl/sql 是什么? --一.pl/sql 是什么? --1.sql是结构化查询语言. --2.编程语言一般都能够声明变量,写条件判断,循环.sql不具备这些特征,所有sql不是一门编程语言. ...
- Three.js 实现2022冬奥主题3D趣味页面 🐼
背景 迎冬奥,一起向未来!2022冬奥会马上就要开始了,本文使用 Three.js + React 技术栈,实现冬日和奥运元素,制作了一个充满趣味和纪念意义的冬奥主题 3D 页面.本文涉及到的知识点主 ...
- 如何在pyqt中使用 QStyle 重绘 QSlider
前言 使用 qss 可以很方便地改变 QSlider 的样式,但是有些情况下 qss 无法满足我们的需求.比如下图所示样式: 如果直接使用 qss 将 handle 的内圆设置为透明背景,会看到 ha ...
- 转载_最值得阅读学习的10个C语言开源项目代码
"源代码面前,了无秘密",阅读优秀代码无疑是开发人员得以窥见软件堂奥而登堂入室的捷径.本文选取10个C语言优秀开源项目的代码作为范本,分别给予点评,免去东搜西罗之苦,点赞!那么问题 ...