两行代码实现图片压缩
相信大家经常会碰到上传图片的情景,如果图片过大,上传又有限制。这个时候就需要对图片进行压缩处理,截图有可能模糊或者尺寸依然较大,在线网站压缩又可能有隐私顾虑。
作为一个伪技术人员,在多方尝试后发现,python只需两行代码即可完成图片压缩。
环境配置:对于mac用户来说,需要注意opencv和mac版本的冲突
代码语言:javascript复制# 最新版要求os 11,否则报ImportError: dlopen... 错误
# 本机为os 10.15 不考虑折腾mac版本,选择安装旧版本
# pip install opencv-python==4.2.0.34 # 指定4.2旧版本
代码语言:javascript复制本文图片来源于网上,读者可自行网络搜集。如果需要也可微信公众号关注HsuHeinrich,回复关键字【图片压缩】自动获取
import cv2 as cv
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt
- 两行代码实现图片压缩
# 当前目录读取一张图片(2.1M)
img = cv.imread('naruto.png')
# 压缩图片(152Kb)
cv.imwrite('naruto.jpg', img, [cv.IMWRITE_JPEG_QUALITY, 50])
代码语言:javascript复制True
- 查看一下压缩情况(非必要)
# 查看细节丢失情况 肉眼基本看不出差异
fig = plt.figure(figsize = (80,60))
img1 = plt.imread('naruto.png') # 原始图片
plt.subplot(1, 2, 1)
plt.imshow(img1)
plt.xticks([])
plt.yticks([])
img2 = plt.imread('naruto.jpg') # 压缩后图片
plt.subplot(1, 2, 2)
plt.imshow(img2)
plt.xticks([])
plt.yticks([])
fig.tight_layout() # 调整整体空白
plt.subplots_adjust(wspace =0.02, hspace =0) # 调整子图间距
plt.show()
output_3_0