To Squoosh, ale jako biblioteka węzłów.
Z przyjemnością przedstawiamy libSquoosh – eksperymentalną bibliotekę węzłów, na której opiera się Squoosh CLI, zapewniającą wszystkie możliwości Squoosh CLI z interfejsem rozpoznawalnym JavaScript.
Squoosh.app to aplikacja PWA, która kompresuje obrazy w przeglądarce. Obsługuje wiele starych i nowych formatów obrazów i przetwarza je po stronie klienta w przeglądarce za pomocą WebAssembly. Dzięki temu zdjęcia są bezpiecznie przechowywane na Twoim komputerze, a nie wysyłane na serwer. Aplikacja Squoosh działa nawet w trybie offline.
Na konferencji Chrome DevSummit 2020 ogłosiliśmy wprowadzenie Squoosh v2 oraz Squoosh CLI, aby przenieść wszystkie kodeki Squoosh do wiersza poleceń przy użyciu Node i WebAssembly. Dzięki temu możesz skompresować całe foldery za pomocą jednego polecenia i skorzystać z interfejsu wiersza poleceń, aby wybrać parametry kodeka za Ciebie.
Interfejs wiersza poleceń umożliwia dużą automatyzację, więc to naturalne, że deweloperzy zaczęli prosić o bardziej idiomatyczny interfejs niż automatyczne wywoływanie interfejsu wiersza poleceń Squoosh za pomocą powłoki. Anton (@atjn w GitHub) zajął się tym zadaniem i rozdzielił kod Squoosh CLI na 2 części: kod interfejsu wiersza poleceń i podstawowe funkcje.
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();
Chcemy, aby kompresja obrazów była bardziej dostępna dla autorów korzystających z narzędzi. Liczymy, że nastąpi integracja z Webpackiem, usługą Rollup i innymi narzędziami do kompilacji, dzięki którym Twoje obrazy będą odpowiednio zoptymalizowane pod kątem internetu.
Chcę Ci bardzo podziękować do Antona w czasie, gdy zaangażował się w strumieniowanie Squoosh!
Jest jeszcze za wcześnie na wprowadzenie interfejsu wiersza poleceń Squoosh i libSquoosh i mamy jeszcze wiele innych pomysłów i planów, które chcemy wprowadzić. Tymczasem wypróbuj libSquoosh. Pamiętaj jednak, że jest to wczesna, eksperymentalna wersja i istnieje duże ryzyko wystąpienia błędów. Jeśli znajdziesz jakieś pytania lub znajdziesz jakieś pytania, otwórz stronę problemu.
Jeśli chcesz pomagać w grze Squoosh – na przykład dodawać do niej bardzo ubogą dokumentację dotyczącą libSquoosh lub pomagać w innych obszarach aplikacji – uruchamiamy program mentorski, który pomoże Ci zacząć. Jeśli chcesz dowiedzieć się więcej, przeczytaj o problemie ze śledzeniem.