两行代码实现图片压缩

2023-02-24 20:05:57 浏览数 (1)

两行代码实现图片压缩

相信大家经常会碰到上传图片的情景,如果图片过大,上传又有限制。这个时候就需要对图片进行压缩处理,截图有可能模糊或者尺寸依然较大,在线网站压缩又可能有隐私顾虑。

作为一个伪技术人员,在多方尝试后发现,python只需两行代码即可完成图片压缩。

环境配置:对于mac用户来说,需要注意opencv和mac版本的冲突

代码语言:javascript复制
# 最新版要求os 11,否则报ImportError: dlopen... 错误
# 本机为os 10.15 不考虑折腾mac版本,选择安装旧版本

# pip install opencv-python==4.2.0.34 # 指定4.2旧版本

本文图片来源于网上,读者可自行网络搜集。如果需要也可微信公众号关注HsuHeinrich,回复关键字【图片压缩】自动获取

代码语言:javascript复制
import cv2 as cv
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt 
  • 两行代码实现图片压缩
代码语言:javascript复制
# 当前目录读取一张图片(2.1M)
img = cv.imread('naruto.png')

# 压缩图片(152Kb)
cv.imwrite('naruto.jpg', img, [cv.IMWRITE_JPEG_QUALITY, 50])
代码语言:javascript复制
True
  • 查看一下压缩情况(非必要)
代码语言:javascript复制
# 查看细节丢失情况 肉眼基本看不出差异
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

0 人点赞