Rust -> TypeScript

PNG 无损压缩。
TypeScript 实现。

将 oxipng 从 Rust 迁移到 TypeScript,支持浏览器和 Nodejs。并可编译为二进制文件。

—Node.js 耗时 / Rust
—Node.js 尺寸比 Rust
纯 TSTypeScript 压缩核心
33.6 KiB核心代码 · gzip原始 161.2 KiB
BENCHMARKBENCHMARK

PNG 压缩速度

正在读取测量结果…

正在读取 benchmark…

01

无损压缩优化过滤、色深、调色板与 DEFLATE 编码。

02

零运行时依赖无需 WASM 或原生插件。

01 / BENCHMARK

性能测试

各构建目标使用相同样本和压缩预设。

正在加载实测环境…—

TIME

压缩耗时

秒
读取实测结果后显示

SIZE

输出文件尺寸

MiB
读取实测结果后显示

STARTUP

启动时间

毫秒
读取实测结果后显示

正在读取 benchmark…

测量方法

测量口径随 benchmark 数据一同更新。

Rust 使用默认线程数;TypeScript 的各构建目标使用同一套 TypeScript 压缩核心,单线程执行。文件无法进一步缩小时保留原始字节。这里比较的是完整 PNG 优化流程,不只是 DEFLATE 内核。

结果取决于图片内容和运行环境。这组 CLI 实测不代表浏览器内的运行速度,也不与 API 基准计时混用。

02 / DEMO

本地压缩

选择 PNG / APNG,或使用样本。文件在浏览器中处理。

把 PNG 拖到这里

或选择文件 · 也支持粘贴图片

样本

透明像素优化可能改变不可见的 RGB 值;移除元数据会丢弃部分附加信息。高预设处理时间更长。

等待选择图片

压缩后可预览和下载。

03 / USAGE

安装与调用

支持 CLI、ESM 和 CJS。

ESM / CJS / CLI
TERMINAL
npm install -g oxipng-ts

# 优化单张图片
oxipng-ts -o 2 image.png

# 批量优化,输出到指定目录
oxipng-ts -r -o 3 --dir ./optimized ./assets
TYPESCRIPT
import { oxipng, Options } from 'oxipng-ts';

const input = new Uint8Array(
  await file.arrayBuffer()
);
const output = await oxipng(
  input, Options.fromPreset(2)
);