Jpeg 和 PNG 是两种常用的图像压缩格式,不同场景需要不同质量的图像,本文记录python保存压缩图像控制图像质量的方法。
常用图像格式
BMP(无压缩)
位图(外语简称:BMP、外语全称:BitMaP)BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。
JPEG(有损压缩)
联合照片专家组(外语简称JPEG外语全称:Joint Photographic Expert Group)JPEG也是最常见的一种图像格式,它是由联合照片专家组(外语全称:Joint Photographic Experts Group),文件后辍名为".jpg"或".jpeg",是最常用的图像文件格式,由一个软件开发联合会组织制定,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,因此容易造成图像数据的损伤。尤其是使用过高的压缩比例,将使最终解压缩后恢复的图像质量明显降低,如果追求高品质图像,不宜采用过高压缩比例。但是JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像品质。而且JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。
PNG(无损压缩)
便携式网络图形(外语简称PNG、外语全称:Portable Network Graphics),是网上接受的最新图像文件格式。PNG能够提供长度比GIF小30%的无损压缩图像文件。它同时提供24位和48位真彩色图像支持以及其他诸多技术性支持。由于PNG非常新,所以并不是所有的程序都可以用它来存储图像文件,但Photoshop可以处理PNG图像文件,也可以用PNG图像文件格式存储。
图像保存
- 本文以 opencv 库为例记录图像质量控制方法
- python opencv 保存图像方法:
cv2.imwrite(file,img,num)
- 参数列表:
- file: 文件名
- img: 图像矩阵
- num: 压缩参数
- 压缩参数仅针对特定的格式:
- 对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95
- 对于png ,第三个参数表示的是压缩级别。默认为3
- 压缩参数设置:
- cv2.IMWRITE_JPEG_QUALITY类型为 long , 质量越大图像质量越高,文件越大
- cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小
- 示例代码:
cv2.imwrite('1.png',img, [cv2.IMWRITE_JPEG_QUALITY, 50])
cv2.imwrite('1.png',img, [cv2.IMWRITE_PNG_COMPRESSION, 9])
参考资料
- https://www.cnblogs.com/skyfsm/p/7136709.html
- https://blog.csdn.net/fu6543210/article/details/80835280