Последнее обновление: 28 июля 2026 г.

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
- Откройте архив – Приложение читает центральный каталог ZIP, чтобы быстро получить индекс записей.
- Фильтровать файлы изображений – Неиcтовые записи (
ComicInfo.xml,__MACOSX/и т.д.) игнорируются. - Сортировать по алфавиту – Благодаря нулевому дополнению в именах, отсортированный список соответствует задуманному порядку страниц.
- Разобрать метаданные – Если существует
ComicInfo.xml, читатель извлекает флаги типа страниц, название, автора и т.д., и может скрывать страницы, помеченные какAdvertилиDeleted. - Отображение страниц – Изображения декодируются (часто с помощью аппаратно‑ускоренных декодеров JPEG/WebP на современных e‑ink планшетах) и отображаются поочерёдно, с предварительной загрузкой нескольких следующих страниц для плавной прокрутки.
- Сохранение состояния – Позиция чтения, закладки и аннотации сохраняются локально или синхронизируются с облаком, в зависимости от приложения.
Именно поэтому конвейер делает CBZ таким же быстрым и отзывчивым, как нативный PDF, но при этом полностью открытым и редактируемым.
Итог: Элегантность CBZ заключается в его простоте — обычный ZIP, который любой может открыть, отредактировать или переиспользовать. С необязательными метаданными ComicInfo.xml, современными кодеками изображений и новыми стандартами, он продолжает развиваться, оставаясь верным своим DRM‑свободным, кросс‑платформенным корням.