学习自: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. 搭建sublime.txt环境结合使用python

    { "cmd": ["python3", "-u", "$file"] }

  2. STC8H开发(八): NRF24L01无线传输音频(对讲机原型)

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. Homework_1

    寒假第一份作业 一.博客园部分 1.个人博客园链接 Click here 2.markdown界面截图 我用typora编辑 所以贴上typora界面的截图 二.Github部分 1.个人Github ...

  4. tmux 入门教程

    tmux 本教程是基于ACWing的<Linux基础课>所做,希望大家支持ACWing 功能 分屏 当需要同时运行两个终端,并且进行比对着输入时,来回切换比较麻烦,就可以利用分屏 可以在一 ...

  5. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

  6. 求一个number数组中的最大值和最小值的差

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  7. 为什么要配置path环境变量

    因为在jdk下bin文件夹中有很多我们在开发中要使用的工具,如java.exe,javac.exe,jar.ex等,那么我们在使用时,想要在电脑的任意位置下使用这些java开发工具,那么我们就需有把这 ...

  8. UIView属性的讲解

    1.父控件和子控件的理解在storyboard中只有UIView是可以在里面拖入子控件的,其他控件不可以(必须通过代码添加)拖入一个UIView控件,在里面添加一些子控件(UIView控件是控制器的V ...

  9. jdk1.5新特性之-----自动装箱与自动拆箱

    import java.util.ArrayList; /* jdk1.5新特性之-----自动装箱与自动拆箱. java是面向对象 的语言,任何事物都可以使用类进行描述,sun就使用了 一些类描述j ...

  10. LVS负载均衡群集部署——NAT模式

    LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...