Python Pillow Image.save 保存为jpg图片压缩问题

 更新时间:2021年11月23日 11:47:36   作者:翱翔的赖克  
Pillow 库支持多种图片格式,Pillow 能够很轻松地实现图片格式之间的转换。本文就来详细的介绍一下Image.save的具体使用,感兴趣的可以了解一下

Pillow图片格式转换

Pillow 库支持多种图片格式,您可以直接使用 open() 方法来读取图片,并且无须考虑图片是何种类型。Pillow 能够很轻松地实现图片格式之间的转换。

图片格式之间的转换主要有以下两种方法,下面分别对它们进行了介绍:

save()

顾名思义,save() 方法用于保存图像,当不指定文件格式时,它会以默认的图片格式来存储;如果指定图片格式,则会以指定的格式存储图片。save() 的语法格式如下:

Image.save(fp, format=None)

参数说明如下:

  • fp:图片的存储路径,包含图片的名称,字符串格式;
  • format:可选参数,可以指定图片的格式。

示例如下:

from PIL import Image
im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
im.save('C:/Users/Administrator/Desktop/c.biancheng.net.bmp')

此时您的计算机桌面上会存在一个 c.bianchneg.net.BMP格式的图片。

convert()+save()

注意,并非所有的图片格式都可以用 save() 方法转换完成,比如将 PNG 格式的图片保存为 JPG 格式,如果直接使用 save() 方法就会出现以下错误:

from PIL import Image
im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
im.save('C:/Users/Administrator/Desktop/c.biancheng.net.jpg')

错误信息如下所示:

#系统错误,RGBA不能作为JPEG图片的模式

OSError: cannot write mode RGBA as JPEG

引发错误的原因是由于 PNG 和 JPG 图像模式不一致导致的。其中 PNG 是四通道 RGBA 模式,即红色、绿色、蓝色、Alpha 透明色;JPG 是三通道 RGB 模式。因此要想实现图片格式的转换,就要将 PNG 转变为三通道 RGB 模式。

Image 类提供的 convert() 方法可以实现图像模式的转换。该函数提供了多个参数,比如 mode、matrix、dither 等,其中最关键的参数是 mode,其余参数无须关心。语法格式如下:

convert(mode,parms**)
  • mode:指的是要转换成的图像模式;
  • params:其他可选参数。

修改后的代码如下所示:

from PIL import Image
im = Image.open("C:/Users/Administrator/Desktop/c-net.png")
#此时返回一个新的image对象,转换图片模式
image=im.convert('RGB')
#调用save()保存
image.save('C:/Users/Administrator/Desktop/c.biancheng.net.jpg')

通过以上代码,成功将 PNG 格式的图片转换为了 JPG 格式。 

Pillow Image.save 保存为jpg图片压缩

在使用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?)。

经过实践将值设为0便可以满足图片大小增大的需求。

注意: 以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况。

参考文档:https://pillow.readthedocs.io/en/5.1.x/handbook/image-file-formats.html#jpeg

参考文档:https://pillow.readthedocs.io/en/4.0.x/PIL.html

到此这篇关于 Python Pillow Image.save 保存为jpg图片压缩问题的文章就介绍到这了,更多相关Pillow Image.save 保存为jpg内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Python 使用指定的网卡发送HTTP请求的实例

    Python 使用指定的网卡发送HTTP请求的实例

    今天小编就为大家分享一篇Python 使用指定的网卡发送HTTP请求的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python快速实现简易贪吃蛇小游戏的示例代码

    Python快速实现简易贪吃蛇小游戏的示例代码

    贪吃蛇(也叫做贪食蛇)游戏是一款休闲益智类游戏,有PC和手机等多平台版本。既简单又耐玩。本文将利用Python语言快速实现简易贪吃蛇小游戏,感兴趣的可以尝试一下
    2022-10-10
  • Python的加密模块之hashlib 与 base64详解及常用加密方法

    Python的加密模块之hashlib 与 base64详解及常用加密方法

    我们来学习一下 Python 中的加密模块,加密模块在工作中被广泛应用,比如数据的传入 不希望被捕获,通过把数据加密。这样即使被捕获也无法获取到数据的真实信息,今天我们就来学习一下关于加密的方法,感兴趣的朋友跟随小编一起看看吧
    2023-02-02
  • 封装Detours用于Python中x64函数hook详解

    封装Detours用于Python中x64函数hook详解

    Detours是微软发布的一个API hook框架,同时支持x86和x64,看文档说也支持ARM和ARM64的Windows,这篇文章主要介绍了封装Detours用于Python中x64函数hook,需要的朋友可以参考下
    2023-12-12
  • django queryset相加和筛选教程

    django queryset相加和筛选教程

    这篇文章主要介绍了django queryset相加和筛选教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python如何安装mysql数据库模块

    Python如何安装mysql数据库模块

    这篇文章主要介绍了Python如何安装mysql数据库模块问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 简单介绍Python虚拟环境及使用方法

    简单介绍Python虚拟环境及使用方法

    Python的虚拟环境极大地方便了人们的生活.本文介绍了虚拟环境的基础知识以及使用方法,文中有非常详细的说明,需要的朋友可以参考下
    2021-06-06
  • python动态性强类型用法实例

    python动态性强类型用法实例

    这篇文章主要介绍了python动态性强类型用法,对比C#实例分析了python动态性强类型的使用方法,需要的朋友可以参考下
    2015-05-05
  • Python的for和break循环结构中使用else语句的技巧

    Python的for和break循环结构中使用else语句的技巧

    平时我们把在if结构中使用else语句当作理所当然,然而,Python强大的语法糖可以让else语句在for和while循环中使用!下面我们就通过例子来看一下Python的for和break循环结构中使用else语句的技巧
    2016-05-05
  • Python创建自己的加密货币的示例

    Python创建自己的加密货币的示例

    这篇文章主要介绍了Python创建自己的加密货币的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03

最新评论