コンテンツにスキップ
EN / JA

はじめに

C ネイティブ画像処理エンジンを TypeScript API / CLI から利用するライブラリです。JPEG / PNG / WebP / AVIF / GIF / HEIC をデコードし、Lanczos-3 リサイズを経て WebP / AVIF / PNG にエンコードします。Node.js / Bun / Deno に対応します。

ブラウザ向けの zenpix-wasm は、RGB / RGBA 生ピクセルからの AVIF encode 専用です。ネイティブ版の decode、resize、CLI は含みません。


Node.js / Bun(サーバーサイド)

Terminal window
npm install zenpix

ESM 専用パッケージです。package.json"type": "module" が必要です。CommonJS(require)は非対応です。

Deno

Terminal window
deno add npm:zenpix

または直接 npm: specifier を使用:

import { decode, encodeAvif } from "npm:zenpix/deno";

通常利用では--allow-ffiと入力ファイル用の--allow-readが必要です。optionalなZENPIX_LIB上書きを使う場合だけ--allow-env=ZENPIX_LIBを追加します。

ブラウザ / Cloudflare Pages(WASM)

Terminal window
npm install zenpix-wasm

詳細はブラウザ(WASM)を参照してください。


インストール済みバージョンの確認

Section titled “インストール済みバージョンの確認”
Terminal window
# ネイティブ
npx zenpix --version
npm list zenpix
# WASM
npm list zenpix-wasm

import { decode, resize, encodeAvif } from "zenpix";
import { readFileSync, writeFileSync } from "fs";
const image = decode(readFileSync("photo.jpg"));
const resized = resize(image, { width: 1920, height: 1080, fit: "cover" });
const avif = encodeAvif(resized, { quality: 60, threads: 4 });
if (avif) writeFileSync("output.avif", avif);

convert() でパイプラインをワンライナーに:

import { convert } from "zenpix";
import { readFileSync, writeFileSync } from "fs";
const result = convert(readFileSync("photo.jpg"), {
resize: { width: 1920, height: 1080, fit: "cover" },
encode: { format: "avif", quality: 60 },
});
if (result) writeFileSync("output.avif", result);

機能内容
デコードJPEG / PNG / WebP / AVIF / GIF(先頭フレーム)
リサイズscalar基準の2-pass Lanczos-3。1.0.4ではRGBAにNEON / SSE2、その他はscalar fallback。fitモード(stretch / contain / cover)
エンコードWebP / AVIF(threads 指定可)/ PNG
CLInpx zenpix(バッチ・stdin/stdout 対応)
RGBA背景除去・角丸・白背景合成
パイプラインconvert() で decode → crop → resize → encode を一発実行

処理時間はCPU、スレッド数、画像の特徴、解像度、依存ライブラリによって変わります。過去の測定には、少コアVPSの一部画像でzenpixが速い結果と、Macや別種の画像でSharpが速い結果の両方があります。

再配布可能なfixtureがない数値は一般性能の根拠には使用しません。条件と制約はベンチマークを参照してください。

公開済みnpm 1.0.4は、1.0.3からnative実装を変更せず、RGBA用NEON / SSE2を5環境でbuild・testし、各CI jobが直前にbuildしたbinaryをpackしてSHA256一致、runtime依存、Node.js / Bun / Deno API、CLI実変換を検査したものです。集約検査を通過したrootと5 native optional packagesの1.0.4、zenpix-wasm 1.1.2をnpmへ公開し、全packageのregistry metadataとintegrity、macOS arm64のregistry再installとAPI / CLI実変換、registry再取得WASMのbaseline / SIMD Chromium encodeを確認済みです。他の4 native環境での公開後実機利用は未確認です。