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("压缩完成")
Python 批量等比例压缩图片(简单好用)
最新推荐文章于 2024-07-20 17:12:48 发布