【数据集制作】批量jpeg压缩图像+从多个文件夹中选取第一张图进行压缩

毕设需要制作一批压缩的图像,要求用jpeg压缩,保持分辨率不变,在这里我用的是PIL库中所包含的Image包。
先上压缩代码

import os
from PIL import Image
import threading
import time


def imgToProgressive(path):
    # if path isn't a image file,return
    if not path.split('.')[-1:][0] in ['png', 'jpg', 'jpeg']:
        return
    if os.path.isdir(path):
        return
# transform img to progressive
    img = Image.open(path)
    destination = path.split('.')[:-1][0] + \
        '_destination.'+path.split('.')[-1:][0]
    try:
        print(path.split('\\')[-1:][0], '开始转换图片')
        img.save(destination, "JPEG", quality=20,
                 optimize=True, progressive=True)  # 转换就是直接另存为
        print(path.split('\\')[-1:][0], '转换完毕')
    except IOError:
        Image.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
        img.save(destination, "JPEG", quality=20,
                 optimize=True, progressive=True)
        print(path.split('\\')[-1:][0], '转换完毕')
    print('开始重命名文件')
    os.remove(path)
    os.rename(destination, path)


for d, _, fl in os.walk(os.getcwd()):  # 遍历目录下所有文件
    for f in fl:
        try:
            imgToProgressive(d+'\\'+f)
        except:
            pass

这一部分只能压缩同一个文件夹下的图片,而原始数据集的分布是这样的
在这里插入图片描述
在这里插入图片描述
文件夹套文件夹,每一个文件夹里还有若干图片
在这里插入图片描述
因为每个图片的清晰度不同,我需要要将每一个子文件夹里面的图片进行压缩,所以先写一个脚本遍历每个子文件夹的图片,只选取第一张,再遍历外面的大文件夹。

我的代码被误删了可恶!!!!!等有时间补上吧
最后选取的图片如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值