Последнее обновление: 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?

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

На практике CBZ — это просто папка с изображениями (JPEG, PNG, WebP и т.д.), упакованная в zip и переименованная. Эта простота делает её де‑facto стандартом для цифровых комиксов на ПК, планшетах и телефонах.


Внутри 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 + LLMs. Этот шаг необязателен, но настоятельно рекомендуется для больших библиотек.

3. Упакуйте в ZIP

# 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 более надёжным для устройств с высоким DPI и позволит опциональное управление правами.
Осведомлённость о безопасностиАтаки типа zip‑бомбы (маленький ZIP → гигабайты после распаковки) представляют реальную угрозу.Читатели теперь ограничивают размер извлечения и используют безопасные библиотеки (например, zipfile в Python с проверками).

Совет по безопасности для разработчиков

Всегда проверяйте общий размер распакованных данных до извлечения CBZ. Простая проверка (как показано в фрагменте кода Python) предотвращает исчерпание дискового пространства или памяти вредоносными архивами.


Как читатель действительно отображает CBZ

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

Именно поэтому конвейер делает CBZ таким же быстрым и отзывчивым, как нативный PDF, но при этом полностью открытым и редактируемым.


Итог: Элегантность CBZ заключается в его простоте — обычный ZIP, который любой может открыть, отредактировать или переиспользовать. С необязательными метаданными ComicInfo.xml, современными кодеками изображений и новыми стандартами, он продолжает развиваться, оставаясь верным своим DRM‑свободным, кросс‑платформенным корням.