利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)


Posted in Python onJuly 30, 2017

前言

本文主要给大家介绍的关于Python批量压缩png的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

1.需求

为什么会有这个需求?是因为游戏的资源大多是png图片,需要压缩,但是有些图片和文件夹里的图片,美术不想压缩,比如一些带透明度的光圈或者游戏的主要元素。所以要过滤下。发现python这个语言比较适合用在这个场景。所以写了点python.

2.源码

import os,sys
import os.path
rootdir=sys.path[0]
 
#需要过滤的文件
notActionFile = ["choose_bg1.png"]
#需要过滤的文件夹
notActionPath = ["test"]
 
#需要删除的文件
needDeleteFile = ["s2.png"]
 
def file_extension(path): 
 return os.path.splitext(path)[1] 
 
for parent,dirnames,filenames in os.walk(rootdir):
 for filename in filenames:
  fullPath = os.path.join(parent,filename)
  #删除文件
  for deleteFile in needDeleteFile:
   if filename == deleteFile:  
    os.remove(fullPath)    
  isFilter = False
  #过滤文件压缩
  for noActionName in notActionFile: 
   if noActionName == filename:
    isFilter = True
  #过滤文件夹压缩    
  for onePath in notActionPath:
   lastPath = fullPath.split('\\')[-2]
   if lastPath == onePath:
    isFilter = True      
  if file_extension(fullPath) == ".png" and isFilter == False:
   #print "action"  
   os.system("pngquant -f --ext .png --quality 50-80 \"" + fullPath + "\"")
   print fullPath

用的是pngquant来压缩。

完整项目下载地址:http://xiazai.3water.com/201707/yuanma/compressImage(3water.com).rar

使用方法,就是复制这2个文件到需要压缩的文件夹下面,然后执行python main.py

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持

Python 相关文章推荐
python 合并文件的具体实例
Aug 08 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python中正则表达式详解
May 17 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
python实现图片文件批量重命名
Mar 23 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
浅谈Python项目的服务器部署
Apr 25 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 #Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 #Python
Python 装饰器使用详解
Jul 29 #Python
python实现数据图表
Jul 29 #Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 #Python
使用Kivy将python程序打包为apk文件
Jul 29 #Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 #Python
You might like
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php Session存储到Redis的方法
2013/11/04 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
使用composer 安装 laravel框架的方法图文详解
2019/08/02 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python编程argparse入门浅析
2018/02/07 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
就业协议书的作用
2014/04/11 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server