TinyPNGNodeJSBatcher
by AlexQ (email alexq_andr@163.com)
**工程源碼托管在 GitHub ** follow&star
TinyPNG
Smart PNG and JPEG compression
Optimize your images with a perfect balance in quality and file size.
如果你想進(jìn)一步了解TinyPNG壓縮圖片請移步官網(wǎng)TinyPNG查看勋锤。
什么是TinyPNGNodeJSBatcher?
提供一個NodeJS環(huán)境下,基于TinyPNG服務(wù)的次哈,批量壓縮任意數(shù)量圖片的工具恢筝。
使用
熟悉tinypng的朋友可以直接進(jìn)入使用階段此改,不熟悉的可以先閱讀下面的內(nèi)容再回頭來看這個部分。
- 安裝NodeJS環(huán)境:隨便百度一下你使用的平臺如何安裝吧究珊,大把大把的資料;
- 安裝tinify支持:npm install --save tinify;
- 修改index工程適配你的環(huán)境:
- 申請API KEY(如何申請下面的部分找一下),填寫到global.key中 瑟蜈;
- 使用compressAllFiles入口乔宿,將參數(shù)設(shè)置成自己的吧掂林;
- 啟動工程中的index.js入口:
- cd到工程目錄
- node index.js
demo運行結(jié)果(工程中很多圖片都已經(jīng)被壓縮過了计寇,所以壓縮率demo中不高,你可以用你的工程看一下,效果明顯):
實際場景中的批量壓縮
TinyPNG提供了不錯的圖片壓縮朽基,但是免費版本每個月只能免費壓縮500張圖片招刨,而且我看到產(chǎn)品同學(xué)打却、設(shè)計同學(xué)往往都是手動的將每一張圖片拖動到TinyPNG中片习,手動的話每次20張圖片状知,這樣很不方便,白白耗費人力耗費時間。
申請TinyPNG的KEY
https://tinypng.com/developers/subscription
解決痛點
我們實際應(yīng)用中绿映,可能是需要對一個成型的產(chǎn)品里面所有圖片文件統(tǒng)一執(zhí)行壓縮,而且圖片可能會分散在不同的目錄下库车,那么TinyPNGNodeJSBatcher就是解決這些痛點的洋满。
簡單易用
- 一個調(diào)用就將你指定目錄下(允許帶有子文件夾的任意目錄)圖片文件多線程利用tinypng在線壓縮;
- 如果你指定了多個tinypng可用的key,那么在第一個key每月500張使用完后阵漏,TinyPNGNodeJSBatcher會自動切換使用第二個key,依此類推懦趋,做到不限數(shù)量的批量壓縮,多找?guī)讉€郵箱注冊就可以獲得多個可用的APIKey啦;
- 結(jié)合實際,接口中可以指定那些你不想它們參與壓縮的目錄,例如:android工程編譯后會生成很多中間目錄掏呼,這些目錄咱們不做壓縮,典型的就是build目錄;
- 接口中可以指定那些不想?yún)⑴c壓縮的,帶有關(guān)鍵字文件名稱蒋得,也就是說名字包含這些字串的文件將不參與壓縮,典型應(yīng)用android中“.9”類型的圖片我們一般不做壓縮,例如:['.9.png'];
瀏覽接口
- compressAllFiles:核型功能-壓縮所有指定目錄文件到另一個指定目錄
- tools_checkImages:工具方法-查找所有可以壓縮的文件
- tools_findImageFiles:工具方法-查找并拷貝所有可壓縮文件
- tools_overWriteFiles:工具方法-反向?qū)嚎s后的文件覆蓋原來對等目錄結(jié)構(gòu)的文件
測試
Mac上測試可用