python 图片压缩
时间: 2023-08-28 18:17:14 浏览: 112
对于Python图片压缩,有两种常见的方法,一种是使用OpenCV库,另一种是使用Pillow库。根据引用和引用的对比,可以看出Pillow库在压缩图片方面存在质量丧失和失真问题。而OpenCV库在压缩图片方面可以提供更好的保真度。
使用OpenCV库进行图片压缩的核心思路是循环降低图片质量直至达到目标大小。以下是一段使用OpenCV库进行图片压缩的示例代码:
```python
import cv2
import numpy as np
def pic_compress(pic_path, out_path, target_size=199, quality=90, step=5, pic_type='.jpg'):
# 读取图片
img_cv = cv2.imread(pic_path)
current_size = len(img_cv) / 1024
print("图片压缩前的大小为(KB):", current_size)
while current_size > target_size:
# 使用OpenCV库进行图片压缩
pic_byte = cv2.imencode(pic_type, img_cv, [int(cv2.IMWRITE_JPEG_QUALITY), quality])[1]
if quality - step < 0:
break
quality -= step
current_size = len(pic_byte) / 1024
# 保存图片
with open(out_path, 'wb') as f:
f.write(pic_byte)
return len(pic_byte) / 1024
def main():
pic_size = pic_compress('test.jpg', 'new_test.jpg', target_size=100)
print("图片压缩后的大小为(KB):", pic_size)
if __name__ == '__main__':
main()
```
这段代码使用了OpenCV库的imencode函数来压缩图片,并根据目标大小和质量参数来进行循环压缩,直到达到目标大小为止。压缩后的图片保存在指定的输出路径中。可以根据需要修改目标大小、质量参数等来进行定制化压缩。
希望这个示例代码可以帮助到你。如果有任何其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [python压缩图片--指定压缩大小且保真压缩](https://blog.csdn.net/Paper_Sheep/article/details/127543648)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文