python基于opencv压缩自定义尺寸和大小的图片

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)

要修改的地方都在代码中解释了,图片质量越低,文件体积越小

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值