TinyPNGNodeJSBatcher-基於TinyPNG的批量壓縮圖片工具

QJoyXue發表於2017-03-28

by AlexQ (email alexq_andr@163.com)

工程原始碼託管在 GitHub follow&star

TinyPNGNodeJSBatcher-基於TinyPNG的批量壓縮圖片工具
tinypngPanda

TinyPNG

Smart PNG and JPEG compression
Optimize your images with a perfect balance in quality and file size.複製程式碼

如果你想進一步瞭解TinyPNG壓縮圖片請移步官網TinyPNG檢視。

什麼是TinyPNGNodeJSBatcher?

提供一個NodeJS環境下,基於TinyPNG服務的,批量壓縮任意數量圖片的工具。

###使用
熟悉tinypng的朋友可以直接進入使用階段,不熟悉的可以先閱讀下面的內容再回頭來看這個部分。

  1. 安裝NodeJS環境:隨便百度一下你使用的平臺如何安裝吧,大把大把的資料;
  2. 安裝tinify支援:npm install --save tinify;
  3. 修改index工程適配你的環境:
    • 申請API KEY(如何申請下面的部分找一下),填寫到global.key中 ;
    • 使用compressAllFiles入口,將引數設定成自己的吧;
  4. 啟動工程中的index.js入口:
    • cd到工程目錄
    • node index.js

demo執行結果(工程中很多圖片都已經被壓縮過了,所以壓縮率demo中不高,你可以用你的工程看一下,效果明顯):

TinyPNGNodeJSBatcher-基於TinyPNG的批量壓縮圖片工具
demo

實際場景中的批量壓縮

TinyPNG提供了不錯的圖片壓縮,但是免費版本每個月只能免費壓縮500張圖片,而且我看到產品同學、設計同學往往都是手動的將每一張圖片拖動到TinyPNG中,手動的話每次20張圖片,這樣很不方便,白白耗費人力耗費時間。

TinyPNGNodeJSBatcher-基於TinyPNG的批量壓縮圖片工具
tinypngcomplex

申請TinyPNG的KEY

tinypng.com/developers/…

TinyPNGNodeJSBatcher-基於TinyPNG的批量壓縮圖片工具
getapikey

解決痛點

我們實際應用中,可能是需要對一個成型的產品裡面所有圖片檔案統一執行壓縮,而且圖片可能會分散在不同的目錄下,那麼TinyPNGNodeJSBatcher就是解決這些痛點的。

簡單易用

  1. 一個呼叫就將你指定目錄下(允許帶有子資料夾的任意目錄)圖片檔案多執行緒利用tinypng線上壓縮;
  2. 如果你指定了多個tinypng可用的key,那麼在第一個key每月500張使用完後,TinyPNGNodeJSBatcher會自動切換使用第二個key,依此類推,做到不限數量的批量壓縮,多找幾個郵箱註冊就可以獲得多個可用的APIKey啦;
  3. 結合實際,介面中可以指定那些你不想它們參與壓縮的目錄,例如:android工程編譯後會生成很多中間目錄,這些目錄我們們不做壓縮,典型的就是build目錄;
  4. 介面中可以指定那些不想參與壓縮的,帶有關鍵字檔名稱,也就是說名字包含這些字串的檔案將不參與壓縮,典型應用android中“.9”型別的圖片我們一般不做壓縮,例如:['.9.png'];

瀏覽介面

  1. compressAllFiles:核型功能-壓縮所有指定目錄檔案到另一個指定目錄
  2. tools_checkImages:工具方法-查詢所有可以壓縮的檔案
  3. tools_findImageFiles:工具方法-查詢並拷貝所有可壓縮檔案
  4. tools_overWriteFiles:工具方法-反向將壓縮後的檔案覆蓋原來對等目錄結構的檔案

測試

Mac上測試可用

相關文章