Последна актуализация: 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 + LLMs. Тази стъпка е по избор, но силно се препоръчва за големи библиотеки.

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 % при запазване на качеството — критично за мобилната честотна лента.
AI‑генерирани метаданниИнструменти като ComicTagger сега използват OCR + LLM, за да попълнят ComicInfo.xml.По‑добра откриваемост, автоматизирано етикетиране и организация на библиотеката.
Приложения за четене с облачно синхронизиранеChunky, Perfect Viewer и други синхронизират напредъка чрез Firebase/iCloud.Безпроблемно четене на телефони, таблети и настолни компютри.
Инициатива за стандартизация (CBZ v2.0)DCI предлага задължителен manifest.json, мулти‑резолюционни ресурси и <DRM> флаг.Ще направи CBZ по‑устойчив за устройства с висока DPI и опционално управление на правата.
Съзнателност за сигурносттаАтаките тип Zip‑bomb (малък ZIP → гигабайти при разархивиране) са реална заплаха.Четеците сега налагат ограничения за размер на извличане и използват безопасни библиотеки (например zipfile на Python с проверки).

Съвет за сигурност за разработчиците

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


Как четецът всъщност рендерира CBZ

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

Този процес е причината CBZ да се усеща толкова бърз и отзивчив, колкото нативен PDF, но същевременно остава напълно отворен и редактиран.


Крайният извод: Елегантността на CBZ се крие в простотата му — обикновен ZIP, който всеки може да отвори, редактира или преизползва. С опционални метаданни ComicInfo.xml, съвременни кодеци за изображения и нововъзникващи стандарти, той продължава да се развива, като остава верен на своите DRM‑без, крос‑платформени корени.