Jetzt neu: libSquoosh

Es ist Squoosh, aber als Node-Bibliothek.

Wir freuen uns, Ihnen libSquoosh vorzustellen, eine experimentelle Node-Bibliothek, auf der die Squoosh CLI basiert und Ihnen alle Funktionen für die Squoosh CLI mit einer idiomatischen JavaScript-Schnittstelle bietet.

Squoosh.app ist eine PWA, die Bilder für Sie im Browser komprimiert. Es unterstützt viele alte und neue Bildformate und verarbeitet sie clientseitig im Browser über WebAssembly. Das bedeutet, dass Ihre Bilder sicher auf Ihrem Computer gespeichert werden und nicht irgendwo auf einen Server gesendet werden, und dass Squoosh auch offline funktioniert.

Beim Chrome DevSummit 2020 haben wir Squoosh v2 zusammen mit der Squoosh CLI angekündigt, um alle Codecs von Squoosh mithilfe von Node und WebAssembly an die Befehlszeile zu übertragen. Dadurch können Sie ganze Ordner mit einem Befehl komprimieren und die Codec-Parameter über die Befehlszeile für Sie auswählen lassen.

Die Befehlszeile ermöglicht eine umfassende Automatisierung und daher ist es nur natürlich, dass Entwickler nach einer idiomatischeren Oberfläche gefragt haben, als die Squoosh CLI über die Shell programmatisch aufzurufen. Anton (@atjn auf GitHub) ist bereit für die Aufgabe und hat den Code der Squoosh-Befehlszeile in zwei Teile unterteilt: den Code der Befehlszeilenschnittstelle und die zugrunde liegende Kernfunktionalität.

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();

Unser Ziel ist es, die Bildkomprimierung für Tool-Autoren zugänglicher zu machen. Wir hoffen auf eine Integration in Webpack, Rollup und andere Build-Tools, um sicherzustellen, dass deine Bilder für das Web optimiert sind.

möchte ich mich herzlich bedanken. für die Zeit, die er sich für Squoosh verabschiedet hat!

Für die Squoosh CLI und libSquoosh haben wir noch viele weitere Ideen und Pläne, die wir gerne umsetzen würden. In der Zwischenzeit können Sie libSquoosh! ausprobieren. Allerdings handelt es sich hierbei um eine frühe Version, die sich noch in der Testphase befindet und mit hoher Wahrscheinlichkeit Fehler auftreten können. Wenn Sie Fragen finden oder Fragen haben, erstellen Sie bitte ein Problem.

Wenn Sie Interesse daran haben, einen Beitrag zu Squoosh zu leisten, zum Beispiel zur extrem spärlichen Dokumentation zu libSquoosh oder zu den anderen Teilen der App beizutragen, starten wir ein Mentoringprogramm, das Ihnen den Einstieg erleichtert. Weitere Informationen finden Sie unter Probleme bei der Sendungsverfolgung.