在寫下第一行 Chrome 外掛程式碼之前,我們做了多數團隊會跳過的一件事:調研了 Chrome 商店裡每一款圖片壓縮外掛。我們按評價數安裝了前 20 名,用真實照片試用,讀 1 星差評,並檢視安裝量。
我們發現,這是一個既未被充分服務又被誤解的市場。
沒錯——官方的 TinyPNG Chrome 外掛安裝量不到 1000。整個 Chrome 商店排名最高的圖片壓縮器,也只在 1000 安裝量上下,評分 3.8 星。
這並不意味著沒有需求。需求是有的——「image compressor」這個關鍵詞全球每月搜尋量超過 9 萬次。那為什麼外掛如此少人用?
兩個規律解釋了這一點:
我們認為在這兩個維度上都能做得更好。
外掛的全部意義——相對於在新標籤頁開啟一個 Web 應用——在於能觸及Web 應用夠不到的時刻。具體來說:
這些時刻沒有一個能被「開個新標籤頁、把檔案拖進去」很好地服務。這就是為什麼我們為 ImgMin Chrome 外掛設計了四個不同的入口,每個都針對一個特定的瀏覽器內時刻。
在任意網頁右鍵任意圖片。選擇 「用 ImgMin 壓縮」。一個小浮層會在頁面本身的右下角開啟——不是新標籤,不是 popup。你能看到原始大小、壓縮後大小,以及一個下載按鈕。三個質量預設。完成。
該浮層使用帶封閉 shadow DOM 的沙盒化 iframe,所以你所在的頁面讀不到裡面的內容。圖片資料只存在於記憶體中。
在頁面背景(不是圖片上)右鍵。選擇 「壓縮本頁所有圖片」。新標籤會開啟,把源頁面上的每一個 <img> 以縮圖網格展示(最多 50 張,已去重)。選你想要的,挑一個質量預設,點 「下載 ZIP」。
ZIP 用內建的 JSZip 庫在你的瀏覽器裡構建——沒有網路往返,沒有第三方 CDN。整個過程可離線工作。
這正是 Web 應用無法複製的功能:只有外掛知道你此刻正在看的頁面上有哪些圖片。
開啟上傳助手。此後,每當你在任何帶檔案選擇器的網站——Gmail、Twitter、Slack、你的 CMS——選中一張大圖(預設閾值:2 MB),右下角會彈出一個小提示:「sunset.jpg · 5.2 MB。傳送前壓縮?[壓縮並替換] [跳過]」。
如果你點壓縮,上傳輸入框中的原始檔案會通過標準的 DataTransfer API 被替換成壓縮後的版本,然後表單的 change 事件再次觸發。網站看到的是一個更小的檔案,照常進行。
你可以全域性停用、設定按域名跳過的清單,或在設定中更改閾值。這一項是安靜的生產力倍增器——多數使用者沒意識到自己在未縮放的手機照片上燒掉了多少頻寬。
HEIC 格式的 iPhone 照片多年來一直是痛點,尤其在無法原生開啟它們的 Windows 和 Linux 機器上。ImgMin 內建了一個 WebAssembly libheif 解碼器(約 1 MB,僅在需要時懶載入),並完全在你的瀏覽器中把 HEIC → JPG / WebP。
你把一個 .heic 檔案拖進 popup,ImgMin 解碼它、壓縮它,並給你一個任何裝置都能開啟的格式的下載。無需單獨的轉換器,也不用上傳到某個來路不明的「免費 HEIC 轉 JPG」網站。
多數「私密」工具靠的是你信任它們的隱私政策。我們採取了不同的做法:把系統設計成隱私不是一項政策,而是一個技術屬性。
| 能力 | ImgMin | TinyPNG 式外掛 |
|---|---|---|
| 圖片資料離開瀏覽器 | 從不 | 是(傳到伺服器) |
| 壓縮過程中的網路請求 | 零 | 多個 |
| 是否需要賬號 | 否 | 常需要 |
| 能否離線工作 | 能 | 不能 |
| 追蹤 Cookie | 無 | 不一定 |
壓縮本身執行在HTML5 Canvas API 上,它內置於你的瀏覽器。HEIC 解碼執行在一個內建的 WASM 模組上,同樣在本地。外掛唯一的出站請求是頁尾裡可選的「開啟 ImgMin 網頁版」連結,而那顯然得你自己點。
imgmin.pro 網頁版已支援 6 種語言(English、中文、日本語、Français、Deutsch、Español)。把 Chrome 外掛做成只有英文會很傻——Chrome 的使用者群比整體 Web 更國際化,而非更少。
所以外掛通過 chrome.i18n.getUILanguage() 自動檢測你的瀏覽器語言,並把整個介面——popup、頁面內浮層、批次頁、上傳提示、設定,甚至右鍵選單標題——都以你的語言呈現。你也可以在設定裡覆蓋這個選擇。
v1.3 帶來了上面的四個入口。為了讓首個版本保持精簡,我們刻意推遲了這些:
ImgMin 完全在你的瀏覽器中用 Canvas API 執行——任何圖片資料都不會被髮送到任何伺服器。TinyPNG 的免費服務會把你的圖片上傳到它的壓縮伺服器,在那裡保留 24 小時後刪除。對敏感圖片(證件照、醫學掃描、私人時刻),這個差異很重要。ImgMin 還增加了 TinyPNG 外掛沒有的整頁批次、上傳自動建議和 HEIC 支援。
三個原因:(1) 讀取你右鍵的圖片,(2) 在你觸發整頁批次時列舉 <img> 標籤,(3) 在你開啟上傳助手時監聽檔案選擇。外掛是被動的——它只在你顯式呼叫某個功能時才動作。它從不讀取、抓取或傳輸其他頁面內容。完整說明見 extension-privacy.html。
能。安裝後,外掛在壓縮過程中發出零網路請求。Canvas API 和內建的 libheif WASM 解碼器都在本地執行。你可以在飛航模式、無網路的企業網路,或任何離線場景下壓縮圖片。
使用者安裝圖片壓縮器是因為想要更小的檔案。以最大壓縮為首選符合這一意圖。ImgMin 的「最小」預設使用質量 0.70——對絕大多數照片,能在保留人臉、文字和細節完好的同時實現約 75% 的體積縮減。如果你需要純淨畫質,「最佳質量」只需一次點選。