Pack Camo
Rust · WebAssembly · 零上传

转换任何文件。
压缩一切内容。
什么都不上传。

Pack Camo 是一个在浏览器标签页内运行的文件工具箱。图片、结构化数据、压缩包和文档都在你自己的设备上解码、转换和重新编码。没有账号,没有排队,也没有哪台服务器会暂存你的文件。

  • 文件不会离开标签页
  • 原生速度的编解码器
  • 离线也能用
Pack Camo 的变色龙,盘腿而坐,正在冥想

为什么在本地

转换就在文件所在的地方进行

大多数在线转换器要求你把文件交给一台你一无所知的机器,排队等待,再把结果下载回来。这里把这三步全都省掉了。

从设计上就是私密的

没有需要信任的上传接口,因为整个流程中根本没有服务器。你的文件被读入内存、完成转换,然后以下载的形式交还给你。

真正的编解码器,不是画布把戏

与桌面工具相同的库——image crate、rav1e、vtracer、miniz_oxide、Brotli——由 Rust 编译为 WebAssembly。

不占用主线程

每次转换都在 Web Worker 中运行,因此编码一张 1200 万像素的 AVIF 也不会让你正在看的页面卡住。

没有分级,没有水印

不需要账号,没有每日配额,除了浏览器愿意分配的内存之外,没有文件大小上限。

所有参数一览无余

质量、编码强度、最长边限制、描摹阈值、压缩级别。默认值合理,没有任何隐藏项。

断网也能用

页面及其 wasm 模块缓存之后,无论在飞机上、火车上,还是在企业代理之后,这些工具都能继续工作。

幕后原理

四个 Rust crate,编译为 WebAssembly

这里没有任何东西是托管 API 的封装。转换逻辑就是普通的 Rust 代码,在桌面端完成单元测试,再以 wasm 形式交付到浏览器。

  1. 1

    Rust crate

    每个工具都是一个小型库 crate,拥有简洁、可测试的核心——与命令行工具会使用的代码完全相同。

  2. 2

    wasm-bindgen

    一层轻薄的绑定把这些函数变成浏览器可以直接调用的 WebAssembly 模块。

  3. 3

    Web Worker

    模块在 worker 中只实例化一次,因此繁重的编码任务永远不会阻塞界面。

crates/

  • image-codecs

    解码/编码 WebP、AVIF、JPEG、PNG 等格式

    image · rav1e · libwebp (optional)

  • svg-converter

    为颜色区域拟合曲线,输出真正的矢量路径

    vtracer · visioncortex

  • data-convert

    一棵类型化树,六种文本格式,外加 Markdown

    serde · csv · toml · pulldown-cmark

  • archive-tools

    gzip、zlib、DEFLATE、Brotli 和 ZIP,压缩与解压双向支持

    flate2 · brotli · zip

常见疑问

常见问题

把文件拖进一个网站之前,大家理应先确认的那些事。

Pack Camo 真的免费吗?
是的。没有账号,没有水印,没有每日配额,也没有文件大小分级。整个网站就是一个静态 Web 应用;运行一次转换的唯一成本是你自己的 CPU 时间。
我的文件会被上传到服务器吗?
不会。每次转换都在你的浏览器内完成——图片、数据和压缩工具通过由 Rust 编译的 WebAssembly 模块运行,文档转换器则在同一页面上以 JavaScript 运行。你的文件被读入内存、完成转换,再以下载的形式交还给你。它从不经过网络,因此事后也没有什么需要删除。
它能转换哪些类型的文件?
四大类。图片:输入 PNG、JPEG、WebP、GIF、BMP、TIFF、ICO 和 SVG,输出 WebP、AVIF、JPEG、PNG 或描摹而成的 SVG。结构化文本:JSON、JSONL、YAML、TOML、CSV 和 TSV 任意互转,以及 Markdown 转 HTML。文档:Word .docx 转 PDF,以及 PDF 转回 .docx。此外,任何文件都可以用 gzip、zlib、DEFLATE 或 Brotli 压缩,或打包成 ZIP。
它和其他在线转换器有什么不同?
大多数在线转换器会把你的文件上传到别人机器上的队列里,再给你一个链接。Pack Camo 用与桌面工具相同的编解码库在本地完成解码和编码,这也是它在离线时依然能用的原因。
在手机上能用吗?
能,任何支持 WebAssembly 的现代移动浏览器都可以。超大图片会受浏览器分配给标签页的内存限制,因此在手机上编码前最好先使用最长边限制。
为什么是变色龙?
因为这份工作的本质就是适应:同样的内容,重新塑形以适应它接下来要去的任何地方,而本质不变。
Pack Camo 的变色龙,一副洋洋得意的样子

拖入一个文件,看它变身。

无需安装,无需注册,也不会把任何东西发送到任何地方。选择一个工作区,开始吧。