# AVIF 转 JPG

把网站如今保存的格式，变成所有软件一直支持的格式。

> 在浏览器中将 AVIF 图片转换为 JPG。浏览器已经能解码 AVIF，因此无需上传、注册，也能离线使用。透明区域会填充你选择的颜色。

This is an interactive browser tool at https://httcup.github.io/tools/avif-to-jpg/. Files are processed on the device running that browser. Any deliberate sharing or optional network feature is described on the page. What follows is its written explanation; open the address to use it.

## Your 图片 are **processed in your browser**. No processing upload.

转换在你的浏览器、你的硬件上完成。无需下载解码器，也无需等待。浏览器自 2021 年起就能读取 AVIF，因此其他软件打不开的图片，在浏览器标签页里却显示正常。本页利用这个解码器绘制图片，再写出 JPEG。这里没有任何网络功能，也没有接收照片的服务器。

- ✗ 无需上传
- ✗ 无需账号
- ✗ 无大小限制
- ✓ 可离线使用
- ✓ 开源

## 如何将 AVIF 转为 JPG

1. **选择 AVIF 文件。** 拖入文件或手动选择。工具通过文件开头的字节识别格式，不看文件名，因此下载时被改名的 AVIF 仍然可用。真正的 PNG 会被拒绝，并明确显示实际格式。
2. **设置质量，以及透明区域背后的颜色。** 滑块从 92 开始，此时照片很难与原图区分。颜色控件只在列表中有透明图片时出现，因为 JPEG 必须填充这些区域。
3. **点击“转换”，然后下载。** 每个结果都显示来源、转换后的大小和变化。文件通常会大不少，因为 AVIF 是更高效的编码，你用体积换取兼容性。单个文件有下载按钮，多个文件还提供 ZIP 压缩包。

## The longer version

[只有你正在阅读的浏览器能打开的文件](https://httcup.github.io/tools/guides/convert-avif-to-jpg/): 下载图片得到无法打开的 .avif？浏览器能读取，所以转换无需上传。这里解释 AVIF、JPEG 无法保留的内容和文件为何大数倍。

## Also in the box

- [证件照制作](https://httcup.github.io/tools/id-photo/): 选择支持的国家和证件。公布的要求与指导值均有标注。
- [图片堆栈](https://httcup.github.io/tools/stack-images/): 二十张变一张，不用传二十次，也不用 RAW 转换器。
- [图片涂黑与打码](https://httcup.github.io/tools/redact-image/): 你遮住的那块是从文件里删掉的，不是藏在文件里。
- [EXIF 查看与清除](https://httcup.github.io/tools/exif-editor/): 看看一张照片把你交代了多少，然后删掉。

## Questions

### 图片会被上传到哪里吗？

不会。文件在你的浏览器、你的硬件上读取、解码和写入。本工具没有任何网络功能：不获取也不发送任何内容。本页的 `Content-Security-Policy` 列出了所有允许联系的地址，没有一个属于本网站。连解码器也不用先加载，浏览器已经有了。

### 为什么电脑上的软件都打不开这张图片？

因为 AVIF 在相关软件中仍然很新。它在相同质量下比 JPEG 小得多，所以网站开始使用它，保存图片便会得到 `.avif`。而你拿来打开图片的软件常常比格式更老。Windows 需要扩展，许多桌面编辑器仍不支持，电子书阅读器、打印机和上传表单大多也不认识。浏览器却能正常读取，这既是本页能帮忙的原因，也是你最初得到这份文件的原因。

### JPG 会比 AVIF 更大吗？

几乎一定会，经常大数倍。结果会明确显示差别。AVIF 是最高效的静态图像编码之一，JPEG 则是最老的一批。40 KB 的 AVIF 在相同可见质量下变成 200 KB 的 JPEG 很正常。这是用体积换兼容性。如果之后还要限制大小，[图片压缩器](https://httcup.github.io/compress-image/)可以把 JPEG 压到指定大小。

### 透明区域会怎样？

会填充你选择的颜色，而且页面在转换前就会说明。AVIF 有透明通道，JPEG 没有，因此这次转换无法保留透明，只能由你决定垫什么颜色。多数 AVIF 是不透明的照片，颜色控件便不会出现。需要保留透明时，可用[图片压缩器](https://httcup.github.io/compress-image/)转为 PNG 或 WebP，它能读取 AVIF 并输出两者。

### HDR 和十位色彩呢？

本工具从浏览器画布输出普通的 8 位 SDR JPEG，不保留 AVIF 额外的位深或 HDR 信息，颜色和高亮部分可能改变。归档时请保留原文件。基于 JPEG 的 HDR 格式确实存在：[Android 的 Ultra HDR 规范](https://developer.android.com/media/platform/hdr-image-format)描述了增益图，但本工具不会生成它。

### 图片会被重新压缩吗？

会，而且无法避免。AVIF 和 JPEG 使用不同编码，必须先解码再重新编码。所有 AVIF 转换器都如此，包括要求上传的那些。你能控制损失多少：滑块默认 92，此时照片很难与原图区分。

### 可以反过来把 JPG 转成 AVIF 吗？

这里不能。本工具使用浏览器画布编码器，没有附带 AVIF 编码器。不支持的画布输出类型会回退为 PNG，修改扩展名不会生成 AVIF。其他带有独立编码器的工具可以在本地编码 AVIF，无需上传。[画布输出规则](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob)解释了回退行为。

### 日期、相机和位置会保留吗？

不会。图片绘制到画布上，而画布只有像素，所以 EXIF、GPS、色彩配置和 XMP 都会丢弃。网页上的图片通常本来就没有这些信息。需要查看或编辑文件携带的内容时，[EXIF 查看与移除工具](https://httcup.github.io/exif-editor/)可以完成，而且不会重新压缩图片。

### 能一次转换整个文件夹吗？

能。你想放多少文件都可以。没有数量或大小限制，因为没有服务器承担处理。每个文件都有一行结果和单独下载，两个或更多文件还提供包含全部结果的 ZIP 压缩包。

### 免费吗？可以离线用吗？

免费，不用账号、登录或试用，也没有水印。网站通过广告维持运营，广告不会获得图片信息。先加载页面，再断开网络，工具会完全照常运行。这也是确认没有上传的最有力证据。

## How the privacy claim is verifiable

- **处理在这个浏览器里完成。** 本工具在浏览器里处理输入和结果，处理代码不把它们上传去处理。Content-Security-Policy 限制可用资源和连接目的地，但已允许的主机仍可接收请求。策略不检查载荷，不能单独证明什么都没有发出。请把具体操作的请求与源码核对，或断网完成该本地操作。
- **解码器已经在浏览器中，这就是全部诀窍。** 照片查看器打不开的 AVIF，在浏览器标签页里却能正常打开：Chrome 和 Firefox 自 2021 年起支持 AVIF，Safari 自 2023 年起支持。本页只是给现成的解码器加上保存按钮：打开文件、绘制图片、写出 JPEG。因此无需下载引擎，无需等待第一次转换，也无需服务器。这恰恰是那些要求上传的转换器没有告诉你的事。
- **透明区域，以及它们背后的颜色。** AVIF 可以有透明通道，JPEG 却没有，因此透明处必须垫上一种颜色。本页会询问颜色，默认白色，而且只在文件确实有透明像素时询问。它检查的是解码后的像素，而非猜测格式。从网站保存的 AVIF 大多是不透明的照片，所以颜色控件通常不会出现。
- **本次转换不保留的内容。** 本工具从浏览器画布输出普通的 8 位 SDR JPEG，不保留 AVIF 额外的位深或 HDR 信息，颜色和高亮部分可能改变。归档时请保留原文件。
- **Google 加载什么，又拿不到什么。** 广告和统计脚本来自 Google，捐赠按钮来自 Buy Me a Coffee。它们都不会获得你的图片信息。读取、解码和写入文件的每一行代码都来自本站，并列在代码仓库中。
- **可以离线使用。** 先加载页面再断开网络，工具仍然照常工作。这是最简单的证明：如果转换器把图片发送出去处理，它就不可能做到这一点。

**Check it yourself.** None of the above has to be taken on trust. This page is generated from the templates and config in the repository by a build script you can read and run yourself, and the result is committed to the `dist` branch — so you can diff what is served against what a build of the sources produces: https://github.com/httcup/tools

The files worth reading first are `config/site.toml` for the Content-Security-Policy，以及负责转换的 `src/shared/image-convert.js`：识别真正的 AVIF 文件、解码图片，再从画布写出 JPEG。另两个格式转换器使用同一份文件，其中没有编解码器。
