【CV】PIL.Image.save() 保存图片压缩问题

简介: PIL.Image.save() 保存图片压缩问题

1. 出现的问题:

在Pillow中的PIL.Image.save()方法中,使用默认参数保存jpg图片的过程中发现图片被压缩的很严重,导致原来很大的图片变成几十KB。但是有些时候往往需要图片的大小不能变化太大或不能太小。

2. 问题原因:

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

3. 解决方法

在保存的时候,加上一些参数。

form PIL import Image
img = Image.open("xxx.jpg")
img.save(img_name, quality=95)

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

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

通过查阅资料并尝试,发现save方法还有一个可以配合quality使用的参数,能够大大增加图片大小:

img.save(new_name, quality=95, subsampling=0) # 可能的子采样值是0,1和2

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

注意: 以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况,在项目实践过程中,楼主只使用了quality参数就满足了要求,后面的subsampling参数未使用。以上仅供参考。

参考

https://blog.csdn.net/weixin_41935140/article/details/83308359

文章首发于:https://blog.csdn.net/AugustMe/article/details/117118860

相关文章
|
14天前
|
编解码 数据安全/隐私保护
pdf保存为img
【9月更文挑战第06天】
26 6
|
缓存 计算机视觉 数据格式
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决
|
1月前
GDAL创建JPG或PNG格式图像
GDAL创建JPG或PNG格式图像
45 0
|
3月前
|
计算机视觉
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决
|
4月前
|
Python
image.save()方式支持的图片格式
python保存图片格式
157 0
|
9月前
|
计算机视觉 C++
png,jpg图片透明度化demo
png,jpg图片透明度化demo
56 0
|
10月前
webp批量转换为png、jpg工具
webp批量转换为png、jpg工具
|
JavaScript
图片转换为base64
图片转换为base64
|
Python
Python:data:image/png;base64图片编码解码
Python:data:image/png;base64图片编码解码
773 0
|
计算机视觉 Python
PIL.Image.open和cv2.imread的比较与相互转换
PIL.Image.open读入的是RGB顺序,而opencv中cv2.imread读入的是BGR通道顺序 。cv2.imread会显示图片更蓝一些。
436 0
PIL.Image.open和cv2.imread的比较与相互转换