Dernière mise à jour : 28 juillet 2026

TL;DR CBZ (Comic Book Zip) n’est rien de plus qu’une archive ZIP standard qui regroupe une série de fichiers image séquentiels—plus des métadonnées optionnelles—dans un seul conteneur de bande dessinée sans DRM. Comme il repose sur le format ZIP omniprésent, n’importe quel outil d’archivage peut l’ouvrir, et les lecteurs trient simplement les images par ordre alphabétique pour afficher les pages dans le bon ordre. Les CBZ modernes incluent souvent ComicInfo.xml pour des données de bibliothèque riches, utilisent des codecs d’image efficaces comme WebP/AVIF, et intègrent même du HTML pour des bandes dessinées interactives « améliorées ».
Qu’est-ce exactement qu’un CBZ ?
- Nom : Comic Book Zip – un fichier ZIP avec l’extension
.cbz. - Type MIME :
application/vnd.comicbook+zip(enregistré auprès de l’IANA en 2012). - Origines : popularisé par la communauté ComicRack (2005‑2008) comme une alternative open‑source aux formats propriétaires tels que CBR ou PDF.
- Multiplateforme : ouvrable avec n’importe quel utilitaire compatible ZIP (7‑Zip, WinRAR, Utilitaire d’archive macOS, Linux
unzip). Aucun logiciel spécial n’est requis pour inspecter le contenu.
En pratique, un CBZ n’est qu’un dossier d’images (JPEG, PNG, WebP, etc.) compressé et renommé. Cette simplicité explique pourquoi il est la norme de facto pour les bandes dessinées numériques sur PC, tablettes et téléphones.
À l’intérieur d’un CBZ : la structure du fichier
Un CBZ bien structuré suit une hiérarchie plate—sans imbrication supplémentaire—afin que les lecteurs puissent localiser les pages instantanément. Voici une vue arborescente typique :
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
Éléments clés
| Élément | Ce que c’est | Pourquoi c’est important |
|---|---|---|
| Fichiers image séquentiels | Nommés de façon à être triés alphabétiquement (001.jpg, 002.jpg, …) | Garantit l’ordre correct des pages sur tous les lecteurs. |
| Format d’image | JPEG, PNG, GIF, WebP, AVIF, BMP, TIFF | Détermine la taille du fichier, la fidélité visuelle et la compatibilité des appareils. |
| ComicInfo.xml | XML optionnel suivant le schéma ComicRack | Stocke le titre, l’auteur, la série, le numéro d’édition, la langue, les indicateurs de type de page et même les données de vignette. Permet une gestion puissante de la bibliothèque. |
| Image de couverture | cover.jpg/cover.png à la racine | Utilisé par de nombreuses applications comme vignette de la bande dessinée dans les galeries. |
| Noms de fichiers Unicode | Le ZIP moderne prend en charge UTF‑8 | Essentiel pour les titres non latins et les bandes dessinées internationales. |
| Répertoire central du ZIP | Index à la fin de l’archive | Les lecteurs lisent cela pour créer rapidement la liste des pages ; une corruption ici peut casser le CBZ entier. |
Parce que l’archive ne compresse que des images déjà compressées, la taille finale est généralement juste la somme des fichiers originaux plus quelques kilo-octets de surcharge ZIP (< 5 %).
Magie des métadonnées : ComicInfo.xml et indicateurs de type de page
Bien qu’un CBZ fonctionne parfaitement sans fichiers supplémentaires, l’ajout d’un ComicInfo.xml transforme une simple pile d’images en une bande dessinée consultable et richement décrite. Voici un exemple minimal :
<?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>
Pourquoi s’embêter ?
- Outils de bibliothèque (ComicRack, Calibre, etc.) peuvent trier, filtrer et rechercher en fonction de ces champs.
- Indicateurs de type de page (
FrontCover,BackCover,Advert,Deleted, etc.) permettent aux lecteurs de masquer les publicités, d’afficher uniquement les pages de l’histoire ou de montrer une vignette de couverture personnalisée. - Préparation pour le futur – Alors que le Digital Comics Initiative élabore une spécification CBZ v2.0, un fichier manifeste (
manifest.json) pourrait devenir obligatoire, mais les lecteurs existants continueront de prendre en chargeComicInfo.xml.
Création et conversion de fichiers CBZ (étape par étape)
1. Préparez vos images
- Exportez chaque page de bande dessinée en tant qu’image.
- Nommez‑les avec des nombres à zéro remplis (
001.jpg,002.jpg, …) pour garantir un tri correct. - Choisissez le codec qui convient à votre public : JPEG pour la taille la plus petite, PNG pour un art sans perte, WebP/AVIF pour une compression moderne et de haute qualité.
2. (Optionnel) Générer les métadonnées
Des outils comme ComicTagger, cbr2cbz, ou des scripts personnalisés peuvent auto‑remplir ComicInfo.xml en utilisant OCR + les LLM. Cette étape est facultative mais fortement recommandée pour les grandes bibliothèques.
3. Compressez-le
# 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
Renommez le .zip résultant en .cbz si votre archiveur ne l’a pas fait automatiquement.
4. Vérifiez l’archive
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)
L’exécution de python list_pages.py MyComic.cbz devrait afficher une liste propre et ordonnée des noms de fichiers des pages.
5. Convertir en PDF (si vous avez besoin d’une version imprimable)
unzip -q MyComic.cbz -d tmp_pages
convert tmp_pages/*.jpg MyComic.pdf # ImageMagick's `convert`
rm -r tmp_pages
Tendances, sécurité et avenir du CBZ
| Tendance | Ce qui se passe | Impact sur le CBZ |
|---|---|---|
| Distribution Web‑first | Les éditeurs hébergent les CBZ sur un stockage cloud avec des URL pré‑signées. | Téléchargements plus rapides, sans DRM ; auto‑édition plus facile. |
| Bandes dessinées hybrides/ interactives | Ajouter index.html + des ressources dans l’archive crée des bandes dessinées « améliorées » (audio, vidéo, HTML5). | Les lecteurs qui prennent en charge une vue web peuvent rendre les couches multimédias. |
| Adoption du WebP et AVIF | ~15 % des nouvelles sorties (2024) utilisent ces codecs. | Réduction de taille de 30‑50 % tout en préservant la qualité—crucial pour la bande passante mobile. |
| Métadonnées générées par IA | Des outils comme ComicTagger utilisent désormais l’OCR + les LLM pour remplir ComicInfo.xml. | Une meilleure découvrabilité, un étiquetage automatisé et une organisation de la bibliothèque. |
| Applications de lecture synchronisées dans le cloud | Chunky, Perfect Viewer et d’autres synchronisent la progression via Firebase/iCloud. | Lecture fluide sur les téléphones, tablettes et ordinateurs de bureau. |
| Impulsion de normalisation (CBZ v2.0) | Le DCI propose un manifest.json obligatoire, des ressources multi‑résolution et un indicateur <DRM>. | Rendra le CBZ plus robuste pour les appareils à haute résolution DPI et permettra une gestion des droits optionnelle. |
| Sensibilisation à la sécurité | Les attaques de type zip‑bomb (ZIP minuscule → gigaoctets lorsqu’il est extrait) constituent une vraie menace. | Les lecteurs imposent désormais des limites de taille d’extraction et utilisent des bibliothèques sûres (par ex., le zipfile de Python avec des vérifications). |
Conseil de sécurité pour les développeurs
Validez toujours la taille totale décompressée avant d’extraire un CBZ. Une vérification simple (comme illustrée dans l’extrait Python) empêche les archives malveillantes d’épuiser l’espace disque ou la mémoire.
Comment un lecteur rend réellement un CBZ
- Ouvrir l’archive – L’application lit le répertoire central du ZIP pour obtenir un index rapide des entrées.
- Filtrer les fichiers image – Les entrées non‑image (
ComicInfo.xml,__MACOSX/, etc.) sont ignorées. - Trier alphabétiquement – En raison du nommage à remplissage zéro, la liste triée correspond à l’ordre de pages prévu.
- Analyser les métadonnées – Si
ComicInfo.xmlexiste, le lecteur extrait les indicateurs de type de page, le titre, l’auteur, etc., et peut masquer les pages marquées commeAdvertouDeleted. - Rendu des pages – Les images sont décodées (souvent avec des décodeurs JPEG/WebP accélérés par le matériel sur les tablettes e‑ink modernes) et affichées une à une, avec pré‑chargement des quelques pages suivantes pour un défilement fluide.
- Conserver l’état – La position de lecture, les signets et les annotations sont enregistrés localement ou synchronisés avec le cloud, selon l’application.
Ce pipeline explique pourquoi le CBZ semble aussi rapide et réactif qu’un PDF natif, tout en restant complètement ouvert et modifiable.
En résumé : L’élégance du CBZ réside dans sa simplicité — un simple ZIP que tout le monde peut ouvrir, modifier ou réutiliser. Avec les métadonnées optionnelles ComicInfo.xml, les codecs d’image modernes et les normes émergentes, il continue d’évoluer tout en restant fidèle à ses racines sans DRM et multiplateformes.