<?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/uk/tag/cbz/</link>
    <description>Recent content in CBZ on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>uk</language>
    <lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/uk/tag/cbz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Всередині CBZ — розуміння анатомії цифрових коміксів</title>
      <link>https://blog.fileformat.com/uk/ebook/inside-the-cbz-anatomy-of-digital-comics/</link>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/uk/ebook/inside-the-cbz-anatomy-of-digital-comics/</guid>
      <description>Дізнайтеся, що таке файл коміксу CBZ, його проста ZIP‑структура, параметри метаданих та сучасні формати зображень — відкриваються на будь‑якому пристрої без DRM.</description>
      <content:encoded><![CDATA[<p><strong>Останнє оновлення</strong>: 28 липня, 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) — це не що інше, як стандартний ZIP‑архів, який об’єднує серію послідовних файлів‑зображень—плюс додаткові метадані—в один контейнер коміксів без DRM. Оскільки він базується на поширеному форматі ZIP, будь‑який інструмент архівації може його відкрити, а читачі просто сортують зображення за алфавітом, щоб показати сторінки у правильному порядку. Сучасні CBZ часто включають <code>ComicInfo.xml</code> для багатих бібліотечних даних, використовують ефективні кодеки зображень, такі як WebP/AVIF, і навіть вбудовують HTML для інтерактивних «розширених» коміксів.</p>
<hr>
<h2 id="що-саме-таке-cbz">Що саме таке CBZ?</h2>
<ul>
<li><strong>Назва</strong>: <em>Comic Book Zip</em> – ZIP‑файл з розширенням <code>.cbz</code>.</li>
<li><strong>Тип MIME</strong>: <code>application/vnd.comicbook+zip</code> (зареєстровано в IANA у 2012 році).</li>
<li><strong>Походження</strong>: Популяризовано спільнотою ComicRack (2005‑2008) як відкриту альтернативу пропрієтарним форматам, таким як CBR або PDF.</li>
<li><strong>Крос‑платформенність</strong>: Відкривається будь‑яким інструментом, сумісним з ZIP (7‑Zip, WinRAR, macOS Archive Utility, Linux <code>unzip</code>). Спеціальне програмне забезпечення не потрібно для перегляду вмісту.</li>
</ul>
<p>На практиці CBZ — це просто папка з зображеннями (JPEG, PNG, WebP тощо), запакована у zip і перейменована. Така простота є причиною того, що це де‑факто стандарт для цифрових коміксів на ПК, планшетах і телефонах.</p>
<hr>
<h2 id="всередині-cbz-структура-файлу">Всередині CBZ: структура файлу</h2>
<p>Коректно сформований CBZ дотримується плоскої ієрархії—без зайвого вкладення—щоб читачі могли миттєво знаходити сторінки. Нижче — типове дерево каталогів:</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="ключові-елементи">Ключові елементи</h3>
<table>
<thead>
<tr>
<th>Елемент</th>
<th>Що це</th>
<th>Чому це важливо</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Послідовні файли зображень</strong></td>
<td>Названі так, щоб сортуватися в алфавітному порядку (<code>001.jpg</code>, <code>002.jpg</code>, …)</td>
<td>Гарантує правильний порядок сторінок у всіх читачів.</td>
</tr>
<tr>
<td><strong>Формат зображення</strong></td>
<td>JPEG, PNG, GIF, WebP, AVIF, BMP, TIFF</td>
<td>Визначає розмір файлу, візуальну якість та сумісність пристроїв.</td>
</tr>
<tr>
<td><strong>ComicInfo.xml</strong></td>
<td>Необов’язковий XML, що відповідає схемі ComicRack</td>
<td>Зберігає назву, автора, серію, номер випуску, мову, прапорці типу сторінки та навіть дані мініатюри. Забезпечує потужне керування бібліотекою.</td>
</tr>
<tr>
<td><strong>Обкладинка</strong></td>
<td><code>cover.jpg</code>/<code>cover.png</code> у кореневій теці</td>
<td>Використовується багатьма додатками як мініатюра коміксу в галереях.</td>
</tr>
<tr>
<td><strong>Імена файлів Unicode</strong></td>
<td>Сучасний ZIP підтримує UTF‑8</td>
<td>Необхідно для назв не‑латинською та міжнародних коміксів.</td>
</tr>
<tr>
<td><strong>Центральний каталог ZIP</strong></td>
<td>Індекс у кінці архіву</td>
<td>Читачі читають це, щоб швидко сформувати список сторінок; пошкодження тут може зламати весь CBZ.</td>
</tr>
</tbody>
</table>
<p>Оскільки архів стискає лише вже стиснені зображення, кінцевий розмір зазвичай дорівнює лише сумі оригінальних файлів плюс кілька кілобайт накладних витрат ZIP (&lt; 5 %).</p>
<hr>
<h2 id="магія-метаданих-comicinfoxml-та-прапорці-типу-сторінки">Магія метаданих: <code>ComicInfo.xml</code> та прапорці типу сторінки</h2>
<p>Хоча CBZ працює ідеально без додаткових файлів, додавання <code>ComicInfo.xml</code> перетворює просту стеку зображень у придатний до пошуку, багатодокументований комікс. Ось мінімальний приклад:</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>Навіщо це?</strong></p>
<ul>
<li><strong>Інструменти бібліотеки</strong> (ComicRack, Calibre тощо) можуть сортувати, фільтрувати та шукати за цими полями.</li>
<li><strong>Позначки типу сторінок</strong> (<code>FrontCover</code>, <code>BackCover</code>, <code>Advert</code>, <code>Deleted</code> тощо) дозволяють читачам приховувати рекламу, показувати лише сторінки історії або відображати власну мініатюру обкладинки.</li>
<li><strong>Забезпечення майбутньої сумісності</strong> – Оскільки Digital Comics Initiative розробляє специфікацію CBZ v2.0, файл маніфесту (<code>manifest.json</code>) може стати обов’язковим, проте існуючі читачі все ще підтримуватимуть <code>ComicInfo.xml</code>.</li>
</ul>
<hr>
<h2 id="створення-та-конвертація-cbzфайлів-крок-за-кроком">Створення та конвертація CBZ‑файлів (крок за кроком)</h2>
<h3 id="1-підготуйте-ваші-зображення">1. Підготуйте ваші зображення</h3>
<ul>
<li>Експортуйте кожну сторінку комікса як зображення.</li>
<li>Назвіть їх числами з нульовим заповненням (<code>001.jpg</code>, <code>002.jpg</code>, …), щоб забезпечити правильне сортування.</li>
<li>Виберіть кодек, який підходить вашій аудиторії: JPEG для найменшого розміру, PNG для без втрат, WebP/AVIF для сучасного, високоякісного стиснення.</li>
</ul>
<h3 id="2-необовязково-створити-метадані">2. (Необов’язково) Створити метадані</h3>
<p>Інструменти, такі як <strong>ComicTagger</strong>, <strong>cbr2cbz</strong>, або власні скрипти, можуть автоматично заповнювати <code>ComicInfo.xml</code>, використовуючи OCR + LLM. Цей крок є необов’язковим, але дуже рекомендованим для великих бібліотек.</p>
<h3 id="3-стисніть-його">3. Стисніть його</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>Перейменуйте отриманий <code>.zip</code> у <code>.cbz</code>, якщо ваш архіватор не зробив це автоматично.</p>
<h3 id="4-перевірте-архів">4. Перевірте архів</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>Запуск <code>python list_pages.py MyComic.cbz</code> має вивести чистий, впорядкований список імен файлів сторінок.</p>
<h3 id="5-конвертувати-у-pdf-якщо-вам-потрібна-друкована-версія">5. Конвертувати у PDF (якщо вам потрібна друкована версія)</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="тенденції-безпека-та-майбутнє-cbz">Тенденції, безпека та майбутнє CBZ</h2>
<table>
<thead>
<tr>
<th>Тенденція</th>
<th>Що відбувається</th>
<th>Вплив на CBZ</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Розповсюдження спочатку в інтернеті</strong></td>
<td>Видавці розміщують CBZ-файли в хмарному сховищі з попередньо підписаними URL-адресами.</td>
<td>Швидші, без DRM завантаження; простіше самовидавництво.</td>
</tr>
<tr>
<td><strong>Гібридні/інтерактивні комікси</strong></td>
<td>Додавання <code>index.html</code> + ресурсів всередині архіву створює “розширені” комікси (аудіо, відео, HTML5).</td>
<td>Читачі, які підтримують веб‑перегляд, можуть відображати мультимедійні шари.</td>
</tr>
<tr>
<td><strong>Впровадження WebP та AVIF</strong></td>
<td>~15 % нових випусків (2024) використовують ці кодеки.</td>
<td>Зменшення розміру на 30‑50 % при збереженні якості—критично важливо для мобільної пропускної здатності.</td>
</tr>
<tr>
<td><strong>Метадані, створені ШІ</strong></td>
<td>Інструменти, такі як <em>ComicTagger</em>, тепер використовують OCR + LLM для заповнення <code>ComicInfo.xml</code>.</td>
<td>Краща виявленість, автоматичне тегування та організація бібліотеки.</td>
</tr>
<tr>
<td><strong>Додатки для читання з хмарною синхронізацією</strong></td>
<td>Chunky, Perfect Viewer та інші синхронізують прогрес через Firebase/iCloud.</td>
<td>Безшовне читання на телефонах, планшетах та настільних комп’ютерах.</td>
</tr>
<tr>
<td><strong>Рух до стандартизації (CBZ v2.0)</strong></td>
<td>DCI пропонує обов’язковий <code>manifest.json</code>, багатороздільні ресурси та прапорець <code>&lt;DRM&gt;</code>.</td>
<td>Зробить CBZ більш надійним для пристроїв з високою роздільною здатністю та забезпечить необов’язкове управління правами.</td>
</tr>
<tr>
<td><strong>Обізнаність про безпеку</strong></td>
<td>Атаки типу Zip‑bomb (маленький ZIP → гігабайти після розпакування) становлять реальну загрозу.</td>
<td>Читачі тепер застосовують обмеження розміру розпакування та використовують безпечні бібліотеки (наприклад, <code>zipfile</code> у Python з перевірками).</td>
</tr>
</tbody>
</table>
<h3 id="порада-щодо-безпеки-для-розробників">Порада щодо безпеки для розробників</h3>
<p>Завжди перевіряйте загальний розмір розпакованих даних <strong>перед</strong> розпакуванням CBZ. Простий контроль (як показано у фрагменті коду Python) запобігає виснаженню дискового простору або пам&rsquo;яті шкідливими архівами.</p>
<hr>
<h2 id="як-читач-фактично-відображає-cbz">Як читач фактично відображає CBZ</h2>
<ol>
<li><strong>Відкрити архів</strong> – Додаток читає центральний каталог ZIP, щоб швидко отримати індекс записів.</li>
<li><strong>Фільтрувати файли зображень</strong> – Незаписані як зображення записи (<code>ComicInfo.xml</code>, <code>__MACOSX/</code> тощо) ігноруються.</li>
<li><strong>Сортувати за алфавітом</strong> – Завдяки назві з нульовим заповненням, відсортований список відповідає запланованому порядку сторінок.</li>
<li><strong>Розбирати метадані</strong> – Якщо існує <code>ComicInfo.xml</code>, читач витягує прапорці типу сторінки, назву, автора тощо і може приховати сторінки, позначені як <code>Advert</code> або <code>Deleted</code>.</li>
<li><strong>Відображення сторінок</strong> – Зображення декодуються (часто за допомогою апаратно‑прискорених декодерів JPEG/WebP на сучасних e‑ink планшетах) і відображаються по одній, з попереднім завантаженням кількох наступних сторінок для плавної прокрутки.</li>
<li><strong>Збереження стану</strong> – Позиція читання, закладки та анотації зберігаються локально або синхронізуються з хмарою, залежно від застосунку.</li>
</ol>
<p>Саме цей конвеєр пояснює, чому CBZ відчувається таким же швидким і реактивним, як нативний PDF, і водночас залишається повністю відкритим та редагованим.</p>
<hr>
<p><strong>Підсумок:</strong> Елегантність CBZ полягає у його простоті — простий ZIP, який будь-хто може відкрити, редагувати або перепризначити. Завдяки необов’язковим метаданим <code>ComicInfo.xml</code>, сучасним кодекам зображень та новим стандартам, він продовжує розвиватися, залишаючись вірним своїм DRM‑вільним, крос‑платформеним кореням.</p>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
