利用TinyPNG的API批量压缩项目图片资源

原创文章转载请注明出处

TinyPNG---一个压缩PNG/JPG的神站

Paste_Image.png

选择你要压缩的PNG图片或者直接将你要压缩的图片拖拽到网页中间的大框框内。压缩完成,点击download下载即可。

利用TinyPNG的API批量压缩项目图片资源_第1张图片
Paste_Image.png

但是网页上单次批量压缩的上限是20张,而且每张都要单独点击下载不能批量下载,非常麻烦。

但是,TinyPNG提供了一些API方便程序员偷懒。能坐着就不站着,能躺着就不坐着,不偷懒的程序员不是好程序员。

利用TinyPNG的API批量压缩项目图片资源_第2张图片
Paste_Image.png

要使用这些API必须先进行注册,获取api key,每个key每个月可以处理500张图片,到目前为止我还没有哪个App工程中有超过500张的图片,单次使用足够了。如果不够就再申请一个账号,是吧:)

我的工程中大量的脚本都是用Python书写,所以用pip下载了tinify包。下面给出脚本源码(Python 3版本):

#! /usr/bin/python
# -*- coding: utf-8 -*-

__author__ = 'chenjunsheng'

import os
import os.path
import tinify

tinify.key = "your key"

def compress(path):

    for dir_path, dir_names, file_names in os.walk(path):
        file_names = filter(lambda file_name: file_name[-4:] == '.png', file_names)
        file_names = map(lambda file_name: os.path.join(dir_path, file_name), file_names)
        for file in file_names:
            print file
            source = tinify.from_file(file)
            source.to_file(file)

        file_names = filter(lambda file_name: file_name[-4:] == '.jpg', file_names)
        file_names = map(lambda file_name: os.path.join(dir_path, file_name), file_names)
        for file in file_names:
            print file
            source = tinify.from_file(file)
            source.to_file(file)

if __name__ == '__main__':
    # try:
    #     filenames = get_all_file_in(os.getcwd())
    #     for filename in filenames:
    #         print filename
    # except:
    #     print "execute list_file_dir fun error"
    compress(os.getcwd())

运行的时候,只需要将脚本放到工程根目录,执行python pyname.py。脚本会自动遍历所有文件,所有的png和jpg文件都会被进行压缩,压缩后的文件会覆盖原有同名文件。

我是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是我不断向前进步的动力。

你可能感兴趣的:(利用TinyPNG的API批量压缩项目图片资源)