第一步,前往tinypng官网或组自己的key值。

第二步,配置uncompressResPath、compressedResPath、largeRes路径。

第三步,拷贝以下代码执行后就能得到压缩后的图片。

tinypng的压缩效果非常好,但是免费用户每个月最多只能上传压缩500张图片,想要压缩更多的图片可以赞助一下tinypng,或者注册多个账号。

tinypng压缩效果的确非常好,虽然是有损压缩,但是压缩质量很高,在不进行大幅度缩放的情况下肉眼基本上看不出来跟原图的差异,压缩比基本上在60%以上(个人使用总结)。

压缩速度会受到网速的影响,所以有时可能会很久才压缩完一张。

tinypng官网上还支持拖拽图片上传压缩的方式,有一些限制,具体可以查看官网。

#coding=utf-8
import tinify
import os
import shutil
tinify.key = "填写自己的key值"
# tinify.proxy = "http://user:pass@192.168.0.1:8080"
#未压缩图片路径
uncompressResPath = "未压缩图片的图片根路径";
#压缩的图片存放路径
compressedResPath = "压缩完成的图片存放路径";
#用于存放检索出的符合条件的大图
largeRes =  "存放检索出的符合条件的大图";

#每个月能够使用的最大压缩数量

maxMonthCompressCount = 500;
compressions_this_month = 0;
BITAXSIZE = 1024.0
KBMAXSIZE = BITAXSIZE * 1024.0
MBMAXSIZE = KBMAXSIZE * 1024.0
GBMAXSIZE = MBMAXSIZE * 1024.0
TBMAXSIZE = GBMAXSIZE * 1024.0
totalSize = 0;
#压缩单张资源
def compressSimpleRes(resAbsolutePath,fileName):
    global compressions_this_month;
    print("start compress res");
    print("original Res Size:" + size_format(os.path.getsize(resAbsolutePath)));
    source = tinify.from_file(resAbsolutePath);
    print("upload Res success");
    source.to_file(compressedResPath +fileName);
    compressions_this_month = tinify.compression_count;
    print("left Compress Times:" + "%i"%(maxMonthCompressCount - compressions_this_month));
    print("compress res success");
    print("compressed Res Size:" + size_format(os.path.getsize(compressedResPath +fileName)))
#压缩根目录下指定数量的png资源
def compressAllPng(path):
    allFile = os.listdir(path);
    for eachFile in allFile:
        if os.path.isdir(path + os.sep + eachFile):
            compressAllPng(path + os.sep + eachFile);
        else:
            if(".png" in eachFile):
                if(compressions_this_month >= maxMonthCompressCount):
                    return
                print("res Name:" + eachFile);
                compressSimpleRes(path + os.sep + eachFile,eachFile);
#获得文件大小
def size_format(size):
    if size < BITAXSIZE:
        return '%i' % size + 'size'
    elif BITAXSIZE <= size < KBMAXSIZE:
        return '%.2f' % round(size/BITAXSIZE,2)+'KB'
    elif KBMAXSIZE <= size < MBMAXSIZE:
        return '%.2f' % round(size/KBMAXSIZE,2)+'MB'
    elif MBMAXSIZE <= size < GBMAXSIZE:
        return '%.2f' % round(size/MBMAXSIZE,2)+'GB'
    elif GBMAXSIZE <= size:
        return '%.2f' % round(size/GBMAXSIZE,2)+'TB'
#拷贝文件到目标目录
def copyToDest(filePath):
    shutil.copy(filePath,largeRes + os.sep);
#收集根目录下大于指定大小的png资源
def collectLargeSizeRes(path):
    global totalSize;
    allFile = os.listdir(path);
    for eachFile in allFile:
        fileAbsolutePath = path + os.sep + eachFile;
        if os.path.isdir(fileAbsolutePath):
            collectLargeSizeRes(fileAbsolutePath);
        else:
            if(".png" in eachFile):
                fileSize = os.path.getsize(fileAbsolutePath);

#如果文件大于1M则将此文件copy到largeRes文件夹
                if(fileSize >= KBMAXSIZE):
                    totalSize = totalSize + fileSize;
                    print("total size:" + size_format(totalSize));
                    copyToDest(fileAbsolutePath);
collectLargeSizeRes(uncompressResPath);
compressAllPng(largeRes);
# print(compressions_this_month);

python版使用tinypng压缩图片大小相关推荐

  1. 【数字图像处理】Python使用PIL库压缩图片大小——按比例压缩

    方法 网上的都是按照固定的图像大小来进行压缩,本文给出按照比例来压缩的方法--智能压缩: from PIL import Imageinfile = 'cxq1.jpg' outfile = 'cxq ...

  2. 【Python黑科技】图片太大不能上传?三种压缩图片大小的方法(代码注释详细)

    目录 实现效果 原图大小8.46MB PIL库quality降低图片质量方式压缩图片366KB PIL库thumbnail压缩图片大小来压缩图片985KB OpenCV缩放图片大小来压缩图片 177K ...

  3. 压缩图片_Word快速压缩图片大小

    (每周一.三.五更新) 有朋友发消息说,TA的一份Word文档中,由于插入了很多图片,所以文件大小变得很大,无法上传到网上的工作平台上.询问快速解决的办法.其实在Word里,有专门调整图片大小的工具, ...

  4. 图片太大,怎么压缩图片大小?

    图片太大,怎么压缩图片大小?我们知道图片被应用到生活的方方面面,所以我们经常会遇到因图片体积大半天打不开,或者是因为图片大好传送不过去.再或者因为图片太多内存不够等等情况,总之可能会带来很多我们预想不 ...

  5. 如何免费压缩图片-批量免费压缩图片大小的软件

    如何免费压缩图片,今天给大家分享一款免费压缩图片的软件,支持任意格式的照片压缩,不仅可以压缩照片还可以放大图片,支持批量照片自动水印.批量关键词采集全网图片,导入链接批量下载图片,整站图片下载导出.详 ...

  6. 如何降低图片kb大小?教你两个快速压缩图片大小的方法!

    我们在日常拍照过程中可能不注意照片kb大小,但当需要发送照片时,会发现照片太大不方便传送.或者当你需要上传到一些需要照片大小的场景时,找到照片kb太大了,上传不了,需要降低照片kb大小,这时候就要进行 ...

  7. 如何将图片调整为固定大小?怎么自定义压缩图片大小?

    很多平台对用户发布的图片大小是有规定的.如果我们发布的图片太大的话,就需要对图片进行压缩处理了.想要缩小图片kb可以使用压缩图的图片压缩指定大小(图片压缩到指定大小 图片压缩大小至指定kb以下-压缩图 ...

  8. 如何压缩图片大小但不失真

    如何压缩图片大小但不失真 web开发中经常会遇到显示图片延迟的情况. 造成这种现象是因为图片太大导致的. 解决方法:通过ps6压缩图片 操作步骤如图:

  9. 电脑怎么压缩图片大小,4个通用方法分享

    电脑怎么压缩图片大小?我相信这个问题很多小伙伴都遇到过的.我们压缩图片大小的主要原因是为了优化网站.应用程序或移动设备的性能.大尺寸的图片文件需要更多的存储空间和带宽,这将导致网页加载速度变慢,浪费用 ...

  10. 如何快速在线压缩图片大小(包括放大、缩小图片,指定图片尺寸和压缩图片品质)

    在日常的学习和工作中,我们经常会遇到压缩和修改图片大小的问题,如果我们不是专业的设计人员,一般电脑上不会安装ps软件,那么我们如何通过网页,在线快速简单的来完成操作呢?下面小编和大家一块分享下具体如何 ...

最新文章

  1. Ubuntu版-virtualbox安装笔记
  2. QQ卡机问题解决方法
  3. 最大的连续子段和的O(n)解法
  4. 第4章 旋转蛇(《C和C++游戏趣味编程》配套教学视频)
  5. hdu 5306 Gorgeous Sequence(区间最值更新+求和)
  6. 并发编程游玩---ExecutorService的isShutdown()和isTerminated(),以及一些方法的区别
  7. 修复 海盗船 k70 lux 未检测到设备(k70 no device detected)
  8. linux系统源码文档,Linux操作系统源代码详细分析
  9. 百度地图坐标转换及跨域
  10. 亲自动手搭建微服务框架和测试环境-1-背景
  11. Kali安装谷歌拼音
  12. java cookie设置注意事项
  13. CSS Font-awesome字体图标库文件
  14. 感受一下大佬的气场: 背包九讲的作者: 崔添翼
  15. VRP基础(华为设备操作系统)
  16. 微服务网关API Geteway
  17. .net mvc core网站发布的几种方式
  18. 支持向量机SMO算法
  19. oracle11g闪回默认路径,ORACLE11G开启数据库闪回
  20. 你是否清楚,什么是真正的八拜之交?

热门文章

  1. foobar2000 – ELPlaylist
  2. 【Wifi密码破解】安卓手机、电脑如何破解Wifi密码
  3. 免费织梦CMS文章采集器之采集聚合
  4. Android源码下载
  5. EvoSuite生成单元测试用例
  6. 未来计算机作文想象,想象未来作文450字
  7. 小知识·OTG工作原理
  8. 神奇的数字之回文数c语言,奇妙的数字
  9. 蓝桥杯2015年第六届C/C++省赛A组第三题-奇妙的数字
  10. java 唯一随机数_JAVA随机数