import cv2 as cv
import os
#显示图片
def cv_show(name, img):
cv.imshow(name, img)
cv.waitKey(0)
cv.destroyAllWindows()
#得到图片大小
def get_doc_size(path):
try:
size = os.path.getsize(path)
return get_kb_size(size)
except Exception as err:
print(err)
#得到具体多少kb
def get_kb_size(bytes):
bytes = float(bytes)
kb = bytes / 1024
return kb
#删除这个路径下的文件
def delete_file(path):
if file_exist(path):
os.remove(path)
else:
print('no such file:%s' % path)
#通过系统命令判断这个文件是否存在
def file_exist(path):
return os.path.exists(path)
#设定图片宽为480px,高为640px
def resize_rate(path, resize_path,quality):
image = read_image(path)
im_resize = cv.resize(image,(480,640)) #这边修改图片尺寸
delete_file(resize_path)
save_image(resize_path, im_resize,quality)
def save_image(path, image,quality):
cv.imwrite(path, image,[int(cv.IMWRITE_JPEG_QUALITY),quality])
def read_image(path):
return cv.imread(path)
#这边修改要压缩文件存放的路径
path = "C:/picture/2021.png"
#这边修改压缩后文件存放的路径
resize_path = "C:/picture/2020.jpg"
#这边修改目标压缩大小,单位kb
filesize = 38
#这边修改图片质量
quality = 95
size = get_doc_size(path)
delete_file(resize_path)
while size > filesize:
if quality >= 60:
if file_exist(resize_path):
resize_rate(resize_path, resize_path,quality)
else:
resize_rate(path, resize_path,quality)
else:
print("压缩后的图片无法满足要求!!!")
break
quality = quality-1
size = get_doc_size(resize_path)
要修改的地方都在代码中解释了,图片质量越低,文件体积越小