<?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/bg/tag/cbz/</link>
    <description>Recent content in CBZ on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>bg</language>
    <lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/bg/tag/cbz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Вътре в CBZ - Разбиране на анатомията на дигиталните комикси</title>
      <link>https://blog.fileformat.com/bg/ebook/inside-the-cbz-anatomy-of-digital-comics/</link>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/bg/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 + LLMs. Тази стъпка е по избор, но силно се препоръчва за големи библиотеки.</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 &amp; AVIF</strong></td>
<td>~15 % от новите издания (2024) използват тези кодеци.</td>
<td>Намаляване на размера с 30‑50 % при запазване на качеството — критично за мобилната честотна лента.</td>
</tr>
<tr>
<td><strong>AI‑генерирани метаданни</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 по‑устойчив за устройства с висока DPI и опционално управление на правата.</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 кода) предотвратява злонамерени архиви от изчерпване на дисковото пространство или паметта.</p>
<hr>
<h2 id="как-четецът-всъщност-рендерира-cbz">Как четецът всъщност рендерира CBZ</h2>
<ol>
<li><strong>Отворете архива</strong> – Приложението чете централната директория на ZIP, за да получи бърз индекс на елементите.</li>
<li><strong>Филтрирайте файловете с изображения</strong> – Неизображеният entries (<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>
