Останнє оновлення: 28 липня, 2026

Inside the CBZ - Understanding the Anatomy of Digital Comics

TL;DR CBZ (Comic Book Zip) — це не що інше, як стандартний ZIP‑архів, який об’єднує серію послідовних файлів‑зображень—плюс додаткові метадані—в один контейнер коміксів без DRM. Оскільки він базується на поширеному форматі ZIP, будь‑який інструмент архівації може його відкрити, а читачі просто сортують зображення за алфавітом, щоб показати сторінки у правильному порядку. Сучасні CBZ часто включають ComicInfo.xml для багатих бібліотечних даних, використовують ефективні кодеки зображень, такі як WebP/AVIF, і навіть вбудовують HTML для інтерактивних «розширених» коміксів.


Що саме таке CBZ?

  • Назва: Comic Book Zip – ZIP‑файл з розширенням .cbz.
  • Тип MIME: application/vnd.comicbook+zip (зареєстровано в IANA у 2012 році).
  • Походження: Популяризовано спільнотою ComicRack (2005‑2008) як відкриту альтернативу пропрієтарним форматам, таким як CBR або PDF.
  • Крос‑платформенність: Відкривається будь‑яким інструментом, сумісним з ZIP (7‑Zip, WinRAR, macOS Archive Utility, Linux unzip). Спеціальне програмне забезпечення не потрібно для перегляду вмісту.

На практиці CBZ — це просто папка з зображеннями (JPEG, PNG, WebP тощо), запакована у zip і перейменована. Така простота є причиною того, що це де‑факто стандарт для цифрових коміксів на ПК, планшетах і телефонах.


Всередині CBZ: структура файлу

Коректно сформований CBZ дотримується плоскої ієрархії—без зайвого вкладення—щоб читачі могли миттєво знаходити сторінки. Нижче — типове дерево каталогів:

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

Ключові елементи

ЕлементЩо цеЧому це важливо
Послідовні файли зображеньНазвані так, щоб сортуватися в алфавітному порядку (001.jpg, 002.jpg, …)Гарантує правильний порядок сторінок у всіх читачів.
Формат зображенняJPEG, PNG, GIF, WebP, AVIF, BMP, TIFFВизначає розмір файлу, візуальну якість та сумісність пристроїв.
ComicInfo.xmlНеобов’язковий XML, що відповідає схемі ComicRackЗберігає назву, автора, серію, номер випуску, мову, прапорці типу сторінки та навіть дані мініатюри. Забезпечує потужне керування бібліотекою.
Обкладинкаcover.jpg/cover.png у кореневій теціВикористовується багатьма додатками як мініатюра коміксу в галереях.
Імена файлів UnicodeСучасний ZIP підтримує UTF‑8Необхідно для назв не‑латинською та міжнародних коміксів.
Центральний каталог ZIPІндекс у кінці архівуЧитачі читають це, щоб швидко сформувати список сторінок; пошкодження тут може зламати весь CBZ.

Оскільки архів стискає лише вже стиснені зображення, кінцевий розмір зазвичай дорівнює лише сумі оригінальних файлів плюс кілька кілобайт накладних витрат ZIP (< 5 %).


Магія метаданих: ComicInfo.xml та прапорці типу сторінки

Хоча CBZ працює ідеально без додаткових файлів, додавання ComicInfo.xml перетворює просту стеку зображень у придатний до пошуку, багатодокументований комікс. Ось мінімальний приклад:

<?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>

Навіщо це?

  • Інструменти бібліотеки (ComicRack, Calibre тощо) можуть сортувати, фільтрувати та шукати за цими полями.
  • Позначки типу сторінок (FrontCover, BackCover, Advert, Deleted тощо) дозволяють читачам приховувати рекламу, показувати лише сторінки історії або відображати власну мініатюру обкладинки.
  • Забезпечення майбутньої сумісності – Оскільки Digital Comics Initiative розробляє специфікацію CBZ v2.0, файл маніфесту (manifest.json) може стати обов’язковим, проте існуючі читачі все ще підтримуватимуть ComicInfo.xml.

Створення та конвертація CBZ‑файлів (крок за кроком)

1. Підготуйте ваші зображення

  • Експортуйте кожну сторінку комікса як зображення.
  • Назвіть їх числами з нульовим заповненням (001.jpg, 002.jpg, …), щоб забезпечити правильне сортування.
  • Виберіть кодек, який підходить вашій аудиторії: JPEG для найменшого розміру, PNG для без втрат, WebP/AVIF для сучасного, високоякісного стиснення.

2. (Необов’язково) Створити метадані

Інструменти, такі як ComicTagger, cbr2cbz, або власні скрипти, можуть автоматично заповнювати ComicInfo.xml, використовуючи OCR + LLM. Цей крок є необов’язковим, але дуже рекомендованим для великих бібліотек.

3. Стисніть його

# 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

Перейменуйте отриманий .zip у .cbz, якщо ваш архіватор не зробив це автоматично.

4. Перевірте архів

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)

Запуск python list_pages.py MyComic.cbz має вивести чистий, впорядкований список імен файлів сторінок.

5. Конвертувати у PDF (якщо вам потрібна друкована версія)

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

Тенденції, безпека та майбутнє CBZ

ТенденціяЩо відбуваєтьсяВплив на CBZ
Розповсюдження спочатку в інтернетіВидавці розміщують CBZ-файли в хмарному сховищі з попередньо підписаними URL-адресами.Швидші, без DRM завантаження; простіше самовидавництво.
Гібридні/інтерактивні коміксиДодавання index.html + ресурсів всередині архіву створює “розширені” комікси (аудіо, відео, HTML5).Читачі, які підтримують веб‑перегляд, можуть відображати мультимедійні шари.
Впровадження WebP та AVIF~15 % нових випусків (2024) використовують ці кодеки.Зменшення розміру на 30‑50 % при збереженні якості—критично важливо для мобільної пропускної здатності.
Метадані, створені ШІІнструменти, такі як ComicTagger, тепер використовують OCR + LLM для заповнення ComicInfo.xml.Краща виявленість, автоматичне тегування та організація бібліотеки.
Додатки для читання з хмарною синхронізацієюChunky, Perfect Viewer та інші синхронізують прогрес через Firebase/iCloud.Безшовне читання на телефонах, планшетах та настільних комп’ютерах.
Рух до стандартизації (CBZ v2.0)DCI пропонує обов’язковий manifest.json, багатороздільні ресурси та прапорець <DRM>.Зробить CBZ більш надійним для пристроїв з високою роздільною здатністю та забезпечить необов’язкове управління правами.
Обізнаність про безпекуАтаки типу Zip‑bomb (маленький ZIP → гігабайти після розпакування) становлять реальну загрозу.Читачі тепер застосовують обмеження розміру розпакування та використовують безпечні бібліотеки (наприклад, zipfile у Python з перевірками).

Порада щодо безпеки для розробників

Завжди перевіряйте загальний розмір розпакованих даних перед розпакуванням CBZ. Простий контроль (як показано у фрагменті коду Python) запобігає виснаженню дискового простору або пам’яті шкідливими архівами.


Як читач фактично відображає CBZ

  1. Відкрити архів – Додаток читає центральний каталог ZIP, щоб швидко отримати індекс записів.
  2. Фільтрувати файли зображень – Незаписані як зображення записи (ComicInfo.xml, __MACOSX/ тощо) ігноруються.
  3. Сортувати за алфавітом – Завдяки назві з нульовим заповненням, відсортований список відповідає запланованому порядку сторінок.
  4. Розбирати метадані – Якщо існує ComicInfo.xml, читач витягує прапорці типу сторінки, назву, автора тощо і може приховати сторінки, позначені як Advert або Deleted.
  5. Відображення сторінок – Зображення декодуються (часто за допомогою апаратно‑прискорених декодерів JPEG/WebP на сучасних e‑ink планшетах) і відображаються по одній, з попереднім завантаженням кількох наступних сторінок для плавної прокрутки.
  6. Збереження стану – Позиція читання, закладки та анотації зберігаються локально або синхронізуються з хмарою, залежно від застосунку.

Саме цей конвеєр пояснює, чому CBZ відчувається таким же швидким і реактивним, як нативний PDF, і водночас залишається повністю відкритим та редагованим.


Підсумок: Елегантність CBZ полягає у його простоті — простий ZIP, який будь-хто може відкрити, редагувати або перепризначити. Завдяки необов’язковим метаданим ComicInfo.xml, сучасним кодекам зображень та новим стандартам, він продовжує розвиватися, залишаючись вірним своїм DRM‑вільним, крос‑платформеним кореням.