利用Python批量压缩图片大小(不改变图片尺寸,不改变图片格式)

news2024/10/7 8:30:11

我们经常需要在某些文件中如:Word,Excel,PPT等中,插入大量的图片,但是图片每一张的内存都不小,累计多了,就是导致文件的内存过大,导致客户打不开文件,那么我们可以将图片的内存压缩一下!!

也是找了很多办法,终于解决了!接下来照葫芦画瓢就好啦!!

第一步,准备两个文件夹

文件夹1【原图片】

文件夹2【压缩后】

在这里插入图片描述

第二步,需要安装的库

安装
PILpip install Pillow

代码:

compressImage(r".\原图片", r".\压缩后"),一共两个参数,一个是原文件,一个是存放压缩后的

from PIL import Image
import os
import os.path


def picIsCorrect(fileSuffix):
    if fileSuffix == ".png" or fileSuffix == ".jpg" or fileSuffix == ".jpeg":
        return True
    else:
        return False


def compressImage(srcPath, dstPath):
    for filename in os.listdir(srcPath):
        if not os.path.exists(dstPath):
            os.makedirs(dstPath)

        srcFile = os.path.join(srcPath, filename)
        dstFile = os.path.join(dstPath, filename)

        # print(srcFile)
        # print(dstFile)

        srcFiledirName = os.path.dirname(srcFile)
        basename = os.path.basename(srcFile)  # 获得文件全称 例如  migo.png
        filename, fileSuffix = os.path.splitext(
            basename)  # 获得文件名称和后缀名  例如 migo 和 png

        if os.path.isfile(srcFile) & picIsCorrect(fileSuffix):
            try:
                sImg = Image.open(srcFile).convert('RGB')
                w, h = sImg.size
                # print(w, h)
                dImg = sImg.resize((int(w / 2), int(h / 2)), Image.ANTIALIAS)
                dImg.convert('RGB').save(dstFile)
                print(dstFile + "压缩完成!!")
            except (IOError, ZeroDivisionError) as e:
                print(e.message)

        if os.path.isdir(srcFile):
            compressImage(srcFile, dstFile)


if __name__ == '__main__':
    compressImage(r".\png", r".\test")

效果:

在这里插入图片描述
在这里插入图片描述

演示视频

请添加图片描述

参考文档1:参考资料

参考文档2:参考资料

希望对大家有帮助,如有错误,欢迎指正

致力于办公自动化的小小程序员一枚

希望能得到大家的【一个免费关注】!感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指针的指针理解与用法

指针实际上就是一个变量,当他不是空指针的时候他的值就是某一个地址,同时他自己也是有地址的,因为它是一个变量。 指针的指针的值其实就是某一个指针的地址。 int main() {int a 5;int *p &a;int **pp &p;printf("%p\n&quo…

GitHub Pages + Hexo搭建个人博客网站

步骤 参考如下步骤:https://blog.csdn.net/yaorongke/article/details/119089190 出现的问题 1 Fluid主题 其更换Fluid主题时: 下载最新 release 版本 解压到 themes 目录,并将解压出的文件夹重命名为 fluid 按照上面执行后,后…

新增数据列--Pandas

1. 直接赋值 order pd.read_excel(C:\\Users\\changyanhua\\Desktop\\order.xlsx) print(order.head()) # 1.直接赋值新增列: order[平均价]order[销售额]/order[数量] print(order.head())2.apply()方法 2.1 函数功能 沿着DataFrame的某个轴应用一个函数。返回…

AIGC - Stable Diffusion 的 Prompts 提示词工程框架 (1)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131544508 当前 Stable Diffusion 模型使用基础的 stable-diffusion-v1-5,即 v1-5-pruned-emaonly.safetensors。 Stable Diffusion …

【RT】统一的基于文本的行人检索:大规模多属性和语言检索基准

Towards Unified Text-based Person Retrieval: A Large-scale Multi-Attribute and Language Search Benchmark 西安交通大学 针对 基于文本的行人检索的预训练 展开探索 Motivation Data Scarcity Contributions MALS(Multi-Attribute and Language Search dataset for pe…

关于亚马逊测评,为何绝大多数卖家都倾向于自养号测评

亚马逊测评在当前的电商环境中对于卖家的重要性不言而喻。现在越来越多的卖家选择自养账号测评,相对于找国外买手或测评服务商,主要是出于以下考虑: 1.避免买家账号资源的重复使用:使用国外买手或测评服务商时,买家账…

Python+selenium自动化测试

批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的。 unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLTestRunner 一、导入HTML…

VSCode如何通过Ctrl+P快速打开node_modules中的文件

背景 咱们新建一个NodeJS项目,必然会安装许多依赖包,因此经常需要查阅某些依赖包的源码文件。但是,由于node_modules目录包含的文件太多,出于性能考虑,在VSCode中默认情况下是禁止搜索node_modules目录的。在这种情况…

Spring Boot 中的 XSS 攻击是什么,原理,如何预防

Spring Boot 中的 XSS 攻击是什么,原理,如何预防 XSS(Cross-Site Scripting,跨站脚本攻击)是 Web 应用程序开发中常见的一种安全问题。在 Spring Boot 中,XSS 攻击可能会导致应用程序被攻击者利用&#xf…

阿里云直播配置

一、开通阿里云直播 首先进入阿里云直播产品主页:https://www.aliyun.com/product/live 。 点击下方的“立即开通”。 如果是还未注册的用户请按照页面提示进行完成注册并实名认证。 2、首次进入会提示开通服务,点击“开通服务”,然后选择计…

操作系统与内核、系统编程与应用编程

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

Ubuntu18.04系统如何安装和使用telnet工具

在ubuntu18.04中如何安装和使用telnet工具呢?本文给出详细说明。 1.更新软件列表 sudo apt update 2.安装telnet服务 sudo apt install openbsd-inetd telnetd 3.查看telnet运行状态 netstat -a | grep telnet 4.登录测试 telnet 127.0.0.1

【NLP】PNR指标

PNR(Positive Negative Rate) 正逆序比 正序数 / 逆序数; 当正序数量越多、逆序数量越少时,表明模型对序关系的刻画越准确,模型效果越好。 参考:https://www.jianshu.com/p/e9813ac25cb6

如何使用不同的工具运行交互式的python

最近在极客时间学习陈旸老师《数据分析实战45讲》专栏,需要用到python,自19年后基本没用过python,现在又重头抓起,针对遇到的问题进行总结积累。代码片段均取自专栏内容。 示例代码: name raw_input("Whats your…

了解抖音本地生活服务商:连接你与便捷生活的桥梁

抖音本地生活服务商是抖音平台为用户提供的一项服务,旨在连接用户与本地商家,为用户提供更便捷的本地生活服务。下面是四川不若与众对抖音本地生活服务商的介绍。 1. 提供多样化的服务:抖音本地生活服务商为用户提供了多样化的服务&#xff0…

MongoDB【MongoDB索引Index (索引概述、索引类型、复合索引、)】(三)-全面详解(学习总结---从入门到深化)

目录 MongoDB索引Index 聚合操作 通过聚合操作可以处理多个文档,并返回计算后的结果。 对多个文档进行分组对分组的文档执行操作并返回单个结果分析数据变化 聚合管道 分别由多个阶段来处理文档,每个阶段的输出是下个阶段的输入, 返回的是…

C / C++的wprintf打印速度太慢,改WriteConsoleW输出提速200+倍

在 C / C 处理将UTF-8字符串内容输出到终端控制台时,平时惯用一个广泛使用的 wprintf() 函数,虽然它支持 Unicode 、UTF-8 字符,但在测试过程中发现它输出大文件时会有严重拖累性能, 测试打印文件:一个将近6万行的 Jav…

VTK 学习笔记一

https://www.cnblogs.com/yangai/p/5955614.html VTK笔记-了解VTK_黑山老妖的笔记本的博客-CSDN博客 一、VTK一般流程 1、source 数据源 VTK基础教程(1)- vtkPolyData 介绍_TGTSTTG的博客-CSDN博客 vtkSource 数据源,个人理解的就是故事灵…

从交易成本模型的角度解析高频交易策略的优劣

高频交易作为一种快速的股市交易方式,越来越受到了投资者的关注。但是,高频交易捕捉到的价格差很小,因此需要使用的交易成本模型与传统的投资方式有所不同。本文将从交易成本模型的角度出发,探讨高频交易策略的优劣。 一、交易成…

jar-protect Jar 包加壳工具

jar-protect 是 java 的 jar 加密加壳工具,对 class 文件进行加密防护,避免反编译破解。 java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar 包很容易被反编译和破解。 受 classfi…