tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口。下面简单说下python批量压缩步骤。

1.申请api key

https://tinypng.com/developers申请自己的key,每个key每个月500次

2.使用pip进行安装:pip install --upgrade tinify

3.导入tinify模块,设置key

import tinify
tinify.key = "API_KEY" # 此处填入你自己申请的API key

4.上传文件: 
文件上传的形式共有三种:本地文件、二进制、URL。 
上传文件后,服务器会自动识别文件类型,根据类型自动调用TinyPNG或TinyJPG的压缩引擎。调用to_file函数就可以将压缩优化过后的图片保存至本地。

示例代码:

def ShrinkStudioDisperseRes(_destDirName):
#log
print("---call ShrinkStudioDisperseRes") global G_TinifyKey curCwd=os.getcwd()
#srcRootDirStr = "%s/../../studioPrj/sanGuoPrjDev/cocosstudio/res/com" % (curCwd)
srcRootDirStr = "%s/../../SanGuoDev/Resources/studioRes/plist" % (curCwd)
destRootDirStr = "%s/%s/exptImg/allplist" % (curCwd,_destDirName)
fileCount=0
tinify.key =G_TinifyKey[4] #创建输出目录
if(os.path.isdir(destRootDirStr)):
shutil.rmtree(destRootDirStr)
os.makedirs(destRootDirStr) for root, dirs, files in os.walk(srcRootDirStr):
curCount=len(files)
if(curCount>0):
print("---compressDir=%s fileCount=%s" %(root,fileCount)) #目的目录
newToPath = destRootDirStr
if len(root) > len(srcRootDirStr):
innerPath= root[len(srcRootDirStr):]
if innerPath[0] == '\\':
innerPath = innerPath[1:]
newToPath = os.path.join(destRootDirStr,innerPath)
#print("---newToPath=%s" %(newToPath)) #创建目的目录
for dirName in dirs:
if os.path.exists(os.path.join(newToPath, dirName)):
pass
else:
os.mkdir(os.path.join(newToPath, dirName)) #遍历压缩文件
for name in files:
newFromFilePath = os.path.join(root, name)
newToFilePath = os.path.join(newToPath, name)
fileName,fileSuffix = os.path.splitext(name)
if fileSuffix == '.png' or fileSuffix == '.jpg':
fileCount=fileCount+1
print("---compressing newFromFilePath=%s" %(newFromFilePath))
source = tinify.from_file(newFromFilePath)
source.to_file(newToFilePath) print("----------compress ok! fileCount=%s"%(fileCount))

  可以通过tinify.compression_count查看当月的API调用次数。

tinypng的python批量压缩图片功能的更多相关文章

  1. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...

  2. 使用Python轻松批量压缩图片

    在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...

  3. Python批量修改图片格式和尺寸

    Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入 ...

  4. Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】

    本文实例讲述了Java实现的上传并压缩图片功能.分享给大家供大家参考,具体如下: 先看效果: 原图:1.33M 处理后:27.4kb 关键代码: package codeGenerate.util; ...

  5. Python 批量修改图片格式和尺寸

    公司的一个项目要求把所有4096x4096的图片全部转化成2048x2048的图片,这种批量转换图片大小的软件网上很多,我的同事原来使用的美图看看的批量转换,但是稍微有点麻烦,每次还需要指定要转换的图 ...

  6. C# Winform版批量压缩图片程序

    需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少, ...

  7. python批量裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Imageimport matplotlib.pyplot as ...

  8. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...

  9. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

随机推荐

  1. Visual studio之C#跨线程调用UI控件

    背景 当前串口通讯项目,多个线程需要同时利用richTextBoxMsg控件打印信息,直接调用会造成线程不安全,严重的时候会直接导致UI线程挂掉,因此本篇就跨线程调用UI控件做个记录. 正文 定义控件 ...

  2. Android 6.0 超级简单的权限申请2 (Permission)

    代码地址如下:http://www.demodashi.com/demo/13506.html 写在前面 上次写了一个权限申请的例子Android 6.0 超级简单的权限申请 (Permission) ...

  3. iOS-格式化金额,三位一逗号

    代码地址如下:http://www.demodashi.com/demo/11244.html 项目版本更新迭代中, 新增需求: 所有金额必须用标准会计表示方式(¥94,862.57). 而之前金额展 ...

  4. IT痴汉的工作现状36-做好准备再上路

    软件开发流程管理是採用瀑布式好还是敏捷好? 如今非常多人会选择敏捷.由于眼下的现状是需求的变化是一天一个样,这是当前(移动)互联网的飞速发展所带来的.当我们仍採用原始的先做全盘的计划.然后在按部就班的 ...

  5. Nuget使用规范

  6. ASP.NET绑定CHECKBOXLIST--------JQUERY绑定CLICK事件,获取CHECKBOX的VALUE和显示值

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...

  7. Android studio 使用心得(四)—android studio 多渠道打包(二)

    Android studio 使用心得(四)—android studio 多渠道打包 这篇文章讲了一种打包方式.是直接在android studio 里面可视化操作,结合配置文件.我个人觉得严格上来 ...

  8. html5-表单常见操作

    <form  autocompelate="on" id="from1"><!--常用属性-->邮件:<input type=&q ...

  9. POJ--3529--Wormholes

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36889   Accepted: 13520 Descr ...

  10. 转:SNMP 原理及配置简述

    SNMP 原理及配置简述 转载 2016年01月13日 16:18:51 随着机器数量的增长,管理员不能像过去那样,一台台机器进行监控.解决问题,而需要借助各方工具进行统一监控和管理.利用SNMP,一 ...