Python 批量等比例压缩图片(简单好用)

import cv2
import os
import numpy as np
from PIL import Image

# 等比例 批量压缩图片
# 安装cv2时出现问题 可按以下命令安装
# python -m ensurepip
# pip install --upgrade pip
# pip install opencv-python
# 安装成功后找到cv2.pyd所在文件路径把cv2.pyd文件移到site-packages里面
def pic_compress_png(image_path, new_image_path):
    '''
    将图片压缩成png格式
    :param image_path:  原始文件路径
    :param new_image_path:  保存文件路径
    '''
    files = os.listdir(image_path)  # 获取当前路径下的所有文件名字
    files = np.sort(files)  # 按名称排序
    i = 0
    for f in files:
        #确保此处路径准确
        imgpath = image_path +'/'+ f  # 路径+文件名字
        img = cv2.imread(imgpath, 1)  # 读取图片
        dirpath = new_image_path  # 压缩后存储路径
        file_name, file_extend = os.path.splitext(f)  # 将文件名的,名字和后缀进行分割
        dst = os.path.join(os.path.abspath(dirpath), file_name + '.png')  # 文件最终保存的路径及名字(名字和压缩前的名字一致),
        print(os.path.join(dirpath, "1.png"))  # 打印压缩缓存文件路径
        # 输入你想要resize的图像高。
        size = 640
        # 获取原始图像宽高。
        height, width = img.shape[0], img.shape[1]
        # 等比例缩放尺度。
        scale = height / size
        # 获得相应等比例的图像宽度。
        width_size = int(width / scale)
        # resize
        shrink = cv2.resize(img, (width_size, size))
        cv2.imwrite(os.path.join(dirpath, "1.png"), shrink,[cv2.IMWRITE_PNG_COMPRESSION, 1])  # 对图像进行压缩 【cv2.IMWRITE_PNG_COMPRESSION, 1】
        # cv2.IMWRITE_PNG_COMPRESSION  压缩品质 0-10 ,数字越小压缩比越小
        img1 = Image.open(os.path.join(dirpath, "1.png"))  # 打开压缩后的缓冲文件
        img1.save(dst, quality=70)  # 二次压缩,并保存位原始文件的文件名
        os.remove(os.path.join(dirpath, "1.png"))  # 删除缓存文件


# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    image_path = r'D:\old'  # 原始文件路径
    new_image_path = r'D:\now'  # 压缩后文件保存路径
    pic_compress_png(image_path, new_image_path)
    print("压缩完成")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

22ll.cd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值