Pillow-优秀的Python图像处理库安装及入门教程

Pillow-优秀的Python图像处理库安装及入门教程

Pillow库是Python 图像处理库(Python image library)的一个派生分支,提供了广泛的文件格式(BMP,PNG,JPEG等)支持,提供基本的图像处理能力,如:

图像存储、图像显示、改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。

比起OpenCV库的图像处理,功能有限,但函数使用非常方便,大多数开发者都会把OpenCV库和Pillow库结合使用。

Pillow库的下载

https://www.lfd.uci.edu/~gohlke/pythonlibs/ 网站   下载 Pillow-8.0.1-cp39-cp39-win_amd64.whl(根据你的Python 环境)

Pillow库的安装

pip install Pillow-8.0.1-cp39-cp39-win_amd64.whl

Pillow-优秀的Python图像处理库安装及入门教程

Pillow库的使用

from PIL import Image
PIL_Image=Image.open("./2019.png")
print(PIL_Image.format,PIL_Image.size,PIL_Image.mode)
PIL_Image.show()
PIL_Image.save('./2020.png')

功能:打开图片、输出图像信息,显示图像,保存图像

注意:

Pillow中的Image.save()方法,使用默认参数保存jpg图片,发现图片被压缩的很严重,导致原来很大的大小变成几十K。

这是因为在保存为jpg的过程中,内部使用压缩算法对图片进行的压缩处理。

但是有些时候往往需要图片的大小不能变化太大或不能太小。所以在使用此方式时可以加入参数:

imObj.save(img_name, quality=95)

quality参数: 保存图像的质量,值的范围从1(最差)到95(最佳)。 默认值为75,使用中应尽量避免高于95的值; 100会禁用部分JPEG压缩算法,并导致大文件图像质量几乎没有任何增益。

使用此参数后,图片大小会增加。如果图片的大小还不能满足你的需求,是否还有其他方式去增加图片大小呢?

save方法还有一个可以配合quality使用的参数,能够大大增加图片大小:

imObj.save(new_name, quality=95, subsampling=0)

subsampling参数:子采样,通过实现色度信息的分辨率低于亮度信息来对图像进行编码的实践。

(参考:https://en.wikipedia.org/wiki/Chroma_subsampling)

可能的子采样值是0,1和2,对应于4:4:4,4:2:2和4:1:1(或4:2:0?)。

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/9031.html

(0)
江山如画的头像江山如画管理团队
精!山东省高等学校在线开放课程建设实施方案,附指导性建设要求,认定指导标准
上一篇 2020年12月7日 下午2:45
下一篇 2020年12月8日 上午10:48

99%的人还看了以下文章

  • js中var a=b=1和var a=1,b=1的区别

    js中一次性定义多个变量的时候,可以用:var a=1,b=1这种中间用逗号隔开的方式,但有些时候为了省事,直接定义var a=b=1。 那这两种写法方式最后效果是一样的吗?有没有什么区别呢?请大家看下面的范例: 1、用var a=b=1的方式 由上图可以明显看出来,变量b的作用域已经是全局的了,因为在函数外可以调用到(可以正常的输出变量)。 2、用var …

    2022年3月19日
    6.3K0
  • tomcat配置中autodeploy 和reloadable的区别和使用场景

    tomcat配置中的autodeploy 和reloadable: <Context docBase=”xxx” path=”/xxx” reloadable=”true”/> <Context docBase=”xxx” path=”/xxx” autoDeploy=”true”/> 替换WEB-INF/lib目录中的jar文件或W…

    2018年12月25日
    8.5K0
  • python turtle绘画0基础练习

    一、题目:导入turtle包(import turtle),绘制边长为100的正方形。 要求: 1、新建一个“turtle2.py”文件 2、编写程序。 3、调试程序。 4、排除错误。 二、导入turtle包(import turtle),绘制半径为40的圆(circle)。 三、题目:导入turtle包(import turtle),绘制边长为60的等边三…

    2023年6月15日
    13.2K0
  • 已知列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来

    list1=[1,2,3,4,5] func=lambda x:x+1 r=map(func,list1) def odd(n): return n%2!=0 result=filter(odd,list(r)) list(result) 知识点一:Python map() 函数 map() 会根据提供的函数对指定序列做映射。 第一个参数 function …

    2022年7月18日
    1.8K0
  • 上机实战五 JavaBean的开发       

      建议学时:2 get方法 set方法 getProperty:获取bean的属性值 setProperty:设置bean的属性值 一、通过表单指定JavaBean的属性。 编写Goods.java(javaBean),定义商品名称、代号、价格,并提供相应的get\set方法。 编写Goods.jsp,页面效果如下,点击提交按钮,会调用javabean,将…

    2018年11月13日
    9.5K0
  • 第六章 Servlet技术(重点章节)

    学习目标:
    掌握Servlet的概念、特点及生命周期
    掌握Servlet与JSP的区别
    理解Servlet在Web项目中的作用
    掌握Servlet常用对象及其方法

    2018年2月22日
    7.7K0

发表回复

登录后才能评论