Python等比例压缩与质量处理图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python等比例压缩与质量处理图片相关的知识,希望对你有一定的参考价值。

项目上需要保存高清图片,不希望图片压缩太多,故分享一下Python下面的图片高质量保存,内容基于常用的PIL和opencv

一.Python PIL

1、在使用PIL image处理图像要获取高质量的关键地方是下面两点:

1、处理时要用 ANTIALIAS;2、保存时是要设置 quality;

2、核心代码:

im.resize(box, Image.ANTIALIAS)
im.save(path, JPEG, quality = 95)

3、示例:

from PIL import Image
file = 1.jpg
img = Image.open(file)
w,h = img.size
w,h = round(w * 0.2),round(h * 0.2) // 去掉浮点,防报错
img = img.resize((w,h), Image.ANTIALIAS)
img.save(1.jpg, optimize=True, quality=85) // 质量为85效果最好

二.Python OpenCV

1、使用opencv保存图像


cv2.imwrite(存储路径,图像变量, [存盘标识])

2、存盘标识说明:

1、cv2.CV_IMWRITE_JPEG_QUALITY  设置图片格式为.jpeg或者.jpg的图片质量,其值为0---100(数值越大质量越高),默认95   2、cv2.CV_IMWRITE_WEBP_QUALITY  设置图片的格式为.webp格式的图片质量,值为0--100   3、cv2.CV_IMWRITE_PNG_COMPRESSION  设置.png格式的压缩比,其值为0--9(数值越大,压缩比越大),默认为3

3、存盘标识示例:

cv2.imwrite(img.jpg,img,[int(cv2.IMWRITE_JPEG_QUALTY),70])  把img变量保存到img.png,图片品质为70

保存png图像,图像后缀必须为.png,图像质量0-9,默认为3,0质量最好,9最差。


cv2.imwrite("123.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])

保存jpg图像,图像后缀必须为.jpg,图像质量0-100,默认为95,100最好,0最差。


cv2.imwrite("123.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])

5、示例:


from PIL import Image
file = 1.jpg
img = Image.open(file)
w,h = img.size
w,h = round(w * 0.2),round(h * 0.2) // 去掉浮点,防报错

img = img.resize((w,h), Image.ANTIALIAS)
img.save(1.jpg, optimize=True, quality=85) // 质量为85效果最好



以上是关于Python等比例压缩与质量处理图片的主要内容,如果未能解决你的问题,请参考以下文章

处理页面载入图片js(等比例压缩图片)

Java实现的上传并压缩图片功能可等比例压缩或原尺寸压缩

js控制图片onload 批量设置内容下所有图片的等比例压缩

调用imagick做图片等比例压缩5M到100kb

加载高清大图崩溃问题

php实现等比例不失真缩放上传图片的方法