它是 Squoosh,不過是節點程式庫。
我們很高興推出 libSquoosh,在 Squoosh CLI 之上建構實驗性節點程式庫,讓您透過 JavaScript 慣用介面使用 Squoosh CLI 的所有功能。
Squoosh.app 是 PWA,可在瀏覽器中壓縮圖片。這個平台支援多種新舊的圖片格式,並透過 WebAssembly 在瀏覽器中進行處理。這表示相片會安全保存在電腦中,不會傳送至任何其他地方的伺服器,Squoosh 即使離線也能運作。
在 Chrome DevSummit 在 2020 年,我們宣布推出 Squoosh v2,並且搭配 Squoosh CLI,使用 Node 及 WebAssembly 將 Squoosh 的所有轉碼器加入指令列。如此一來,即可透過單一指令壓縮整個資料夾,並使用 CLI 為您選擇轉碼器參數。
CLI 支援許多自動化作業,因此,比起透過 shell 以程式方式叫用 Squoosh CLI,如此自然純屬正常的介面。Anton (GitHub 上的 @atjn) 參與了任務,並將 Squoosh CLI 程式碼分成兩個部分:指令列介面程式碼和基礎核心功能。
import { ImagePool } from "@squoosh/lib";
// libSquoosh uses a worker-pool under the hood
// to parallelize all image processing.
const imagePool = new ImagePool();
// Accepts both file paths and Buffers/TypedArrays.
const image = imagePool.ingestImage("./squoosh.jpeg");
// Optional.
// await image.preprocess({
// resize: {
// enabled: true,
// width: 128,
// },
// });
await image.encode({
// All codecs are initialized with default values
// that can be individually overwritten.
mozjpeg: {
quality: 10,
},
avif: {
cqLevel: 10,
},
jxl: {},
});
const { extension, binary } = await image.encodedWith.mozjpeg;
await fs.writeFile(`output.${extension}`, binary);
// ... same for other encoders ...
await imagePool.close();
我們的目標是讓工具作者更容易使用圖片壓縮功能。我們希望能與 Webpack、Rollup 和其他建構工具整合,確保您的圖片針對網路進行最佳化調整。
我想表達感謝當時他承諾是 Squoosh!
Squoosh CLI 和 libSquoosh 目前仍處於早期階段,目前有許多值得我們實現的想法和計畫。在這段期間,不妨試試 libSquoosh!不過請注意,由於這是早期實驗版本,您很有機會遇到一些錯誤。如有任何問題或疑問,請建立問題。
如果您有興趣為 Squoosh 貢獻內容 (例如提供 libSquoosh 中極為稀疏的說明文件,或提供應用程式其他所有部分的相關協助),我們將發起一項導師計畫,協助你踏出第一步。如需瞭解詳情,請查看我們的追蹤問題。