pip install pillow
一般导入 PIL.Image

from PIL import Image 导入模块不能使用 from PIL import *
im=Image.open('图片文件路径')  开启文件 返回 图片对象
im.show()  显示图片   使用系统默认程序打开图片
im.save('导出文件名称')format  默认为 导入文件名称中的后缀名可以手动设置 按照指定格式保存quality 用来设置保存图片的质量95 最佳1  最差75 默认
im.format   这个变量保存了 im对象 保存的图片的格式      字符串类型
im.mode     这个变量保存了 im对象 保存的图片的像素格式  字符串类型1      1位像素 黑白 L      8位像素 黑白P      8位像素 可以使用调色板映射到其他模式RGB    3*8位像素 真彩RGBA   4*8位像素 真彩+透明通道CMYK   4*8位像素 颜色隔离YCbCr  3*8位像素 彩色视频格式I      32位整型像素F      32位浮点型像素
im.size     这个变量保存了 im对象 保存的图片的大小信息 元组类型
im.convert(像素格式)  返回新的图片对象当像素格式为'P'时Dither  控制颜色抖动  默认为 FLOYDSTEINBERG 不启用设置为 NONE Palette 控制调色板的产生 默认为 WEB 216色的web palette优化调色板需设置为 ADAPTIVEColors  当Palette 为 ADAPTIVE 时控制颜色数量 默认为 256 最大值当RGB RGBA 转换为 L 或 L转换为 RGB RGBA 时可以使用元组 a=(0.1,0.2,0.3,0.4)im.convert('L',a)默认的转换算法为 L = R * 299/1000 + G * 587/1000+ B * 114/1000使用这种方式之后 L= R*a[0]+G*a[1]+B*a[2]RGBA是 L=R*a[0]+G*a[1]+B*a[2]+A*a[3]
im.info  保存了图片的 相关信息 为字典类型
Image.new(像素格式,大小)大小为元组类型第三个参数为可选参数 意义为 生成图片的颜色默认为 0 为黑色可以使用 #颜色标号 来表示颜色也可以使用 模块定义过意义的 颜色字符串 来表示
im.copy()  复制当前对象 然后返回对象
im.crop()  裁剪图片参数为 元组类型 (x,y,x1,y1) 表示坐标原点为原图片的左上角
im.paste(im1,坐标)将im1保存的图片 粘贴在 im对象所保存的图片上im1 保存的图片的左上角为 坐标的左上角坐标为(x,y)  或 (x,y,x1,y1) 如果坐标为 (x,y,x1,y1) 格式那么需要手动计算 需要粘贴的图片大小需要保证x1-x =im1保存的图片的宽y1-y =im1保存的图片的高im.paste(im1,坐标,im2)将im1和im2 做透明重叠之后粘贴到im图片的指定坐标的位置上
im.filter(过滤器)需要导入 from PIL import ImageFilter返回过滤后的图片对象过滤器有ImageFilter.BLUR                均值过滤 会将图片变的模糊ImageFilter.CONTOUR             找轮廓   将原图片的轮廓信息提取出来ImageFilter.DETAIL              使细节变得更加明显ImageFilter.EDGE_ENHANCE        提高人眼对目标图片的识别能力ImageFilter.EDGE_ENHANCE_MORE   使图片中间部分的边缘更加明显ImageFilter.EMBOSS              使图像呈现出浮雕效果ImageFilter.FIND_EDGES          边缘检测 找出图片的边缘信息ImageFilter.SMOOTH              使图片平缓渐变 减少突变梯度 改善图片质量ImageFilter.SMOOTH_MORE         使图片更加平滑ImageFilter.SHARPEN             使图片变得清晰
Image.blend(im1,im2,n)设置两张图片的透明度 将两张图片合成一张图片n为透明度将im1的透明度设置为 im1*(1.0-n) (1.0-n)表示im1的透明程度im2的透明度设置为 im1*n  n表示im2 的透明度然后将两张图片叠加在一起两张图片的大小需要相同
im.split() 返回三个图片对象 分别代表图像的三个通道 R G B 相当于原先 3*8位 为一个像素使用split() 之后将每一个像素分为 8位一个像素 比如 R 只包括 代表R通道的那8位
Image.composite(im1,im2,m)使用m图片作为 透明度对im1 im2 做透明处理 然后叠加在一张图片 返回所有图片的大小必须相同
Image.eval(im1,fun)fun 是一个函数 有一个参数  将im1 保存的图片的每个像素的每个通道 作为参数传入fun函数 进行处理返回一张处理好的图片
Image.merge(mode,[im])将多个单通道的图片按照一定的像素格式合成一张图片mode 表示合成图像的像素格式mode表示的像素格式 的通道个数 就是 图像列表需要拥有的成员的个数
im.draft(mode,size)将im的像素格式设置为mode 大小设置为 size  size为元组格式返回修改后的图片对象
im.getbands()  将im所保存的对象 每个通道的名称 作为元组保存
im.getbbox()返回 (x,y,x1,y1)x,y   左上x,y1  左下x1,y  右上x1,y1 右下
im.getdata()返回 Sequence  可以使用list转换为列表这个 列表中的成员是图片的所有像素成员为元组类型  元组中储存的 是图片的每个像素的R G B 三个值返回的列表的成员顺序和 像素的关系是 一行一行对应  类似c语言中的二维数组
im.getextrema()返回值 元组类型 每个成员表示 RGB 三个通道每个成员为元组类型 储存分别储存 RGB 三个通道的最大值和最小值
im.getpixel((x,y))返回im保存的图片 的指定位置像素的信息比如如果像素格式为 RGB 那么 返回值就为 储存指定位置的RGB 三个通道的值的元组如果要批量获取像素信息 使用 getdata 比较好
im.load()  返回一个用于读取和修改像素的对象a=im.load()可以使用a这个对象 读取im保存的图片的每个像素的信息也可以通过a这个对象 修改im保存的图片的每个像素的信息不过不会直接应用到对应的文件上需要im保存才能应用到对应的文件上a[0,1]  获取im保存的图片 的左上角向右的第一个像素  的信息a[0,1]=(r,g,b)  这里假设im保存的图片的像素格式为 rgb那么要赋值时使用的元组的成员个数就需要对应 R G B 三个通道
im.putdata(data,s,o)从im保存的图片的左上角开始 保存的顺序为:a=im.load()for i in range(n):for j in range(n2):a[j,i]=data[j+n2*i]*s+o这里以图片的像素格式为 L 为例子data的成员的类型在和像素格式有关如果图片有多个通道 那么 data的成员就为元组类型 元组中的成员就对应通道
im.Resize((w,h))将im对应的图片 的宽设置为 w  高设置为 h并对图片进行 相应的 拉伸和压缩返回修改后的图片
im.Rotate(n,fil,exp)将im对应的图片 顺时针旋转n度fil默认为 NEAREST 可使用 NEAREST BILINEAR BICUBIC ANTIALIAS 默认为 NEAREST用来表示旋转后图片的质量exp 默认为 false 表示输出图像与原图大小相同 多出的部分被忽略如果为true 那么将自动缩小旋转后的图像 使旋转不使图片缺少 旋转之后整个图片和原图大小相同
im.seek(n)当im为 gif图片文件对象时使用导入图片之后直接输出 会 显示第0帧im.seek(1) 会将im当前输出的图片变为原图的 第1帧不影响后面获取原图某一帧
im.tell()im为gif图片文件对象返回当前图片位于原图的第n帧 从0 计算
im.thumbnail(n,f)f 为 NEAREST BILINEAR BICUBIC ANTIALIAS 默认为 NEAREST其中质量最好的为 ANTIALIAS 将图片按照比例缩放到符合n的大小  不会大于nn的值应为 (w,h)
im.transform(s,me,data,fil)s的格式为(w,h)在im所保存的图片中截取data所表示的范围中的图像将截取的图像按照比例放大或缩小 到s所表示的大小me可取的值 为 EXTENT       截取一个矩形区域 当me 的值为 Image.EXTENT 时data为一个 有四个成员的元组用来代表 矩形的左上角 和右下角(x,y,x1,y1)AFFINE       放射变换当me的值为 Image.AFFINE 时data为一个有六个成员的元组 将新生成的每一个像素的位置设置为 (x,y)将data设置为 (a,b,c,d,e,f)新生成的图片叫 im1那么 im1 的每一个像素 就是 原图片的 (a*x+b*y+c,d*x+e*y+f)所指向的位置处的像素新图片的(1,1) 位置的像素就是原图片的 (a+b+c,d+e+f) 位置的像素QUAD         将四边型转换为矩形当me的值为 Image.QUAD 时data为一个有八个成员的元组(x,y,x1,y1,x2,y2,x3,y3)每一对(xn,yn) 都表示四边形的一个角的坐标在截取由data表示的四边形后 再将这样一个图形强行变成s(w,h) 所表示的矩形MESH         映射多个正方形 PERSPECTIVE  对图像进行透视变换类似AFFINE 当me的值为 Image.PERSPECTIVE 时data为一个有八个成员的元组(a,b,c,d,e,f,g,h)将新生成的图像的每一个像素的位置设置为(x,y)新生成的图像的名称为 im1那么im1的每一个像素 就是 原图像的((a*x+b*x+c)/(g*x+h*y+1),(d*x+e*y+f)/(g*x+h*y+1))位置的像素 一一对应
im.transpose(m)旋转或翻转当前图像m可取值 FLIP_LEFT_FIGHT    将原图左右翻转后的结果返回FLIP_TOP_BOTTOM    将原图上下反转后的结果返回ROTATE_90          将原图顺时针旋转90度后的结果返回ROTATE_180         将原图顺时针旋转180度后的结果返回ROTATE_270         将原图顺时针旋转270度之后的结果返回

python的图像处理模块pillow相关推荐

  1. python图像处理---python的图像处理模块Image

    https://blog.csdn.net/jiaoyangwm/article/details/79293272 [python图像处理]python的图像处理模块Image 版本信息:2.7.11 ...

  2. python pil怎么安装_python pil 怎么安装 怎样安装python的图像处理库pillow

    python 怎么安装pillow 1. 安装pip [plain] view plain copy sudo easy_install pip pip 安装成功就可以直接安装pil或者pillow ...

  3. Python图像处理模块pillow子模块Image用法精要

    Image是pillow库中一个非常重要的模块,提供了大量用于图像处理的方法.使用该模块时,首先需要导入. >>> from PIL import Image 接下来,我们通过几个示 ...

  4. python 图像处理模块pillow

    PIL:python imageing library,是python的基本图像处理库,PIL功能强大,API简单易用.由于PIL只支持python2.7,因此一群志愿者在PIL的基础上创建了新的版本 ...

  5. 【python图像处理】python的图像处理模块Image【原创】

    版本信息:2.7.11 环境:windows 7 64位系统 编辑器:PyCharm 运行工具: PyCharm 文件地址:D:\phpStudy\WWW\python\Image 一.引入图像模块 ...

  6. Python:图像处理——使用Pillow对图像做基本变化

    目录 一.图像处理 1. 灰度图像 2. 二值图像 3. 索引图像 4. RGB彩色图像 5. 图像存储方式 二.图像处理基础操作 1.查看图片属性 2. 显示RGB不同通道 3.PGB和HSV的转换 ...

  7. python pillow环境_解决Python图片处理模块pillow使用中出现的问题

    最近爬一个电影票房的网站(url:http://58921.com/alltime),上面总票房里面其实是一张图片,那么我需要把图片识别成文字,来获取票房数据. 我头脑里第一想到的解决方案就是要用te ...

  8. python验证码识别模块_Python图像处理之验证码识别

    在上一篇博客Python图像处理之图片文字识别(OCR)中我们介绍了在Python中如何利用Tesseract软件来识别图片中的英文与中文,本文将具体介绍如何在Python中利用Tesseract软件 ...

  9. python头像变二维码_Python 图像处理库 pillow,提取支付宝和微信支付图片二维码...

    下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需要一定成本.本文将教你使用 Pytho ...

最新文章

  1. mysql集群mysql-cluster安装
  2. matlab求解极限与倒数,matlab实验二__极限与导数
  3. ES6新特性之转码器(UmiJS入门)
  4. 巴科斯范式BNF: Backus-Naur Form介绍
  5. 最专业的业余数学家!
  6. 从零开始打造数据中心的N道门槛 | 又拍干货分享
  7. UVA10293 Word Length and Frequency【单词长度频度+strtok】
  8. nginx服务器硬件配置要求_聚英国际|Filecoin网络对服务器硬件要求及工作流程分析...
  9. [你的灯亮着吗]读书笔记
  10. 各地少先队深入开展红领巾心向党主题教育-少先队-红领巾心向党-主题教育
  11. Linux下搭建FastDFS文件服务器(亲测成功)
  12. 独创圆柱形投影,索尼高透光HOE全息显示方案详解
  13. 常用的数字正则表达式
  14. 关于达芬奇调色台的那些事儿
  15. Perl/Tkx ---- tcl/tk文本组件text
  16. MathType如何编辑等号带点
  17. java中Scanner用法
  18. ETL工程师 2021-11-14
  19. ubuntu使用xopen软件
  20. linux改主机名redhat7永久,云服务器centos7永久更改主机名

热门文章

  1. 互联网数据泛滥下,你的隐私数据要如何保护?
  2. html5 js php,html5·css·php·js简单代码
  3. 原生js如何创建弹出层
  4. Carbide LED进行闪烁的设置
  5. NVIDIA 7th SkyHackathon(四)Nemo ASR 模型训练与评估
  6. vue电商—商品详情实现电商图片放大镜,移入放大效果,移出放大消失
  7. 开箱即用的 SQL Server Docker 之二
  8. 产品经理的日常工作内容有哪些
  9. 零基础搭建苹果cmsv10影视站教程
  10. 【PID】【3】模拟的无人机系统,反向的积分就是微分——拉普拉斯变换和Z变换