当前位置: 首页 > article >正文

Python批量裁剪图像尺寸、压缩图像大小代码实现

from PIL import Image
import os
import io

def resize_images_in_directory(directory, target_size=(240, 240), max_file_size_kb=500): #保证处理后的图像集 大小为240*240 且不超过 500K
    for filename in os.listdir(directory):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):  # 这里我添加了lower()以确保文件扩展名的大小写不敏感
            file_path = os.path.join(directory, filename)
            with Image.open(file_path) as img:
                if img.mode != 'RGB':
                    img = img.convert('RGB')
                img = img.resize(target_size, Image.ANTIALIAS)

                # 初始化保存质量
                save_quality = 95
                while True:
                    # 使用 BytesIO 临时保存图像来检查大小
                    buffer = io.BytesIO()
                    img.save(buffer, format='JPEG', quality=save_quality)
                    buffer.seek(0)  # 重置指针到文件的开始
                    size_kb = len(buffer.getvalue()) / 1024  # 获取buffer的大小
                    if size_kb <= max_file_size_kb or save_quality <= 10:
                        break
                    save_quality -= 5  # 减少质量以减小文件大小
                    # buffer.close()  # 不需要显示关闭,with语句会处理

                # 保存调整大小和压缩后的图像
                with open(file_path, 'wb') as f:
                    f.write(buffer.getvalue())  # 写入文件

# 使用函数处理图像
resize_images_in_directory("C:/Users/JJ/Desktop/shousi") # 处理数据集的绝对路径 原始图像集需备份,这里是直接覆盖了


http://www.kler.cn/a/147616.html

相关文章:

  • git常用命令+搭vscode使用
  • K8S 查看pod节点的磁盘和内存使用情况
  • ADC输出码和输入电压转换关系
  • 编译原理(手绘)
  • androidstudio入门到放弃配置
  • 新版Apache tomcat服务安装 Mac+Window双环境(笔记)
  • 阿里云对象存储oss-文件上传过程详解(两种方式)
  • 简易版扫雷+代码分析
  • ElasticSearch的日志配置
  • 十分钟搭建VScode C/C++运行环境
  • 03、K-means聚类实现步骤与基于K-means聚类的图像压缩(1)
  • Python基础语法之学习数据转换
  • React Native 源码分析(五)—— Fabric创建View的过程
  • 复习 学习 多看
  • leetcode9.回文数
  • java Swing UI设置统一字体大小
  • 一起学docker系列之十docker安装tomcat实践
  • leetCode 226.翻转二叉树
  • MFC—CTabCtrl 、CListCtrl
  • k8s docker总结特殊点
  • 【Jmeter】什么是BeanShell?
  • ACE 2005,LDC2006T06数据集获取
  • 2023人形机器人行业海外科技研究:从谷歌看机器人大模型进展
  • Doris_Doris导入常见问题
  • docker容器入门
  • BEV+Transformer架构加速“上车”,智能驾驶市场变革开启