利用python批量压缩图教程:如何轻松减小图片大小

在日常的编程工作中,我们经常需要处理图像,例如上传、下载、显示、编辑等。有时候,我们需要对图像进行压缩,以减少占用的空间和带宽,提高加载速度和用户体验。那么,如何用Python来实现图像压缩呢?
在这里插入图片描述
平均一张图片的大小约23.4kb 总大小压缩到了1/10。明显减少服务器的空间和宽带压力。

使用PIL库 需要安装Pillow库 pip install Pillow
具体代码如下:

from PIL import Image
import os

def getfilenames(mulu):   #获取文件夹目录下的多个文件名
    filenames=[]
    for filename in os.listdir(mulu):
        filenames.append(filename)
    return filenames

def yasuo(tupian):     #图片压缩
    try:
        img=Image.open(tupian)
        print(img.size[1])=img.size[0]  #图片宽度=img.size[1]  #图片高度
        if>:      #判读图片竖图还是横图
            print("横图")
            newimg=img.convert("RGB")
            newimg = newimg.resize((400, 300))   #如果是横图就按4:3压缩 可自己按需设计大小
        else:
            print("竖图")
            newimg = img.convert("RGB")
            newimg = newimg.resize((300, 400))  #如果是竖图就按3:4压缩
        newimg.save(tupian)  #保存并覆盖原来的图片
    except IOError as e:
        print(e)
if "__main__" == __name__:
    mulv = r'D:\pycharm\pythonProject1\爬虫\2023-12-13'   #指定图片目录
    file_names = getfilenames(mulv)
    for filename1 in file_names:
        tupian = "D:/pycharm/pythonProject1/爬虫/2023-12-13/" + filename1  #构造图片地址
        yasuo(tupian)  #进行压缩
        print('压缩成功')

小知识:

如果要指定保存的格式,可以传入format参数,例如:

img.save("new.png", format="PNG")

如果要指定保存的质量,可以传入quality参数,取值范围是1-95,默认是75。质量越高,文件越大,压缩效果越差;质量越低,文件越小,压缩效果越好。例如:

img.save("new.jpg", quality=50)

size属性:返回一个元组,表示图像的宽度和高度(单位是像素),例如(800, 600)。
format属性:返回一个字符串,表示图像的格式,例如"JPEG"。
mode属性:返回一个字符串,表示图像的模式,例如"RGB"。

print(img.size) # (800, 600)
print(img.format) # JPEG
print(img.mode) # RGB

resize方法:接受一个元组作为参数,表示新的宽度和高度(单位是像素),返回一个新的Image对象,例如:

new_img = img.resize((400, 300))

convert方法:接受一个字符串作为参数,表示新的模式,返回一个新的Image对象,例如:

new_img = img.convert("L")

transpose方法:接受一个常量作为参数,表示旋转或翻转的方式,返回一个新的Image对象,例如:

#旋转90度
new_img = img.transpose(Image.ROTATE_90)

image = image.convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式
有九种不同模式:
1: 1位像素,黑白,每字节一个像素存储
L: 8位像素,黑白
P: 8位像素,使用调色板映射到任何其他模式
RGB: 3x8位像素,真彩色
RGBA: 4x8位像素,带透明度掩模的真彩色
CMYK: 4x8位像素,分色
YCbCr: 3x8位像素,彩色视频格式
I: 32位有符号整数像素
F: 32位浮点像素

博主使用的是image.convert(“RGB”) 图片体积小且有色彩

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS4.0从零开始的开发教程14Web组件的使用

HarmonyOS(十二)Web组件的使用 1 概述 相信大家都遇到过这样的场景,有时候我们点击应用的页面,会跳转到一个类似浏览器加载的页面,加载完成后,才显示这个页面的具体内容,这个加载和显示网页的…

​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer

​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer 这篇文章探讨了在Linux Ubuntu环境下安装和配置Docker及其相关工具的过程。首先介绍了Docker的基本概念,然后详细讲解了在Ubuntu系统上的安装步骤。随后,文章涵盖了Dock…

DevEco Studio 鸿蒙(HarmonyOS)项目结构

DevEco Studio 鸿蒙(HarmonyOS)项目结构 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、项目结构 创建简单的Hello World移动应用项目结构如下图 由上到下说明各个文件夹的作用 .hvigor:存…

【HarmonyOS】【DevEco Studio】安装教程及环境配置问题解决

目录 一、DevEco Studio 安装二、配置环境ohmp安装报错问题解决方法一:注册表删除数值(没解决)方法二:进入DevEco Studio点击Settings进入设置(没解决)方法三:自己去官网下载ohmp的包安装&#…

opencv,C++中cv下的函数都无法解释,并且报错为链接器工具错误 LNK2001

检查链接器中的附加依赖项目 opencv_word4.81.lib (release 版本) opencv_word4.81d.lib (debug 版本) 要和这里相对应,不然就会报连接器的错误。

德语 Alt 代码表

德语的 Alt 代码表,请参考下图。 输入方法就是按住 Alt 键不松开,然后在小键盘上输入字符,松开 Alt 键,计算机就能输出上面的字符了。 德语 Alt 代码表 - 系统容器 - iSharkFly德语的 Alt 代码表,请参考下图。 输入方…

13.Spring 整合 Kafka + 发送系统通知 + 显示系统通知

目录 1.Spring 整合 Kafka 2.发送系统通知 2.1 封装事件对象 2.2 开发事件的生产者和消费者 2.3 触发事件:在评论、点赞、关注后通知​编辑 3.显示系统通知 3.1 通知列表 3.1.1 数据访问层 3.1.2 业务层 3.1.3 表现层 3.2 开发通知详情 3.2.1 开发数据…

科技赋能医疗设备管理提质增效,实现医院高质量发展

近日,苏州阿基米德网络科技有限公司与医疗领域头部级媒体健康界,联合举办“数智为擎 提质增效——医学装备智慧管理创新发展论坛”的直播活动。 直播现场,来自上海交通大学医学院附属同仁医院、中华医学会航海医学分会、苏州阿基米德的专家们…

人工智能导论习题集(3)

第五章:不确定性推理 题1题2题3题4题5题6题7题8 题1 题2 题3 题4 题5 题6 题7 题8

大数据机器学习深度解读DBSCAN聚类算法:技术与实战全解析

大数据机器学习深度解读DBSCAN聚类算法:技术与实战全解析 一、简介 在机器学习的众多子领域中,聚类算法一直占据着不可忽视的地位。它们无需预先标注的数据,就能将数据集分组,组内元素相似度高,组间差异大。这种无监…

BSN实名DID服务发布会在北京召开

12月12日,由国家信息中心、公安部第一研究所联合主办,中国移动通信集团有限公司、区块链服务网络(BSN)发展联盟、中关村安信网络身份认证产业联盟(OIDAA)承办的“BSN实名DID服务发布会”在北京召开&#xf…

DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(二)

界面控件DevExpress WinForms的Pivot Grid组件是一个类似Excel的数据透视表控件,用于多维(OLAP)数据分析和跨选项卡报表。在上文中(点击这里回顾>>)我们介绍了DevExpress WinForms Pivot Grid组件的性能、分析服务、数据塑造能力等&…

【数据结构】哈希经典应用:布隆过滤器(哈希+位图)——[深度解析](9)

前言 大家好吖,欢迎来到 YY 滴 数据结构 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴 数据结构 专栏!更多干货持续更新!以下是传送门! 目录 一.布隆过滤器产生的…

修改Element UI可清空Input的样式

如图所示&#xff0c;修改Input右侧的清空按钮位置&#xff1a; <el-input class"create-catalog-ipt"placeholder"请输入相关章节标题"v-model"currentCatalogTitle"clearable /> // SCSS环境 ::v-deep {.create-catalog-ipt {input {he…

华为云之轻松搭建 Nginx 静态网站

华为云之轻松搭建 Nginx 静态网站 一、本次实践介绍1. 本次实践目的2. 本次实践环境 二、ECS弹性云服务器介绍三、准备实践环境1. 预置环境2. 查看ECS服务器的账号密码信息3. 登录华为云4. 远程登录ECS服务器 四、安装配置 Nginx1. 安装nginx2. 启动nginx3. 浏览器中访问nginx服…

【ARM Trace32(劳特巴赫) 使用介绍 14 -- Go.direct 介绍】

请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 Go.directGo配合程序断点使用Go 配合读写断点使用Go 快速回到上一层函数 System.Mode Go Trace32 Go.direct TRACE32调试过程中&#xff0c;会经常对芯片/内核进行控制&#xff0c;比如全速运行、暂停、单步等等。这篇文章先…

CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站

WordPress是使用PHP语言开发的博客平台&#xff0c;在支持PHP和MySQL数据库的服务器上&#xff0c;您可以用WordPress架设自己的网站&#xff0c;也可以用作内容管理系统&#xff08;CMS&#xff09;。本教程介绍如何在CentOS 7.x操作系统的ECS实例上搭建WordPress网站。 背景…

服务器漏洞防护措施有哪些?

随着互联网的普及和发展&#xff0c;服务器在各个领域的应用越来越广泛&#xff0c;同时也面临着越来越多的安全威胁。服务器漏洞一旦被攻击者利用&#xff0c;不仅可能导致数据泄露、系统崩溃等严重后果&#xff0c;还可能影响到企业的正常运营和声誉。因此&#xff0c;加强服…

山海鲸可视化软件:选择合适的图表,让数据可视化更高效

作为一名山海鲸可视化软件的开发者&#xff0c;我深知选择合适的图表对于数据可视化的重要性。下面我将从开发者的角度&#xff0c;分享一些关于如何选择合适可视图表的建议。 首先&#xff0c;我们需要明确数据可视化的目标。不同的图表类型具有不同的特点和适用场景&#xff…

中海达亮相能源北斗与时空智能创新技术应用大会

12月7日-8日&#xff0c;2023年能源北斗与时空智能创新技术应用大会暨鹭岛论坛在厦门举办。本次活动以“能源北斗时空智能”为主题&#xff0c;由中关村智能电力产业技术联盟、中国能源研究会、中国卫星导航定位协会、中国电力科学研究院有限公司、国网信息通信产业集团有限公司…