Python tinypng 压缩脚本
# -*- coding: utf-8 -*-"""脚本功能说明:使用 tinypng,一键批量压缩指定文件(夹)所有文件"""import os
import sys
import tinifytinify.key = "你自己申请的 key" # AppKeydef get_file_dir(file):"""获取文件目录通用函数"""fullpath = os.path.abspath(os.path.realpath(file))return os.path.dirname(fullpath)def check_suffix(file_path):"""检查指定文件的后缀是否符合要求"""file_path_lower = file_path.lower()return (file_path_lower.endswith('.png')or file_path_lower.endswith('.jpg')or file_path_lower.endswith('.jpeg'))def compress_by_tinypng(input_file):"""使用 tinypng 进行压缩,中文前面的 u 是为了兼容 py2.7"""if not check_suffix(input_file):print(u'只支持png\\jpg\\jepg格式文件:' + input_file)returnfile_name = os.path.basename(input_file)output_path = os.path.join(get_file_dir(sys.argv[0]), 'tinypng')output_file = os.path.join(output_path, file_name)print(output_file)if not os.path.isdir(output_path):os.makedirs(output_path)try:source = tinify.from_file(input_file)source.to_file(output_file)print(u'文件压缩成功:' + input_file)old_size = os.path.getsize(input_file)print(u'压缩前文件大小:%d 字节' % old_size)new_size = os.path.getsize(output_file)print(u'文件保存地址:%s' % output_file)print(u'压缩后文件大小:%d 字节' % new_size)print(u'压缩比: %d%%' % ((old_size - new_size) * 100 / old_size))except tinify.errors.AccountError:print(u'Key 使用量已超,请更新 Key,并使用命令[Usage] %s [filepath] [key]运行'% os.path.basename(sys.argv[0]))def check_path(input_path):"""如果输入的是文件则直接压缩,如果是文件夹则先遍历"""if os.path.isfile(input_path):compress_by_tinypng(input_path)elif os.path.isdir(input_path):dirlist = os.walk(input_path)for root, dirs, files in dirlist:for filename in files:compress_by_tinypng(os.path.join(root, filename))else:print(u'目标文件(夹)不存在,请确认后重试。')if __name__ == '__main__':len_param = len(sys.argv)if len_param != 2 and len_param != 3:print('[Usage] %s [filepath]' % os.path.basename(sys.argv[0]))elif len_param == 3:tinify.key = sys.argv[2]check_path(sys.argv[1])else:check_path(sys.argv[1])
安装 tinify 模块
python -m pip install tinify
申请 tinify key
到 https://tinypng.com/developers 申请自己的 key,每个 key 每个月可以压缩 500 个文件。
执行脚本
带参数执行脚本即可。
带的第一个参数是必选的,可以是文件,也可以是文件夹。
第二个参数是可选的,自定义 key,如果输入了第三个参数,则优先使用自定义 key。
压缩后的文件,默认输出到当前脚本所在目录下的 tinypng 文件夹中,如果要输出到其他位置,可以自行修改脚本实现
Python tinypng 压缩脚本相关推荐
- php 批量压缩png,利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)...
前言 本文主要给大家介绍的关于Python批量压缩png的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 1.需求 为什么会有这个需求?是因为游戏的资源大多是png图片,需要 ...
- 使用Python快速压缩目录中图片
使用Python快速压缩目录中图片 脚本语言 #coding:utf-8 import Image import os import logging import sqlite3 from PIL i ...
- 使用Python批量压缩图片
使用Python批量压缩图片 Python脚本 #coding:utf-8 import Image import os import os.path def picIsCorrect(fileSuf ...
- python gzip压缩_Python gzip –压缩解压缩
python gzip压缩 Python gzip module provides a very simple way to compress and decompress files and wor ...
- python selenium脚本_怎样开始写第一个基于python的selenium脚本
1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...
- python读写压缩文件使用gzip和bz2
python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...
- Linux oracle数据库自动备份自动压缩脚本代码
Linux oracle数据库自动备份自动压缩脚本代码 Linux oracle数据库备份完成后可以自动压缩脚本代码. 复制代码代码如下: #!/bin/bash #backup.sh #edit: ...
- python自动化办公脚本下载-python自动化脚本
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_stat ...
- 脚本编程语言python语言-python语言是脚本语言吗
Python是一种编程语言还是脚本语言? Python是GuidoVanRossum开发的最著名的编程语言之一.Python在开发人员中很受欢迎,因为它具有清晰的语法和简单的代码,甚至对于初学者来说也 ...
- python打开指定文件-python打包压缩、读取指定目录下的指定类型文件
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...
最新文章
- AttributeError: ‘Tensor‘ object has no attribute ‘encoder‘
- HDU2682(最小生成树)
- 14.相同的树另一棵树的子树检查子树二叉树中的列表(教你们使用相同的套路快速解决这四道题)
- 如何绘制计算机软件程序流程图?
- 2019年用于自动化的5个最佳Java测试框架
- mybatis-plus实现自动填充数据如:数据库中createTime和updateTime
- 机器学习与计算机视觉(绘图)
- Windows Debugging之六
- Node.js丶Stream使用及常用方法
- 深入理解 Javascript 面向对象编程
- 生活广场远程预付费电能管理系统的设计与应用
- Python selenium长截屏
- esp8266_deauther第四篇
- IPSec:IKEv2协议详解
- CodeForces - 1144C Two Shuffled Sequences【优先队列】
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【八】【完善整个项目】
- 网页 插件 html,HTML 插件
- Chrome浏览器突然无法打开的解决方法
- 【Java学习笔记】1:Java语言基础
- 出国留学,转计算机编程学习入门以及面试经验之一家之言