学习自: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. linux 创建用户 用户组,sudo,禁止root远程ssh登录

    创建用户  useradd hanli 为新用户设置密码(在root下可以为普通用户重置密码)  passwd hanli 创建用户组  groupadd  op 将用户添加到用户组  usermod ...

  2. web服务组件

  3. Intellig Idea 常用快捷键列表

    修改方法如下: 点击 文件菜单(File) –> 点击 设置(Settings- Ctrl+Alt+S), –> 打开设置对话框. 在左侧的导航框中点击 KeyMap. 接着在右边的树型框 ...

  4. Redis学习笔记(二)redis 底层数据结构

    在上一节提到的图中,我们知道,可以通过 redisObject 对象的 type 和 encoding 属性.可以决定Redis 主要的底层数据结构:SDS.QuickList.ZipList.Has ...

  5. Mysql自序整理集

    1.事务 mysql事务是用于处理操作量大.复杂性高的数据 1. 事务特性 原子性:保证每个事务所有操作要么全部完成或全部不完成,不可能停滞在中间环节:如事务在执行过程中出现错误,则会回滚到事务开始之 ...

  6. Android 使用签名的好处【转】

    感谢大佬:https://zhidao.baidu.com/question/360127490062917572.html 平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以 ...

  7. SpringBoot使用IDEA设置的外部Tomcat启动

    前言 使用springboot内嵌的tomcat启动是没问题,但是工程是要放到服务器上的tomcat的,所以springboot内嵌的能够启动,但不代表服务器的tomcat能启动起来,我就遇到了这个问 ...

  8. vue element InfiniteScroll 无限滚动 入坑记录

    select_law_by_tag() { this.laws_loading.is_loading = true; this.laws_loading.no_more = false; this.e ...

  9. 对已有的docker容器增加新的端口映射

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...

  10. Linux爱情故事之如何以不一样的姿势(ssh)进入她的心

    文章目录 1.ssh是谁,为什么要进入她的心 2.如何正确的扒拉ssh 2.1.ssh的常用参数 2.2.您配钥匙吗?(ssh生成公钥或者秘钥) 2.3.我要单向畅通无阻的进入你的心(ssh-copy ...