<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>CBZ on File Format Blog</title>
    <link>https://blog.fileformat.com/cs/tag/cbz/</link>
    <description>Recent content in CBZ on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>cs</language>
    <lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/cs/tag/cbz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Uvnitř CBZ – pochopení anatomie digitálních komiksů</title>
      <link>https://blog.fileformat.com/cs/ebook/inside-the-cbz-anatomy-of-digital-comics/</link>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/cs/ebook/inside-the-cbz-anatomy-of-digital-comics/</guid>
      <description>Zjistěte, co je soubor komiksu CBZ, jeho jednoduchá struktura ZIP, možnosti metadat a moderní formáty obrázků – otevíratelné na jakémkoli zařízení bez DRM.</description>
      <content:encoded><![CDATA[<p><strong>Poslední aktualizace</strong>: 28 července 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/inside-the-cbz-anatomy-of-digital-comics.webp#center"
         alt="Inside the CBZ - Understanding the Anatomy of Digital Comics"/> 
</figure>

<p><strong>TL;DR</strong> CBZ (Comic Book Zip) není nic jiného než standardní archiv ZIP, který spojí sérii sekvenčních souborů obrázků — plus volitelná metadata — do jednoho kontejneru komiksu bez DRM. Protože se opírá o všudypřítomný formát ZIP, může jej otevřít jakýkoli archivní nástroj a čtečky jednoduše seřadí obrázky abecedně, aby zobrazily stránky ve správném pořadí. Moderní CBZ často obsahují <code>ComicInfo.xml</code> pro bohatá knihovní data, používají efektivní kodeky obrázků jako WebP/AVIF a dokonce vkládají HTML pro interaktivní „vylepšené“ komiksy.</p>
<hr>
<h2 id="co-přesně-je-cbz">Co přesně je CBZ?</h2>
<ul>
<li><strong>Název</strong>: <em>Comic Book Zip</em> – ZIP soubor s příponou <code>.cbz</code>.</li>
<li><strong>MIME typ</strong>: <code>application/vnd.comicbook+zip</code> (registrováno u IANA v roce 2012).</li>
<li><strong>Původ</strong>: Popularizováno komunitou ComicRack (2005‑2008) jako open‑source alternativa k proprietárním formátům jako CBR nebo PDF.</li>
<li><strong>Víceplatforemní</strong>: Otevřitelné libovolným nástrojem kompatibilním se ZIP (7‑Zip, WinRAR, macOS Archive Utility, Linux <code>unzip</code>). Není vyžadován žádný speciální software pro prohlížení obsahu.</li>
</ul>
<p>V praxi je CBZ jen složka s obrázky (JPEG, PNG, WebP atd.) zkomprimovaná a přejmenovaná. Tato jednoduchost je důvodem, proč je de‑facto standardem pro digitální komiksy na PC, tabletech a telefonech.</p>
<hr>
<h2 id="uvnitř-cbz-struktura-souboru">Uvnitř CBZ: Struktura souboru</h2>
<p>Správně vytvořený CBZ má plochou hierarchii—žádné další vnoření—takže čtečky mohou okamžitě najít stránky. Níže je typický stromový pohled:</p>
<pre tabindex="0"><code>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
</code></pre><h3 id="klíčové-prvky">Klíčové prvky</h3>
<table>
<thead>
<tr>
<th>Prvek</th>
<th>Co to je</th>
<th>Proč je to důležité</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Sekvenční soubory obrázků</strong></td>
<td>Pojmenovány tak, aby se řadily abecedně (<code>001.jpg</code>, <code>002.jpg</code>, …)</td>
<td>Zaručuje správné pořadí stránek ve všech čtečkách.</td>
</tr>
<tr>
<td><strong>Formát obrázku</strong></td>
<td>JPEG, PNG, GIF, WebP, AVIF, BMP, TIFF</td>
<td>Určuje velikost souboru, vizuální věrnost a kompatibilitu zařízení.</td>
</tr>
<tr>
<td><strong>ComicInfo.xml</strong></td>
<td>Volitelný XML podle schématu ComicRack</td>
<td>Ukládá název, autora, sérii, číslo vydání, jazyk, příznaky typu stránky a dokonce data miniatur. Umožňuje výkonné spravování knihovny.</td>
</tr>
<tr>
<td><strong>Obrázek obálky</strong></td>
<td><code>cover.jpg</code>/<code>cover.png</code> v kořenovém adresáři</td>
<td>Používá se v mnoha aplikacích jako miniatura komiksu v galeriích.</td>
</tr>
<tr>
<td><strong>Unicode názvy souborů</strong></td>
<td>Moderní ZIP podporuje UTF‑8</td>
<td>Nezbytné pro ne‑latinské názvy a mezinárodní komiksy.</td>
</tr>
<tr>
<td><strong>ZIP centrální adresář</strong></td>
<td>Index na konci archivu</td>
<td>Čtečky si toto přečtou, aby rychle vytvořily seznam stránek; poškození zde může zničit celý CBZ.</td>
</tr>
</tbody>
</table>
<p>Protože archiv komprimuje pouze již komprimované obrázky, konečná velikost je obvykle jen součtem původních souborů plus několik kilobajtů režie ZIP (&lt; 5 %).</p>
<hr>
<h2 id="kouzlo-metadat-comicinfoxml-a-příznaky-typu-stránky">Kouzlo metadat: <code>ComicInfo.xml</code> a příznaky typu stránky</h2>
<p>Zatímco CBZ funguje perfektně bez jakýchkoli dalších souborů, přidání <code>ComicInfo.xml</code> promění jednoduchý zásobník obrázků na prohledávatelný, bohatě popsaný komiks. Zde je minimální příklad:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#75715e">&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;ComicInfo&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Title&gt;</span>Starship Voyager<span style="color:#f92672">&lt;/Title&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Series&gt;</span>Space Adventures<span style="color:#f92672">&lt;/Series&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Number&gt;</span>12<span style="color:#f92672">&lt;/Number&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Writer&gt;</span>Jane Doe<span style="color:#f92672">&lt;/Writer&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Penciller&gt;</span>John Smith<span style="color:#f92672">&lt;/Penciller&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Inker&gt;</span>Alex Lee<span style="color:#f92672">&lt;/Inker&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Publisher&gt;</span>Galaxy Press<span style="color:#f92672">&lt;/Publisher&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Year&gt;</span>2024<span style="color:#f92672">&lt;/Year&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;LanguageISO&gt;</span>en<span style="color:#f92672">&lt;/LanguageISO&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;PageCount&gt;</span>50<span style="color:#f92672">&lt;/PageCount&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Pages&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;001.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;FrontCover&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;002.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;Story&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;025.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;DoublePage&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;Page</span> <span style="color:#a6e22e">Image=</span><span style="color:#e6db74">&#34;050.jpg&#34;</span> <span style="color:#a6e22e">Type=</span><span style="color:#e6db74">&#34;BackCover&#34;</span><span style="color:#f92672">/&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/Pages&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/ComicInfo&gt;</span>
</span></span></code></pre></div><p><strong>Proč se obtěžovat?</strong></p>
<ul>
<li><strong>Nástroje knihovny</strong> (ComicRack, Calibre, atd.) mohou řadit, filtrovat a vyhledávat na základě těchto polí.</li>
<li><strong>Příznaky typu stránky</strong> (<code>FrontCover</code>, <code>BackCover</code>, <code>Advert</code>, <code>Deleted</code>, atd.) umožňují čtenářům skrýt reklamy, zobrazit jen stránky příběhu nebo zobrazit vlastní miniaturu obálky.</li>
<li><strong>Budoucí zabezpečení</strong> – Jak Digital Comics Initiative připravuje specifikaci CBZ v2.0, soubor manifestu (<code>manifest.json</code>) může být povinný, ale stávající čtečky budou i nadále podporovat <code>ComicInfo.xml</code>.</li>
</ul>
<hr>
<h2 id="vytváření-a-konverze-souborů-cbz-krok-za-krokem">Vytváření a konverze souborů CBZ (krok za krokem)</h2>
<h3 id="1-připravte-své-obrázky">1. Připravte své obrázky</h3>
<ul>
<li>Exportujte každou stránku komiksu jako obrázek.</li>
<li>Pojmenujte je pomocí nulou doplněných čísel (<code>001.jpg</code>, <code>002.jpg</code>, …), aby bylo zajištěno správné řazení.</li>
<li>Vyberte kodek, který vyhovuje vašemu publiku: JPEG pro nejmenší velikost, PNG pro bezztrátovou grafiku, WebP/AVIF pro moderní, vysoce kvalitní kompresi.</li>
</ul>
<h3 id="2-volitelné-vygenerujte-metadata">2. (Volitelné) Vygenerujte metadata</h3>
<p>Nástroje jako <strong>ComicTagger</strong>, <strong>cbr2cbz</strong> nebo vlastní skripty mohou automaticky vyplnit <code>ComicInfo.xml</code> pomocí OCR + LLMs. Tento krok je volitelný, ale pro velké knihovny se důrazně doporučuje.</p>
<h3 id="3-zkomprimujte-to">3. Zkomprimujte to</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Navigate to the folder containing the pages</span>
</span></span><span style="display:flex;"><span>cd /path/to/pages
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Create a CBZ without extra compression (JPEGs are already compressed)</span>
</span></span><span style="display:flex;"><span>zip -0 -r ../MyComic.cbz *.jpg *.png ComicInfo.xml cover.jpg
</span></span><span style="display:flex;"><span><span style="color:#75715e"># -0 = store (no compression) – speeds up the process</span>
</span></span></code></pre></div><p>Přejmenujte vzniklý <code>.zip</code> na <code>.cbz</code>, pokud to váš archivátor neudělal automaticky.</p>
<h3 id="4-ověřte-archiv">4. Ověřte archiv</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> zipfile<span style="color:#f92672">,</span> pathlib<span style="color:#f92672">,</span> sys
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">list_pages</span>(cbz_path: pathlib<span style="color:#f92672">.</span>Path):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> zipfile<span style="color:#f92672">.</span>ZipFile(cbz_path, <span style="color:#e6db74">&#39;r&#39;</span>) <span style="color:#66d9ef">as</span> z:
</span></span><span style="display:flex;"><span>        <span style="color:#75715e"># Guard against zip‑bombs (max 500 MB uncompressed)</span>
</span></span><span style="display:flex;"><span>        total <span style="color:#f92672">=</span> sum(z<span style="color:#f92672">.</span>getinfo(name)<span style="color:#f92672">.</span>file_size <span style="color:#66d9ef">for</span> name <span style="color:#f92672">in</span> z<span style="color:#f92672">.</span>namelist())
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> total <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">500</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1024</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">1024</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">raise</span> <span style="color:#a6e22e">ValueError</span>(<span style="color:#e6db74">&#34;Archive too large&#34;</span>)
</span></span><span style="display:flex;"><span>        images <span style="color:#f92672">=</span> [n <span style="color:#66d9ef">for</span> n <span style="color:#f92672">in</span> z<span style="color:#f92672">.</span>namelist()
</span></span><span style="display:flex;"><span>                  <span style="color:#66d9ef">if</span> n<span style="color:#f92672">.</span>lower()<span style="color:#f92672">.</span>endswith((<span style="color:#e6db74">&#39;.jpg&#39;</span>, <span style="color:#e6db74">&#39;.jpeg&#39;</span>, <span style="color:#e6db74">&#39;.png&#39;</span>, <span style="color:#e6db74">&#39;.webp&#39;</span>, <span style="color:#e6db74">&#39;.avif&#39;</span>))]
</span></span><span style="display:flex;"><span>        images<span style="color:#f92672">.</span>sort()  <span style="color:#75715e"># natural alphabetical order</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> images
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> __name__ <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;__main__&#34;</span>:
</span></span><span style="display:flex;"><span>    cbz <span style="color:#f92672">=</span> pathlib<span style="color:#f92672">.</span>Path(sys<span style="color:#f92672">.</span>argv[<span style="color:#ae81ff">1</span>])
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> page <span style="color:#f92672">in</span> list_pages(cbz):
</span></span><span style="display:flex;"><span>        print(page)
</span></span></code></pre></div><p>Spuštěním <code>python list_pages.py MyComic.cbz</code> by se měl vytisknout čistý, uspořádaný seznam názvů souborů stránek.</p>
<h3 id="5-převést-do-pdf-pokud-potřebujete-tisknutelnou-verzi">5. Převést do PDF (pokud potřebujete tisknutelnou verzi)</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>unzip -q MyComic.cbz -d tmp_pages
</span></span><span style="display:flex;"><span>convert tmp_pages/*.jpg MyComic.pdf   <span style="color:#75715e"># ImageMagick&#39;s `convert`</span>
</span></span><span style="display:flex;"><span>rm -r tmp_pages
</span></span></code></pre></div><hr>
<h2 id="trendy-bezpečnost-a-budoucnost-formátu-cbz">Trendy, bezpečnost a budoucnost formátu CBZ</h2>
<table>
<thead>
<tr>
<th>Trend</th>
<th>Co se děje</th>
<th>Dopad na CBZ</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Distribuce zaměřená na web</strong></td>
<td>Vydavatelé hostují CBZ soubory v cloudovém úložišti s předpodepsanými URL.</td>
<td>Rychlejší, stahování bez DRM; snadnější samopublikování.</td>
</tr>
<tr>
<td><strong>Hybridní/interaktivní komiksy</strong></td>
<td>Přidáním <code>index.html</code> + aktiv do archivu vytvoříte „vylepšené“ komiksy (audio, video, HTML5).</td>
<td>Čtečky, které podporují webové zobrazení, mohou vykreslovat multimediální vrstvy.</td>
</tr>
<tr>
<td><strong>Přijetí formátů WebP a AVIF</strong></td>
<td>~15 % nových vydání (2024) používá tyto kodeky.</td>
<td>Snížení velikosti o 30‑50 % při zachování kvality — klíčové pro mobilní šířku pásma.</td>
</tr>
<tr>
<td><strong>AI‑generovaná metadata</strong></td>
<td>Nástroje jako <em>ComicTagger</em> nyní používají OCR + LLMs k vyplnění <code>ComicInfo.xml</code>.</td>
<td>Lepší vyhledatelnost, automatické označování a organizace knihovny.</td>
</tr>
<tr>
<td><strong>Aplikace pro čtení s cloudovou synchronizací</strong></td>
<td>Chunky, Perfect Viewer a další synchronizují postup pomocí Firebase/iCloud.</td>
<td>Plynulé čtení napříč telefony, tablety a počítači.</td>
</tr>
<tr>
<td><strong>Usilování o standardizaci (CBZ v2.0)</strong></td>
<td>DCI navrhuje povinný <code>manifest.json</code>, více‑rozlišení aktiva a značku <code>&lt;DRM&gt;</code>.</td>
<td>Zajistí, že CBZ bude odolnější pro zařízení s vysokým DPI a volitelnou správu práv.</td>
</tr>
<tr>
<td><strong>Bezpečnostní povědomí</strong></td>
<td>Útoky typu zip‑bomba (malý ZIP → gigabajty po rozbalení) jsou skutečnou hrozbou.</td>
<td>Čtečky nyní vynucují limity velikosti rozbalování a používají bezpečné knihovny (např. Python <code>zipfile</code> s kontrolami).</td>
</tr>
</tbody>
</table>
<h3 id="bezpečnostní-tip-pro-vývojáře">Bezpečnostní tip pro vývojáře</h3>
<p>Vždy ověřte celkovou nekomprimovanou velikost <strong>před</strong> rozbalením CBZ. Jednoduchá kontrola (jak je ukázáno v Python úryvku) zabraňuje škodlivým archivům vyčerpávat místo na disku nebo paměť.</p>
<hr>
<h2 id="jak-čtečka-ve-skutečnosti-vykresluje-cbz">Jak čtečka ve skutečnosti vykresluje CBZ</h2>
<ol>
<li><strong>Otevřete archiv</strong> – Aplikace čte centrální adresář ZIP, aby získala rychlý index položek.</li>
<li><strong>Filtrujte obrazové soubory</strong> – Nepodporované položky (<code>ComicInfo.xml</code>, <code>__MACOSX/</code>, atd.) jsou ignorovány.</li>
<li><strong>Seřaďte abecedně</strong> – Díky nulovým doplněným názvům odpovídá seřazený seznam zamýšlenému pořadí stránek.</li>
<li><strong>Zpracujte metadata</strong> – Pokud existuje <code>ComicInfo.xml</code>, čtečka extrahuje příznaky typu stránky, název, autora atd., a může skrýt stránky označené jako <code>Advert</code> nebo <code>Deleted</code>.</li>
<li><strong>Render pages</strong> – Obrázky jsou dekódovány (často s hardwarově akcelerovanými JPEG/WebP dekodéry na moderních e‑ink tabletech) a zobrazovány jeden po druhém, s přednačítáním několika následujících stránek pro plynulé rolování.</li>
<li><strong>Persist state</strong> – Pozice čtení, záložky a anotace jsou uloženy lokálně nebo synchronizovány do cloudu, v závislosti na aplikaci.</li>
</ol>
<p>Tento proces je důvod, proč se CBZ jeví tak rychlý a responzivní jako nativní PDF, a přitom zůstává zcela otevřený a editovatelný.</p>
<hr>
<p><strong>Závěr:</strong> Elegance CBZ spočívá v její jednoduchosti – prostý ZIP, který může kdokoli otevřít, upravit nebo přetvořit. S volitelnými metadaty <code>ComicInfo.xml</code>, moderními kodeky obrázků a nově vznikajícími standardy, se nadále vyvíjí a zůstává věrná svým kořenům bez DRM a napříč platformami.</p>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
