温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python批量压缩图片的脚本代码分享

发布时间:2021-06-02 09:30:36 来源:亿速云 阅读:558 作者:栢白 栏目:开发技术

本篇文章和大家了解一下python批量压缩图片的脚本代码分享。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

简介

用Python批量压缩图片,把文件夹或图片直接拖入即可

需要 Needs

Python 3

Pillow (用pip install pillow来安装即可)

用法 Usage

把文件夹或图片直接拖入即可。如果拖入的是文件夹,则会遍历子文件夹把所有图片都压缩了。

注意,压缩后的文件会直接替换原来的文件,文件名不变,尺寸不变,只改变压缩质量。

文件的开头有两个变量:

SIZE_CUT = 4 表示大于4MB的图片都会进行压缩

QUALITY = 90 表示压缩质量90,这个质量基本人眼是看不出来啥差距的,而且很多原先10M的图能压缩一半。80以下的质量大概就不太行了。

代码

#!/usr/bin/python3 # -*- coding: UTF-8 -*- # Created by Mario Chen, 01.04.2021, Shenzhen # My Github site: https://github.com/Mario-Hero import sys import os from PIL import Image SIZE_CUT = 4   # picture over this size should be compressed. Units: MB QUALITY = 90  # 90 is good, this number should not be smaller than 80. def isPic(name):     namelower = name.lower()     return namelower.endswith("jpeg") or namelower.endswith("jpg") or namelower.endswith("png") def compressImg(file):     #print("The size of", file, "is: ", os.path.getsize(file))     im = Image.open(file)     im.save(file, quality=QUALITY) def compress(folder):     try:         if os.path.isdir(folder):             print(folder)             file_list = os.listdir(folder)             for file in file_list:                 if os.path.isdir(folder+"/"+file):                     #print(folder +"/"+ file)                     compress(folder +"/"+file)                 else:                     if isPic(file):                         if os.path.getsize(folder + "/" + file) > (SIZE_CUT * 1024 * 1024):                             compressImg(folder + "/" + file)                             print(file)         else:             if isPic(folder):                 if os.path.getsize(folder) > (SIZE_CUT * 1024 * 1024):                     compressImg(folder)     except BaseException:         return if __name__ == '__main__':     for folder in sys.argv:         #print(folder)         compress(folder)     print("Finish.")     #os.system("pause")

实现效果

python批量压缩图片的脚本代码分享

压缩后大小

python批量压缩图片的脚本代码分享

另外一种图片压缩实现方式

同样自动遍历目录下的图片

import os from PIL import Image import threading,time def imgToProgressive(path):     if not path.split('.')[-1:][0] in ['png','jpg','jpeg']:  #if path isn't a image file,return         return     if os.path.isdir(path):         return ##########transform img to progressive     img = Image.open(path)     destination = path.split('.')[:-1][0]+'_destination.'+path.split('.')[-1:][0]     try:         print(path.split('\\')[-1:][0],'开始转换图片')         img.save(destination, "JPEG", quality=80, optimize=True, progressive=True) #转换就是直接另存为         print(path.split('\\')[-1:][0],'转换完毕')     except IOError:         PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]         img.save(destination, "JPEG", quality=80, 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

以上就是python批量压缩图片的脚本代码分享的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注亿速云行业资讯频道哦!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI