在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的。如果一个网站图片较多,一张张压缩显然很浪费时间。那么接下来,我就跟大家分享一个批量压缩图片的方法,只需几行python代码,即可轻松实现图片压缩。

压缩算法

用到PIL库,PIL是Python平台事实上的图像处理标准库,支持多种格式,并提供强大的图形与图像处理功能。使用如下命令安装:

pip install pillow

代码如下:

#图片压缩批处理

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)

# 如果是文件就处理

if os.path.isfile(srcFile):

try:

#打开原图片缩小后保存,可以用if srcFile.endswith(".jpg")或者split,splitext等函数等针对特定文件压缩

sImg=Image.open(srcFile)

w,h=sImg.size

dImg=sImg.resize((int(w/2),int(h/2)),Image.ANTIALIAS) #设置压缩尺寸和选项,注意尺寸要用括号

dImg.save(dstFile) #也可以用srcFile原路径保存,或者更改后缀保存,save这个函数后面可以加压缩编码选项JPEG之类的

print (dstFile+" 成功!")

except Exception:

print(dstFile+"失败!")

# 如果是文件夹就递归

if os.path.isdir(srcFile):

compressImage(srcFile, dstFile)

方法调用

1.在该python文件所在目录新建三个目录,prepare(存放待压缩图片)、finish(压缩完成的原图)和compress(存放压缩后的图片)

2.遍历prepare目录,将图片移动到finish目录

3.遍历compress目录删除压缩图片

4.将finish中的图片全部进行压缩,对应存到compress目录

if __name__ == '__main__':

# 遍历待加入图片

path = os.walk("./prepare")

for root, dirs, files in path:

for f in files:

shutil.move(os.path.join(root,f),os.path.join('./finish',f)) #移动文件

# 遍历删除压缩图片

path = os.walk("./compress")

for root, dirs, files in path:

for f in files:

os.remove(os.path.join(root, f))

# 压缩图片

compressImage("./finish","./compress")

完整代码

新建photo.py,复制如下代码

from PIL import Image

import os,shutil

#图片压缩批处理

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)

# 如果是文件就处理

if os.path.isfile(srcFile):

try:

#打开原图片缩小后保存,可以用if srcFile.endswith(".jpg")或者split,splitext等函数等针对特定文件压缩

sImg=Image.open(srcFile)

w,h=sImg.size

dImg=sImg.resize((int(w/2),int(h/2)),Image.ANTIALIAS) #设置压缩尺寸和选项,注意尺寸要用括号

dImg.save(dstFile) #也可以用srcFile原路径保存,或者更改后缀保存,save这个函数后面可以加压缩编码选项JPEG之类的

print (dstFile+" 成功!")

except Exception:

print(dstFile+"失败!")

# 如果是文件夹就递归

if os.path.isdir(srcFile):

compressImage(srcFile, dstFile)

if __name__ == '__main__':

# 遍历待加入图片

path = os.walk("./prepare")

for root, dirs, files in path:

for f in files:

shutil.move(os.path.join(root,f),os.path.join('./finish',f)) #移动文件

# 遍历删除压缩图片

path = os.walk("./compress")

for root, dirs, files in path:

for f in files:

os.remove(os.path.join(root, f))

# 遍历压缩图片

compressImage("./finish","./compress")

最后,大家只要把要压缩的图片放入prepare目录,然后执行photo.py即可。

python怎么把图片压缩_使用Python轻松批量压缩图片相关推荐

  1. indesign选中不了图片删除_(54)批量给图片加上说明文字

    在<(32)一次置入多张图片>一文中我介绍了如何在 InDesign 中批量插入图片的方法,那么如何批量给这些图片加上说明文字呢?本文就谈谈这个问题. 给图片添加的说明文字在 InDesi ...

  2. 如何批量压缩图片?这两种方法轻松批量压缩

    怎么批量压缩图片呢?图片是我们日常生活中常用的一种文件形式,不管是游玩还是学习或办公,或多或少都会使用到图片.但是随着智能手机的相机功能越来越强大,像素越来越高,所拍摄出来的照片内存非常大,当使用的图 ...

  3. 多张图片怎么压缩?教你一键批量压缩图片

    想必大家看了许多压缩图片的教程,对于单张图片的压缩已经不陌生了.那么大家一定会问了:"我手里有很多图片要是一张一张的压缩岂不是很费事,有没有什么软件可以多张图片同时进行压缩呢?"别 ...

  4. python图片压缩算法_使用K均值算法进行图片压缩

    K均值算法 上一期介绍了机器学习中的监督式学习,并用了离散回归与神经网络模型算法来解决手写数字的识别问题.今天我们介绍一种机器学习中的非监督式学习算法--K均值算法. 所谓非监督式学习,是一种与监督式 ...

  5. python根据文件名打标签_使用python将图片按标签分入不同文件夹的方法

    给定图像集如下,所有类别的图片均在一个文件夹内: 给定与图片名相匹配的表格,声明每张图片对应的类别(共有20个类别): 那么,如何根据表格中所给的类别将图片分入对应的文件夹内呢?以我的情况为例,我想将 ...

  6. img绝对路径图片显示_使用python爬虫去风景图片网站批量下载图片

    使用python爬虫(requests,BeautifulSoup)去风景图片网站批量下载图片 1.写代码背景: 今天闲来无事,想弄点图片放到电脑,方便以后使用,故去百度查找一些风景图片网站,发现图片 ...

  7. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  8. python改图片颜色_通过python改变图片特定区域的颜色详解

    首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的数学库,里面一定有和他名字相关的一堆函数. ...

  9. python保存图像的色彩_使用python检测图片上的色彩

    使用python检测图片上的色彩 面对一张色彩绚丽的图片,你很像知道某一块的颜色是什么,这包括色彩的名字和这一点上色彩的RGB值,但在缺少专业工具的情况下,这似乎是一个难以完成的任务,但python可 ...

最新文章

  1. Python 之 Pandas (八)图像
  2. 三角测距激光重建算子HALCON
  3. macos可以升级到指定版本吗_iOS13系统终结版本即将出现,iOS13.5还值得升级吗
  4. vue/cli 3.0 与 2.0脚手架怎样mock数据
  5. 《银翼杀手2049》:活着不只为了“存在”
  6. 运行第一个docker容器
  7. 重建程序员能力(2)-如何使asp.net mvc应用增加js和其他功能
  8. c#:winform中多线程的使用
  9. mysql 语句 not_mysql sql语句 is not 用法是
  10. html img返回上级目录,HTML相对路径 上级目录及下级目录的写法_HTML/Xhtml_网页制作...
  11. free, iostat, Linux, top, uptime, vmstat
  12. 剑指Offer+第37题+两个链表的第一个公共节点+java
  13. 用python实现等额本息
  14. STEP标准执行方法-ISO-10303-21
  15. asp.net在线考试系统实习报告
  16. Joseph Darcy卸任OpenJDK 6负责人
  17. 【Java 代码实例 13】Java操作pdf的工具类itext
  18. 文件上传漏洞—一句话图片马制作
  19. 2022PTA天梯赛-全国总决赛试题(个人python解题记录)(更新中)
  20. 关于Julia1.0及以后版本的for循环产生错误ERROR: UndefVarError: variable not defined的解决方法

热门文章

  1. Matlab中自定义函数(一)
  2. 管与c++中容量的重新分配问题
  3. 504. Base 7
  4. 并发队列-无界非阻塞队列 ConcurrentLinkedQueue 原理探究
  5. 11月27号例会记录
  6. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)
  7. 必须要调整心态,积极起来,不能再偷懒
  8. OpenCV下的角点获取
  9. UA OPTI570 量子力学32 参考系与绘景
  10. UA MATH566 统计理论 证明UMVUE的方法