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

本文主要是介绍【数据集制作】批量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压缩图像+从多个文件夹中选取第一张图进行压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634929

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规