Viimeksi päivitetty: 28 heinäkuuta 2026

Inside the CBZ - Understanding the Anatomy of Digital Comics

TL;DR CBZ (Comic Book Zip) ei ole muuta kuin tavallinen ZIP-arkisto, joka pakkaa peräkkäisiä kuvatiedostoja—plus valinnaista metadataa—yksiin, DRM‑vapaaseen sarjakuva‑konttiin. Koska se perustuu yleisesti käytettyyn ZIP-muotoon, mikä tahansa pakkaustyökalu voi avata sen, ja lukijat lajittelevat kuvat aakkosjärjestykseen näyttääkseen sivut oikeassa järjestyksessä. Nykyiset CBZ:t sisältävät usein ComicInfo.xml-tiedoston rikkaaseen kirjastotietoon, käyttävät tehokkaita kuvakodekkeja kuten WebP/AVIF, ja jopa upottavat HTML:n interaktiivisia “parannettuja” sarjakuvia varten.


Mikä tarkalleen ottaen on CBZ?

  • Nimi: Comic Book Zip – ZIP‑tiedosto, jonka tiedostopääte on .cbz.
  • MIME-tyyppi: application/vnd.comicbook+zip (rekisteröity IANA:ssa vuonna 2012).
  • Alkuperä: Suosittui ComicRack‑yhteisön (2005‑2008) kautta avoimen lähdekoodin vaihtoehtona suljetuille formaateille kuten CBR tai PDF.
  • Monialustainen: Avattavissa millä tahansa ZIP-yhteensopivalla työkalulla (7‑Zip, WinRAR, macOS Archive Utility, Linux unzip). Erillistä ohjelmistoa ei tarvita sisällön tarkastelemiseen.

Käytännössä CBZ on vain kansio, jossa on kuvia (JPEG, PNG, WebP, jne.) pakattuna zip‑tiedostoon ja uudelleennimettynä. Tämä yksinkertaisuus on syy siihen, miksi se on de‑facto -standardi digitaalisille sarjakuville PC:illä, tableteilla ja puhelimilla.


CBZ:n sisällä: Tiedostorakenne

Hyvin muodostettu CBZ noudattaa tasapintaista hierarkiaa—ei ylimääräistä sisäkkäisyyttä—jotta lukijat voivat löytää sivut välittömästi. Alla on tyypillinen puunäkymä:

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

Keskeiset elementit

ElementtiMitä se onMiksi se on tärkeä
Peräkkäiset kuvatiedostotNimetty niin, että ne lajitellaan aakkosjärjestykseen (001.jpg, 002.jpg, …)Varmistaa oikean sivujärjestyksen kaikissa lukijoissa.
KuvamuotoJPEG, PNG, GIF, WebP, AVIF, BMP, TIFFMäärittää tiedoston koon, visuaalisen tarkkuuden ja laitteiden yhteensopivuuden.
ComicInfo.xmlValinnainen XML ComicRack-skeeman mukaisestiTallentaa otsikon, tekijän, sarjan, numeron, kielen, sivutyypin liput ja jopa pikkukuvan tiedot. Mahdollistaa tehokkaan kirjaston hallinnan.
Kansikuvacover.jpg/cover.png juurihakemistossaMonien sovellusten käyttämä sarjakuvan pikkukuva gallerioissa.
Unicode‑tiedostonimetModerni ZIP tukee UTF‑8Välttämätön ei‑latinalaisille otsikoille ja kansainvälisille sarjakuville.
ZIP‑keskusrekisteriIndeksi arkiston lopussaLukijat lukevat tätä rakentaakseen sivulistan nopeasti; korruptio tässä voi rikkoa koko CBZ:n.

Koska arkisto pakkaa vain jo pakattuja kuvia, lopullinen koko on yleensä vain alkuperäisten tiedostojen summa plus muutama kilotavua ZIP‑ylitietoa (< 5 %).


Metatietojen taika: ComicInfo.xml ja sivutyypin liput

Vaikka CBZ toimii täydellisesti ilman ylimääräisiä tiedostoja, ComicInfo.xml-tiedoston lisääminen muuttaa yksinkertaisen kuvapinon haettavaksi, runsaasti kuvattavaksi sarjakuvaksi. Tässä on minimaalinen esimerkki:

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

Miksi vaivata?

  • Kirjastotyökalut (ComicRack, Calibre, jne.) voivat järjestää, suodattaa ja hakea näiden kenttien perusteella.
  • Sivutyypin liput (FrontCover, BackCover, Advert, Deleted, jne.) antavat lukijoiden piilottaa mainokset, näyttää vain tarinasivut tai näyttää mukautetun kansikuvan pikkukuvan.
  • Tulevaisuudenkestävyys – Kun Digital Comics Initiative laatii CBZ v2.0 -specifikaatiota, manifestitiedosto (manifest.json) saattaa tulla pakolliseksi, mutta nykyiset lukijat kunnioittavat edelleen ComicInfo.xml-tiedostoa.

CBZ-tiedostojen luominen ja muuntaminen (askel askeleelta)

1. Valmistele kuvat

  • Vie jokainen sarjakuvasivu kuvana.
  • Nimeä ne nollalla täytetyillä numeroilla (001.jpg, 002.jpg, …) varmistaaksesi oikean lajittelun.
  • Valitse yleisöllesi sopiva koodekki: JPEG pienimmän koon saavuttamiseksi, PNG häviöttömään taiteeseen, WebP/AVIF moderniin, korkealaatuiseen pakkaamiseen.

2. (Valinnainen) Luo metatiedot

Työkalut kuten ComicTagger, cbr2cbz tai mukautetut skriptit voivat automaattisesti täyttää ComicInfo.xml OCR:n + LLM:ien avulla. Tämä vaihe on valinnainen, mutta erittäin suositeltava suurille kirjastoille.

3. Pakkaa se

# 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

Nimeä syntynyt .zip uudelleen .cbz:ksi, jos pakkausohjelmasi ei tehnyt sitä automaattisesti.

4. Tarkista arkisto

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)

Komennon python list_pages.py MyComic.cbz suorittaminen tulostaa puhtaan, järjestetyn luettelon sivutiedostonimistä.

5. Muunna PDF:ksi (jos tarvitset tulostettavan version)

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

Trendit, turvallisuus ja CBZ:n tulevaisuus

TrendMitä tapahtuuVaikutus CBZ:ään
Web‑first-jakeluJulkaisijat isännöivät CBZ-tiedostoja pilvitallennuksessa esiallekirjoitetuilla URL-osoitteilla.Nopeammat, DRM‑vapaat lataukset; helpompi itsejulkaisu.
Hybrid/ interaktiiviset sarjakuvatLisäämällä index.html + resurssit arkistoon luodaan “parannettuja” sarjakuvia (audio, video, HTML5).Lukijat, jotka tukevat web-näkymää, voivat renderöidä multimedia-kerroksia.
WebP- ja AVIF-tekniikoiden käyttöönotto~15 % uusista julkaisuista (2024) käyttää näitä koodekkeja.30‑50 % koon pienennys säilyttäen laadun—tärkeä mobiililaajakaistalle.
AI‑luotu metadataTyökalut kuten ComicTagger käyttävät nyt OCR:ää + LLM:itä täyttääkseen ComicInfo.xml.Parempi löydettävyys, automaattinen merkintä ja kirjaston organisointi.
Pilvi‑synkronoitavat lukusovelluksetChunky, Perfect Viewer ja muut synkronoivat edistymisen Firebase‑/iCloud‑palvelun kautta.Saumaton lukeminen puhelimilla, tableteilla ja työpöydillä.
Standardisoinnin edistäminen (CBZ v2.0)DCI ehdottaa pakollista manifest.json‑tiedostoa, moniresoluutioisia aineistoja ja <DRM>‑lippua.Tekee CBZ:stä kestävämmän korkean DPI:n laitteille ja valinnaisen oikeuksien hallinnan.
TurvallisuustietoisuusZip‑pommi-hyökkäykset (pieni ZIP → gigatavuja purettuna) ovat todellinen uhka.Lukijat asettavat nyt pakkausten purkukoon rajoituksia ja käyttävät turvallisia kirjastoja (esim. Pythonin zipfile tarkistuksilla).

Turvallisuusvinkki kehittäjille

Varmista aina pakatun tiedoston kokonaispurkukoko ennen CBZ:n purkamista. Yksinkertainen tarkistus (kuten Python‑esimerkissä) estää haitallisia arkistoja kuluttamasta levytilaa tai muistia.


Kuinka lukija oikeasti renderöi CBZ:n

  1. Avaa arkisto – Sovellus lukee ZIP‑keskushakemiston saadakseen nopean indeksin merkinnöistä.
  2. Suodata kuvatiedostot – Ei‑kuva-merkinnät (ComicInfo.xml, __MACOSX/, jne.) ohitetaan.
  3. Lajittele aakkosjärjestykseen – Nollilla täytetyn nimeämisen vuoksi lajiteltu lista vastaa haluttua sivujärjestystä.
  4. Jäsennä metatiedot – Jos ComicInfo.xml on olemassa, lukija poimii sivutyypin liput, otsikon, tekijän jne., ja voi piilottaa sivut, jotka on merkitty Advert tai Deleted.
  5. Renderöi sivut – Kuvat puretaan (usein laitteistokiihdytetyillä JPEG/WebP‑purkajilla nykyaikaisissa e‑ink‑tableteissa) ja näytetään yksi‑kerrallaan, ennakoiden seuraavat muutamat sivut sujuvaa vieritystä varten.
  6. Säilytä tila – Lukupaikka, kirjanmerkit ja annotaatiot tallennetaan paikallisesti tai synkronoidaan pilveen, sovelluksesta riippuen.

Se on syy siihen, miksi CBZ tuntuu yhtä nopealta ja reagoivalta kuin natiivi PDF, mutta pysyy täysin avoimena ja muokattavana.


Yhteenveto: CBZ:n eleganssi piilee sen yksinkertaisuudessa — tavallinen ZIP, jonka kuka tahansa voi avata, muokata tai käyttää uudelleen. Valinnaisen ComicInfo.xml -metatiedon, nykyaikaisten kuvakoodekkien ja nousevien standardien avulla se jatkaa kehittymistään pysyen uskollisena DRM‑vapaalle, monialustaiselle alkuperälleen.