1. 程式人生 > >使用pngquant壓縮png圖片的指令碼的實現

使用pngquant壓縮png圖片的指令碼的實現

圖片的壓縮大都用到pngquant,官網:https://pngquant.org/

網上也有一大把由此而來的工具,這些在官網上都能看到。其壓縮效率還是蠻不錯的。今天,寫了個python指令碼,壓縮資料夾下所有的png圖片。

首先,你需要從官網上下載pngquant.exe(我是在win上寫的,Mac也有其程式).

原始碼:

#coding=utf-8
import os,sys

file_path = []		
def getNameList(dir,wildcard,recursion):
	exts = wildcard.split(" ")
	files = os.listdir(dir)
	for name in files:
		fullname = os.path.join(dir,name)
		if os.path.isdir(fullname) & recursion:
			getNameList(fullname,wildcard,recursion)
		else:
			for ext in exts:
				if(name.endswith(ext)):
					file_path.append(fullname)
					print(fullname)
					break
		
def run():
	getNameList(sys.path[0],".png .jpg",1)
	file_name_list = file_path
	for file_name in file_name_list:
		a = file_name.find(".png")
		if a <> -1:
		#--force --ext .png --quality 30-30 loading_role.png
			cmd = "pngquant --force --ext .png --quality 30-30 %s"%(file_name)
			print cmd
			os.popen(cmd)
			#os.system(cmd)
			print("add file %s"%(file_name))
		
if __name__ == "__main__":
	run()

getNameList

這個函式的作用是得到當前資料夾下所有的檔案的路徑,並存儲在列表中

執行的時候,需要先判斷檔案是不是png,png的話執行壓縮命令。

Python指定cmd命令有2中方法,程式碼中已經給出。

這樣這個指令碼就OK了。