本文主要是介绍【数据集制作】批量jpeg压缩图像+从多个文件夹中选取第一张图进行压缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
毕设需要制作一批压缩的图像,要求用jpeg压缩,保持分辨率不变,在这里我用的是PIL库中所包含的Image包。
先上压缩代码
import os
from PIL import Image
import threading
import timedef imgToProgressive(path):# if path isn't a image file,returnif not path.split('.')[-1:][0] in ['png', 'jpg', 'jpeg']:returnif os.path.isdir(path):return
# transform img to progressiveimg = 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
这一部分只能压缩同一个文件夹下的图片,而原始数据集的分布是这样的
文件夹套文件夹,每一个文件夹里还有若干图片
因为每个图片的清晰度不同,我需要要将每一个子文件夹里面的图片进行压缩,所以先写一个脚本遍历每个子文件夹的图片,只选取第一张,再遍历外面的大文件夹。
我的代码被误删了可恶!!!!!等有时间补上吧
最后选取的图片如下:
这篇关于【数据集制作】批量jpeg压缩图像+从多个文件夹中选取第一张图进行压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!