È Squoosh, ma come libreria Node.
Siamo lieti di presentare libSquoosh, una libreria di nodi sperimentale in cui è creata l'interfaccia a riga di comando Squoosh, che offre tutte le funzionalità per l'interfaccia a riga di comando Squoosh con un'interfaccia idiomatica JavaScript.
Squoosh.app è una PWA che comprime le immagini per te nel browser. Supporta molti formati di immagine vecchi e nuovi e li elabora sul lato client nel browser tramite WebAssembly. Ciò significa che le tue foto rimangono al sicuro sul tuo computer anziché essere inviate a un server da qualche parte e che Squoosh funziona anche offline.
Al Chrome DevSummit 2020 abbiamo annunciato Squoosh v2, insieme all'interfaccia a riga di comando Squoosh per portare tutti i codec di Squoosh sulla riga di comando utilizzando Node e WebAssembly. Ciò ti consente di comprimere intere cartelle con un solo comando e di utilizzare gli interfaccia a riga di comando per consentire di scegliere automaticamente i parametri del codec.
L'interfaccia a riga di comando consente molta automazione ed è quindi naturale che gli sviluppatori abbiano iniziato a chiedere un'interfaccia più idiomatica rispetto a richiamare in modo programmatico l'interfaccia a riga di comando Squoosh tramite la shell. Anton (@atjn su GitHub) ha completato l'attività e ha separato il codice dell'interfaccia a riga di comando di Squoosh in due parti: il codice dell'interfaccia a riga di comando e la funzionalità di base sottostante.
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();
Il nostro obiettivo è rendere la compressione delle immagini più accessibile agli autori degli strumenti. Ci auguriamo di trovare un'integrazione in Webpack, Rollup e altri strumenti di creazione per garantire che le tue immagini siano ottimizzate in modo appropriato per il web.
vorrei esprimere un enorme "grazie" ad Anton per il tempo che si è impegnato con Squoosh!
È ancora presto per l'interfaccia a riga di comando di Squoosh e libSquoosh e abbiamo molte altre idee e piani che vorremmo implementare. Nel frattempo, prova libSquoosh! Tuttavia, tieni presente che si tratta di una versione sperimentale in fase iniziale e che ci sono buone probabilità di riscontrare qualche bug. Se ne trovi alcuni o in caso di domande, apri un problema.
Se ti interessa dare il tuo contributo a Squoosh, ad esempio contribuire alla sparsissima documentazione relativa a libSquoosh o fornire assistenza per altre parti dell'app, stiamo avviando un programma di tutoraggio per aiutarti a iniziare. Per ulteriori informazioni, consulta il nostro problema di monitoraggio.