学习自: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的更多相关文章

  1. Python(三) PIL, Image生成验证图片

    Python(三) PIL, Image生成验证图片 安装好PIL,开始使用. 在PyCharm中新建一个文件:PIL_Test1.py 1 # PIL 应用练习 2 # 3 # import PIL ...

  2. Python PIL

    Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...

  3. python PIL 图像处理

    python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage. ...

  4. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

  5. selenium webdriver (python) 第三版

    感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...

  6. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

  7. Python第三天 序列 数据类型 数值 字符串 列表 元组 字典

    Python第三天 序列  数据类型  数值  字符串  列表  元组  字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...

  8. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  9. 初学Python(三)——字典

    初学Python(三)——字典 初学Python,主要整理一些学习到的知识点,这次是字典. #-*- coding:utf-8 -*- d = {1:"name",2:" ...

  10. Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式

    Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell ...

随机推荐

  1. 定义函数返回 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 ...

  2. Kindle连接移动的 Wi-Fi 时要求进行网页浏览器登陆怎么办?

    在电脑上新建一个新文件,名为"WIFI_NO_NET_PROBE",同时把后缀名删掉,让它变成一个无格式文件.Kindle 连接电脑,把新建的文件放进Kindle的根目录,断开Ki ...

  3. 前端基础之javaScript(基本类型-布尔值数组-if-while)

    目录 一:javaScript基本数据类型 1.字符串类型常用方法 2.返回长度 3.移出空白 4.移除左边的空白 5.移出右边的空格 6.返回第n个字符 7.子序列位置 8.根据索引获取子序列 9. ...

  4. 计算机网络再次整理————socket[一]

    前言 以前也整理过吧,写了几篇之后,感觉没啥整理的必要了然后就放弃了,最近又想整理一下. 正文 这篇对应的是:https://www.cnblogs.com/aoximin/p/12235333.ht ...

  5. docker镜像制作Dockerfile

    使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...

  6. docker 安装遇到404 not find

    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce/repodata/repomd.xml: [Errno 14] HTTPS E ...

  7. pl/sql 编程!

    一,pl/sql  是什么? --一.pl/sql 是什么? --1.sql是结构化查询语言. --2.编程语言一般都能够声明变量,写条件判断,循环.sql不具备这些特征,所有sql不是一门编程语言. ...

  8. Three.js 实现2022冬奥主题3D趣味页面 🐼

    背景 迎冬奥,一起向未来!2022冬奥会马上就要开始了,本文使用 Three.js + React 技术栈,实现冬日和奥运元素,制作了一个充满趣味和纪念意义的冬奥主题 3D 页面.本文涉及到的知识点主 ...

  9. 如何在pyqt中使用 QStyle 重绘 QSlider

    前言 使用 qss 可以很方便地改变 QSlider 的样式,但是有些情况下 qss 无法满足我们的需求.比如下图所示样式: 如果直接使用 qss 将 handle 的内圆设置为透明背景,会看到 ha ...

  10. 转载_最值得阅读学习的10个C语言开源项目代码

    "源代码面前,了无秘密",阅读优秀代码无疑是开发人员得以窥见软件堂奥而登堂入室的捷径.本文选取10个C语言优秀开源项目的代码作为范本,分别给予点评,免去东搜西罗之苦,点赞!那么问题 ...