学习自: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. BeanFactory 工厂模式

    /** * BeanFactory实现类 */ public class ClassPathXmlApplicationContext implements BeanFactory { private ...

  2. 女朋友让我深夜十二点催她睡觉,我有Python我就不干

    事情是这样的:今天晚上,女朋友让我十二点催她睡觉. 不过,可是我实在太困了,熬不下去-- 是吧?女朋友哪有睡觉重要? 但,女朋友的命令,我是不敢违抗的-- 但是睡觉也不能缺! 这时候我们该怎么办呢?是 ...

  3. Python 迁移学习实用指南 | iBooker·ApacheCN

    原文:Hands-On Transfer Learning with Python 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则& ...

  4. 「BalkanOI 2018 Day1」Minmaxtree

    「BalkanOI 2018 Day1」Minmaxtree 每个点都有一个最大和最小权值的限制. 然后每一个权值的限制都必须要取到. 每个点显然可以直接让他取到最大或最小权值. 可以想到每个点匹配一 ...

  5. onerror事件捕获网页中的错误

    转载请注明来源:https://www.cnblogs.com/hookjc/ <html><head><script type="text/javascrip ...

  6. Nginx 配置 HTTPS 服务器

    Nginx 配置 HTTPS 服务器 Chrome 浏览器地址栏标志着 HTTPS 的绿色小锁头从心理层面上可以给用户专业安全的心理暗示,本文简单总结一下如何在 Nginx 配置 HTTPS 服务器, ...

  7. Vue3.X安装

    1.查看node.js和npm版本 $ node -v //建议v10以上版本 $ npm -v 2.若已安装了2.x的旧版本,需要先卸载 npm uninstall vue-cli -g 3.安装淘 ...

  8. 简述redis特点及其应用场景

    1. Redis八大特点 1.1. 速度快 说到Redis的速度快,大家的第一反应一定是内存读取,那是肯定的,但如果面试的时候仅仅说到这点,那还是远远不够的,至少还有以下三点要补充: Redis是用C ...

  9. Java泛型详解,史上最全图文详解!

    泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它. 毫不夸张的说,泛型是通用设计上必不可少的元素,所以真正理解与正确使用泛型,是一门必修课. 一:泛型本质 Java 泛型(gen ...

  10. .NET 云原生架构师训练营(权限系统 代码实现 EntityAccess)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...