Cập nhật lần cuối: 28 Tháng Bảy, 2026

Inside the CBZ - Understanding the Anatomy of Digital Comics

TL;DR CBZ (Comic Book Zip) không gì hơn một tệp ZIP tiêu chuẩn mà gói một loạt các tệp hình ảnh tuần tự — cộng với siêu dữ liệu tùy chọn — thành một container truyện tranh không có DRM. Vì nó dựa trên định dạng ZIP phổ biến, bất kỳ công cụ nén nào cũng có thể mở, và các trình đọc chỉ cần sắp xếp các hình ảnh theo thứ tự alphabet để hiển thị các trang theo đúng thứ tự. Các CBZ hiện đại thường bao gồm ComicInfo.xml để cung cấp dữ liệu thư viện phong phú, sử dụng các codec hình ảnh hiệu quả như WebP/AVIF, và thậm chí nhúng HTML cho các truyện tranh “tăng cường” tương tác.


CBZ là gì chính xác?

  • Tên: Comic Book Zip – một tệp ZIP với phần mở rộng .cbz.
  • Kiểu MIME: application/vnd.comicbook+zip (đăng ký với IANA vào năm 2012).
  • Nguồn gốc: Được cộng đồng ComicRack (2005‑2008) phổ biến như một giải pháp thay thế mã nguồn mở cho các định dạng độc quyền như CBR hoặc PDF.
  • Đa nền tảng: Có thể mở bằng bất kỳ công cụ tương thích ZIP nào (7‑Zip, WinRAR, macOS Archive Utility, Linux unzip). Không cần phần mềm đặc biệt để kiểm tra nội dung.

Trong thực tế, CBZ chỉ là một thư mục chứa các hình ảnh (JPEG, PNG, WebP, v.v.) được nén zip và đổi tên. Sự đơn giản đó là lý do tại sao nó trở thành tiêu chuẩn de‑facto cho truyện tranh kỹ thuật số trên PC, máy tính bảng và điện thoại.


Bên trong một CBZ: Cấu trúc tệp

Một CBZ được cấu trúc đúng tuân theo một hệ thống phân cấp phẳng—không có thư mục con thừa—để người đọc có thể tìm trang ngay lập tức. Dưới đây là một cây thư mục điển hình:

MyComic.cbz
│
├─ 001.jpg          ← first page (front cover)
├─ 002.jpg
├─ 003.jpg
│   …
├─ 050.jpg          ← last page (back cover)
├─ ComicInfo.xml    ← optional rich metadata
└─ cover.jpg        ← optional thumbnail for library views

Các yếu tố chính

Phần tửNó là gìTại sao nó quan trọng
Các tệp hình ảnh tuần tựĐặt tên để chúng sắp xếp theo thứ tự chữ cái (001.jpg, 002.jpg, …)Đảm bảo thứ tự trang đúng trên mọi trình đọc.
Định dạng hình ảnhJPEG, PNG, GIF, WebP, AVIF, BMP, TIFFXác định kích thước tệp, độ trung thực hình ảnh và khả năng tương thích thiết bị.
ComicInfo.xmlXML tùy chọn theo chuẩn ComicRackLưu trữ tiêu đề, tác giả, series, số phát hành, ngôn ngữ, các cờ loại trang, và thậm chí dữ liệu hình thu nhỏ. Cho phép quản lý thư viện mạnh mẽ.
Hình ảnh bìacover.jpg/cover.png ở thư mục gốcĐược nhiều ứng dụng sử dụng làm ảnh thu nhỏ của truyện tranh trong các bộ sưu tập.
Tên tệp UnicodeZIP hiện đại hỗ trợ UTF‑8Cần thiết cho tiêu đề không phải Latinh và truyện tranh quốc tế.
Thư mục trung tâm ZIPChỉ mục ở cuối tệp nénCác trình đọc đọc phần này để nhanh chóng xây dựng danh sách trang; nếu bị hỏng ở đây có thể làm hỏng toàn bộ CBZ.

Vì tệp nén chỉ nén các hình ảnh đã được nén sẵn, kích thước cuối cùng thường chỉ là tổng của các tệp gốc cộng thêm vài kilobyte dung lượng thừa của ZIP (< 5 %).


Phép thuật siêu dữ liệu: ComicInfo.xml và Cờ loại trang

Trong khi một CBZ hoạt động hoàn hảo mà không cần bất kỳ tệp bổ sung nào, việc thêm một ComicInfo.xml biến một chồng ảnh đơn giản thành một truyện tranh có thể tìm kiếm, được mô tả chi tiết. Dưới đây là một ví dụ tối thiểu:

<?xml version="1.0" encoding="utf-8"?>
<ComicInfo>
  <Title>Starship Voyager</Title>
  <Series>Space Adventures</Series>
  <Number>12</Number>
  <Writer>Jane Doe</Writer>
  <Penciller>John Smith</Penciller>
  <Inker>Alex Lee</Inker>
  <Publisher>Galaxy Press</Publisher>
  <Year>2024</Year>
  <LanguageISO>en</LanguageISO>
  <PageCount>50</PageCount>
  <Pages>
    <Page Image="001.jpg" Type="FrontCover"/>
    <Page Image="002.jpg" Type="Story"/>
    <Page Image="025.jpg" Type="DoublePage"/>
    <Page Image="050.jpg" Type="BackCover"/>
  </Pages>
</ComicInfo>

Tại sao phải bận tâm?

  • Công cụ thư viện (ComicRack, Calibre, v.v.) có thể sắp xếp, lọc và tìm kiếm dựa trên các trường này.
  • Cờ loại trang (FrontCover, BackCover, Advert, Deleted, v.v.) cho phép người đọc ẩn quảng cáo, chỉ hiển thị các trang truyện, hoặc hiển thị ảnh thu nhỏ bìa tùy chỉnh.
  • Chuẩn bị cho tương lai – Khi sáng kiến Digital Comics Initiative soạn thảo đặc tả CBZ v2.0, một tệp manifest (manifest.json) có thể trở thành bắt buộc, nhưng các trình đọc hiện có vẫn sẽ hỗ trợ ComicInfo.xml.

Tạo và Chuyển đổi Tệp CBZ (Bước‑bước)

1. Chuẩn bị hình ảnh của bạn

  • Xuất mỗi trang truyện tranh dưới dạng hình ảnh.
  • Đặt tên chúng bằng các số có đệm không (001.jpg, 002.jpg, …) để đảm bảo sắp xếp đúng.
  • Chọn codec phù hợp với khán giả của bạn: JPEG cho kích thước nhỏ nhất, PNG cho hình ảnh không mất dữ liệu, WebP/AVIF cho nén hiện đại, chất lượng cao.

2. (Tùy chọn) Tạo siêu dữ liệu

Các công cụ như ComicTagger, cbr2cbz, hoặc các script tùy chỉnh có thể tự động điền vào ComicInfo.xml bằng OCR + LLMs. Bước này là tùy chọn nhưng rất được khuyến nghị cho các thư viện lớn.

3. Nén lại

# Navigate to the folder containing the pages
cd /path/to/pages

# Create a CBZ without extra compression (JPEGs are already compressed)
zip -0 -r ../MyComic.cbz *.jpg *.png ComicInfo.xml cover.jpg
# -0 = store (no compression) – speeds up the process

Đổi tên file .zip kết quả thành .cbz nếu trình nén của bạn không tự động thực hiện.

4. Xác minh Lưu trữ

import zipfile, pathlib, sys

def list_pages(cbz_path: pathlib.Path):
    with zipfile.ZipFile(cbz_path, 'r') as z:
        # Guard against zip‑bombs (max 500 MB uncompressed)
        total = sum(z.getinfo(name).file_size for name in z.namelist())
        if total > 500 * 1024 * 1024:
            raise ValueError("Archive too large")
        images = [n for n in z.namelist()
                  if n.lower().endswith(('.jpg', '.jpeg', '.png', '.webp', '.avif'))]
        images.sort()  # natural alphabetical order
        return images

if __name__ == "__main__":
    cbz = pathlib.Path(sys.argv[1])
    for page in list_pages(cbz):
        print(page)

Chạy python list_pages.py MyComic.cbz sẽ in ra danh sách tên tệp trang sạch sẽ và có thứ tự.

5. Chuyển đổi sang PDF (nếu bạn cần phiên bản có thể in)

unzip -q MyComic.cbz -d tmp_pages
convert tmp_pages/*.jpg MyComic.pdf   # ImageMagick's `convert`
rm -r tmp_pages

Xu hướng, Bảo mật và Tương lai của CBZ

Xu hướngĐiều gì đang xảy raẢnh hưởng đến CBZ
Phân phối ưu tiên webNhà xuất bản lưu trữ CBZ trên đám mây với các URL đã ký trước.Tải xuống nhanh hơn, không có DRM; tự xuất bản dễ dàng hơn.
Truyện tranh lai/tương tácThêm index.html + các tài nguyên vào trong tệp lưu trữ tạo ra các truyện tranh “nâng cao” (âm thanh, video, HTML5).Các trình đọc hỗ trợ chế độ xem web có thể hiển thị các lớp đa phương tiện.
Áp dụng WebP & AVIF~15 % các bản phát hành mới (2024) sử dụng các codec này.Giảm kích thước 30‑50 % trong khi vẫn giữ chất lượng—cực kỳ quan trọng cho băng thông di động.
Siêu dữ liệu do AI tạoCác công cụ như ComicTagger hiện đang sử dụng OCR + LLM để điền vào ComicInfo.xml.Khả năng khám phá tốt hơn, gắn thẻ tự động và tổ chức thư viện.
Ứng dụng đọc đồng bộ đám mâyChunky, Perfect Viewer và các ứng dụng khác đồng bộ tiến độ qua Firebase/iCloud.Đọc liền mạch trên điện thoại, máy tính bảng và máy tính để bàn.
Đẩy chuẩn hoá (CBZ v2.0)DCI đề xuất một manifest.json bắt buộc, tài nguyên đa độ phân giải và một cờ <DRM>.Sẽ làm cho CBZ mạnh mẽ hơn cho các thiết bị DPI cao và quản lý quyền tùy chọn.
Nhận thức bảo mậtCác cuộc tấn công Zip‑bomb (tệp ZIP nhỏ → gigabyte khi giải nén) là một mối đe dọa thực sự.Các trình đọc hiện nay áp dụng giới hạn kích thước giải nén và sử dụng các thư viện an toàn (ví dụ, zipfile của Python có kiểm tra).

Mẹo Bảo mật cho Nhà phát triển

Luôn xác thực tổng kích thước chưa nén trước khi giải nén một CBZ. Một kiểm tra đơn giản (như trong đoạn mã Python) ngăn chặn các tệp lưu trữ độc hại làm cạn kiệt không gian đĩa hoặc bộ nhớ.


Cách Trình Đọc Thực Sự Hiển Thị CBZ

  1. Mở tệp lưu trữ – Ứng dụng đọc thư mục trung tâm của ZIP để có chỉ mục nhanh các mục.
  2. Lọc các tệp hình ảnh – Các mục không phải hình ảnh (ComicInfo.xml, __MACOSX/, v.v.) sẽ bị bỏ qua.
  3. Sắp xếp theo thứ tự chữ cái – Do đặt tên có số 0 ở đầu, danh sách đã sắp xếp khớp với thứ tự trang mong muốn.
  4. Phân tích siêu dữ liệu – Nếu tồn tại ComicInfo.xml, trình đọc sẽ trích xuất các cờ loại trang, tiêu đề, tác giả, v.v., và có thể ẩn các trang được đánh dấu là Advert hoặc Deleted.
  5. Hiển thị trang – Hình ảnh được giải mã (thường với bộ giải mã JPEG/WebP tăng tốc phần cứng trên các máy tính bảng e‑ink hiện đại) và hiển thị từng trang một, với việc tải trước một vài trang tiếp theo để cuộn mượt mà.
  6. Lưu trạng thái – Vị trí đọc, dấu trang và chú thích được lưu cục bộ hoặc đồng bộ lên đám mây, tùy thuộc vào ứng dụng.

Đó là lý do tại sao CBZ cảm giác nhanh và phản hồi như một PDF gốc, nhưng vẫn hoàn toàn mở và có thể chỉnh sửa.


Kết luận: CBZ’s elegance lies in its simplicity—a plain ZIP that anyone can open, edit, or repurpose. With optional ComicInfo.xml metadata, modern image codecs, and emerging standards, it continues to evolve while staying true to its DRM‑free, cross‑platform roots.