原创文章转载请注明出处
TinyPNG---一个压缩PNG/JPG的神站
选择你要压缩的PNG图片或者直接将你要压缩的图片拖拽到网页中间的大框框内。压缩完成,点击download下载即可。
但是网页上单次批量压缩的上限是20张,而且每张都要单独点击下载不能批量下载,非常麻烦。
但是,TinyPNG提供了一些API方便程序员偷懒。能坐着就不站着,能躺着就不坐着,不偷懒的程序员不是好程序员。
要使用这些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文件都会被进行压缩,压缩后的文件会覆盖原有同名文件。
我是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是我不断向前进步的动力。