CBZ 文件是一种将漫画、图像小说或漫画单行本保存为普通 ZIP 压缩包的格式,每页一张图片。它本质上并不是一种新格式:就是你已经熟悉的 ZIP,只是换了一个扩展名,方便漫画阅读器识别。这个约定起源于漫画扫描社区,并随着早期阅读器(如 CDisplay)而流行开来,这类阅读器只是把文件夹里的图片按顺序一张张显示。同样的思路也被应用到其他压缩格式中,于是就有了 CBR(RAR)、CB7(7-Zip)和 CBT(tar)。
CBZ 文件如何存储其页面
在 CBZ 里,你会看到图像文件,通常是 JPEG,有时是用于线稿的 PNG,或是在较新的压缩包中出现的 WebP。它没有独立的页面列表:阅读器会对文件名排序,并按这个顺序显示页面,这就是为什么页面名称会带前导零,比如 page001.jpg。这也意味着任何被留在压缩包里的零散文件都有可能被当作一页显示出来。
ZIP 封装本身是无损压缩,但对漫画几乎“压”不动,因为 JPEG 和 PNG 页面已经是压缩格式;很多 CBZ 文件实际上只是直接存储页面,不再进行额外压缩。因此,这本书的画质完全取决于其中图像本身的质量。扫描成 JPEG 的页面是有损的,每次重新保存都会再损失一点质量,而 PNG 页面则能完整保留扫描内容,但体积会大得多。由于容器就是普通 ZIP,任何解压应用都可以打开 CBZ,要修正错误的页面顺序,只需重命名文件并重新打包即可。
CBZ 包含哪些元数据
在元数据方面,CBZ 比较薄弱,原因值得说明清楚。ZIP 的设计目标是存放文件,而不是描述一本书,所以 CBZ 中没有标准化的位置来保存标题、作者或期号。报告从压缩包本身能读到的只是一些记录信息,每页对应一行:归档后的文件名(包括其所在的文件夹路径)、压缩前后大小、用于确认页面完整性的 CRC-32 校验值,以及修改日期和时间。
社区用一个放在页面旁边的小型 XML 文件来弥补这一空缺。ComicInfo.xml 由 ComicRack 阅读器引入,如今已经被许多应用写入,是最常见的一种。它可以保存 Series、Title、Number、Volume、Count、Year、Month 和 Day,署名信息(Writer、Penciller、Inker、Colorist、Letterer、CoverArtist、Editor)、Publisher、Imprint、Genre、LanguageISO、PageCount、AgeRating、BlackAndWhite、Manga、Characters、Teams、Locations、StoryArc、Summary、Web,以及自由文本的 Notes 和 ScanInformation。也有少数应用会改写成另一种文件 comet.xml。二者都不是官方标准的一部分,所以有些阅读器会完全忽略它们。
CBZ 中的个人信息通常隐藏在页面里,而不是存放在压缩包结构中。照片或扫描图会携带 EXIF 数据,即嵌在图像内部的一块设备信息,因此某一页可能包含扫描仪或相机的品牌和型号、保存它的软件、拍摄或生成的日期,如果是手机拍摄,还可能带有 GPS 坐标。Notes 和 ScanInformation 字段传统上会写明是谁制作了扫描。而存储的文件路径和每页的时间戳则可能暴露出创建该压缩包的电脑文件夹结构,有时甚至会泄露用户账户名。
何时使用 CBZ
当你手头是一页一页的画面,需要按固定顺序逐页显示时,CBZ 是合适的容器。最显而易见的替代方案是 PDF,它能把同样的页面打包成一个文档,在几乎所有设备上打开,并可包含文本层、书签和完整的文档元数据,从而让 PDF 漫画可以搜索内容。CBZ 没有可供搜索的文本层。与 CBR 相比,两者差异在于底层使用的压缩格式:ZIP 是开放的,并内置于每个操作系统,而创建 RAR 则需要特定软件,所以 CBZ 更容易创建、修复,并在很多年后仍能打开。