【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

相关文章
|
Python
Python 压缩PDF减小文件大小
【8月更文挑战第6天】介绍了三种用Python压缩PDF文件的方法:1) 使用`pdfcompressor`库,安装后可通过简单命令压缩文件;2) 利用`PyPDF2`库,需手动设置压缩参数;3) 采用`pdfsizeopt`库,一键优化PDF大小。各方法均提供示例代码,便于快速实现文件压缩。
2018 0
|
5月前
|
数据挖掘 C++ 计算机视觉
Python:ImportError:DLL loadfailed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失败 报错解决
在进行文件夹内人脸识别与对比聚类时,遇到onnxruntime库报错,通常因版本不兼容或环境冲突导致。本文整理了五种解决方案:降级onnxruntime至1.14.1、重装库、区分GPU/CPU版本、安装Visual C++运行库、创建Python虚拟环境。通过版本匹配与环境隔离,有效解决DLL初始化失败等问题,提升项目稳定性。
2789 8
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
3635 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
前端开发 关系型数据库 API
深入浅出后端开发——从零到一构建RESTful API
本文旨在为初学者提供一个关于后端开发的全面指南,特别是如何从零开始构建一个RESTful API。我们将探讨后端开发的基本概念、所需技术栈、以及通过实际案例展示如何设计和实现一个简单的RESTful API。无论你是完全的新手还是有一定编程基础的开发者,这篇文章都将为你提供实用的知识和技巧,帮助你在后端开发的道路上迈出坚实的一步。
|
11月前
|
机器学习/深度学习 存储 缓存
大模型推理显存和计算量估计方法
最近做吞吐量调试涉及到输入batch_size的设置,为了把算力和显存用起来,同时不触发out of memory,需要提前估计大模型推理过程中的显存占用
2046 5
|
并行计算 PyTorch Linux
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
13106 0
|
计算机视觉 Python
Opencv学习笔记(十):opencv和base64之间的转换
本文介绍了如何使用Python和OpenCV库将图像在Base64编码和OpenCV可读格式之间进行转换。
749 0
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
4822 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
开发者 Python
Python POST 请求超时配置
Python POST 请求超时配置
1593 1