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調用次數。