文档 JPG (.jpg)
ISO/IEC 标准JPEG 是数字摄影和网页图像中最广泛采用的有损压缩标准,它利用了人眼对亮度(Luminance)的敏感度高于对色度(Chrominance)的敏感度这一特性。
将 PNG 转换为 JPG
免费的浏览器端 PNG 转 JPG 转换器。在您的设备上即时转换文件。
在线压缩 JPG
隐私保护 - 文件不会离开您的设备
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 JPG 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 JPG 文件:
十六进制签名 (偏移量 0):
FF D8 FFASCII 表示形式: ÿØÿ
标准化: ISO/IEC 10918-1 / ITU-T T.81
技术规格
| 容器架构 | 以 JFIF 或 EXIF 标头包装的标记分隔二进制流(以 0xFF 为前缀) |
| 压缩方式 | 有损离散余弦变换(DCT)+ 游程编码与霍夫曼熵编码 |
| 字节序 | 标记长度和量化表使用大端序(Big-Endian);Exif 可以使用小端序(II)或大端序(MM) |
| 色彩空间 | sRGB, Adobe RGB, CMYK, Y'CbCr, 灰度 |
| 通道与结构 | 每通道 8 位(24 位真彩色)或 8 位灰度 |
| 最大尺寸 | 65,535 x 65,535 像素(2 字节无符号整数) |
| 透明度 | 无(仅不透明;不支持透明通道) |
| 流式传输与渐进式加载 | 渐进式 JPEG 编码存储从低到高分辨率的多个扫描遍次 |
技术对比矩阵:JPG 对比同类产品
| 技术属性 | JPG (当前) | WebP | AVIF | PNG |
|---|---|---|---|---|
| 压缩范式 | 有损 DCT + 霍夫曼编码 | 有损(VP8)和无损 | 有损(AV1)和无损 | 无损 Deflate |
| Alpha 透明度 | 不支持透明通道(始终不透明) | 8 位 alpha 透明度 | 8 位 / 10 位 / 12 位 alpha | 完整的 8 位 / 16 位 alpha |
| 硬件解码 | 专用 JPEG 硬件解码支持情况因芯片和设备而异。 | 现代 SoC 中广泛支持硬件解码 | 现代 GPU 中的硬件解码正在迅速普及 | 基于 CPU 的快速解码 |
| 压缩效率 | 照片压缩的良好基准 | 在相同质量下比 JPEG 小 25%-35% | 在相同质量下比 JPEG 小 40%-55% | 对摄影内容效率低下 |
| 颜色位深 | 标准为每通道 8 位(24 位真彩色) | 每通道 8 位 | 10 位和 12 位 HDR 宽色域 | 每通道 8 位和 16 位 |
常见损坏模式与十六进制恢复指南
图像查看器显示"JPEG 文件提前结束"(Premature end of JPEG file),或者照片下半部分为纯灰色或彩色条纹。
根本原因: 下载被截断或存储写入不完整,丢失了 0xFFD9(EOI)尾部标记和图像扫描有效负载。
恢复方法: 在被截断的流末尾追加标记 0xFFD9,以允许解码器显示照片完好的上半部分。
图像颜色严重偏移、反转或呈现迷幻色彩。
根本原因: CMYK 色彩空间标头反转或嵌入的 ICC 配置文件无效。
恢复方法: 使用 ImageMagick 将色彩空间从 CMYK 转换为 sRGB('magick broken.jpg -colorspace sRGB fixed.jpg')。
文件无法打开并报告"找到无效的标记"(Invalid marker found)。
根本原因: 量化表(DQT 0xFFDB)或霍夫曼表(DHT 0xFFC4)标头内部出现位损坏。
恢复方法: 用从完好 JPEG 中提取的标准基准 JFIF 霍夫曼表和量化表替换受损的标头标记。
安全分析与解析器攻击向量
JPEG 安全性主要涉及元数据隐私泄露(EXIF)以及传统 C 语言解码器(libjpeg)中的缓冲区溢出。
已知攻击向量
- 敏感元数据泄露:未剥离的 EXIF 标头包含 GPS 坐标、相机序列号和缩略图预览。
- 传统 libjpeg 解析中的缓冲区过度读取和整数溢出,破坏了重启标记(RST)或渐进式扫描脚本。
- 将 JPEG 标头与可执行 ZIP 或 RAR 归档文件结合的多格式(Polyglot)文件。
防御性最佳实践: 发布用户照片时,务必剥离 EXIF 和 GPS 地理位置元数据以保护用户隐私。使用现代内存安全的解码器(例如 Rust 中的 image-rs)或沙盒化的 WebAssembly 解码器。
历史渊源与里程碑
核心优势与特点
- 许多图像软件和设备都支持 JPEG 解码,但兼容性因设备和应用而异。
- 针对连续色调的照片具有极佳的压缩比(10:1 至 20:1)。
- 文件体积小,并具备渐进式渲染能力。
技术局限与劣势
- 有损压缩会在锐利边缘产生压缩伪影(振铃效应和块状效应)。
- 不支持透明通道。
- 文件每次被解压、编辑并重新保存时都会产生代际损失(Generation loss)。
趣味技术冷知识
- 用于开发 JPEG 压缩的经典“Lenna”测试图像,扫描自 1972 年 11 月号的《花花公子》杂志。
- JPEG 4:2:0 子采样在水平和垂直方向将色度分辨率减半,且几乎不会造成可感知的画质损失。
- 每个标准的 JPEG 都以标记 0xFFD8(图像开始)开头,并以 0xFFD9(图像结束)结尾。
常见技术问题
为什么多次保存 JPEG 文件会降低图像质量?
JPEG 是一种不可逆的有损压缩格式。每次解压并重新保存 JPEG 时,DCT 量化步骤都会丢弃高频空间细节并重新近似 8x8 像素块,从而导致累积的"代际损失"伪影。
什么是渐进式 JPEG?它有什么用?
标准的基准 JPEG 是从上到下逐扫描行解码的。渐进式 JPEG 通过多个频谱扫描编码图像数据,允许浏览器立即渲染整张图片的低分辨率模糊效果,并随着字节的下载逐渐使其变清晰。
什么是色度子采样(4:2:0 对比 4:4:4)?
人眼视网膜中的视杆细胞(亮度/明暗)比视锥细胞(颜色)更多。JPEG 利用这一点,在压缩前在水平和垂直方向将色度分辨率(Cb, Cr)减半(4:2:0),同时保留完整的亮度分辨率(Y),从而在视觉无损的情况下丢弃 50% 的原始数据。
JPEG 图像可以有透明背景吗?
不能。标准 JPEG 规范没有 alpha 通道的概念。如果需要透明度,必须将图像转换为 WebP、AVIF 或 PNG。
相关的 JPG 转换对
通过应用有损压缩将 PNG 光栅图像转换为 JPEG 格式可减小文件大小,从而使图像在网站上加载更快并占用更少的存储空间。
将有损的 JPEG 光栅图像转换为无损的 PNG 光栅图像,可避免进一步的代际损失,并支持 Alpha 通道透明度。
将 JPEG 图像转换为 WebP,可能在视觉质量相近时减小文件体积;实际结果因图像内容和编码设置而异。
将 WebP 转换为 JPEG,可以让静态图像更容易用于不支持 WebP 的软件;JPEG 不保留透明度或动画。
将 HEIC 照片转换为 JPEG 图像,可把 Apple 的默认相机格式转换成旧版软件和浏览器广泛支持的栅格图像文件。
将 AVIF 图像转换为 JPEG,有助于在不支持 AV1 Image File Format 的旧软件中使用。
通过先进的现代视频编码技术,将传统的 JPEG 图像转换为 AVIF 图像,在保持高视觉保真度的同时大幅缩减文件大小。
将体积庞大的 Adobe Photoshop PSD 作品转换为体积小巧、易于查看的 JPEG 图像。