Les logiciels de compression sans perte permettent la création d'archive contenant plusieurs fichiers compressés en un seul fichier.
L'archive peut contenir toute une arborescence de répertoires et fichiers.
Technique d'archivage.
L'archive contient une liste de fichiers et répertoires contenant pour chaque entrée les informations suivantes (en général) :
Détails du format ZIP : le répertoire central est en fin de fichier pour faciliter l'ajout et le retrait de fichiers sans déplacer les fichiers de l'archive.
La compression intervient ensuite de deux manières possibles.
Compression indépendante.
La compression peut avoir lieu de manière indépendante pour chaque fichier.
L'avantage est de pouvoir ajouter et retirer facilement un fichier à une archive de manière dynamique, et de pouvoir extraire un seul fichier rapidement.
La compression indépendante est utilisée par les formats ZIP, RAR...
Afin qu'il soit possible d'accéder à un fichier sans lire les autres, chaque entrée contient la position en octets dans l'archive du début du flux compressé d'octets du fichier.
Compression compacte.
Une autre manière de faire et de rassembler tous les fichiers en une archive, puis de compresser l'archive entière.
Le retrait, l'ajout et l'extraction d'un fichier est alors plus difficile car il faut passer sur tous les fichiers de l'archive.
L'avantage est une meilleure compression, car l'algorithme peut compresser un fichier en réutilisant le contenu d'un autre fichier similaire de la même archive.
Cette manière d'archivage est celle utilisée avec l'archivage targz sous Linux qui se déroule en deux étapes :
Une extension de nom de fichier est ajoutée à chaque étape : codice_4 puis codice_5.
Certains outils gère l'ensemble des deux commandes et utilisent l'extension codice_6.
La compression compacte est utilisée par les formats 7Z, targz...

Compression de données/Run-length encoding

Le run-length encoding, appelé en français le codage par plages, est un algorithme de compression de données sans perte en informatique.
L'introduction de ce livre donne une explication de cet algorithme et des problématiques d'encodage liés.
À l'origine, le système s'appliquait essentiellement à des documents scannés en noir et blanc, en particulier la transmission de télécopies.
Au lieu de coder un bit par point, on dispose d'un compteur — en général sur un octet — indiquant combien de points blancs ou noirs se suivent.
Comme il est fréquent d'avoir au moins 8 pixels noirs ou 8 pixels blancs de suite, et que 256 ne sont pas rares sur les endroits vierges ou les "à-plats" noirs, le système a bien pour effet une compression.
S'il y a plus de 256 bits de la même couleur, on peut placer ensuite un octet spécifiant 0 bit de la couleur opposée, puis coder le nombre de bits qui restent.
Par exemple, considérons un écran de texte noir sur fond blanc.
Il sera constitué de longues séquences de pixels blancs pour le fond, et de courtes séquences de pixels noirs pour le texte.
Représentons une ligne d'un tel écran, avec B (comme ') pour les pixels noirs et W (comme ') pour les pixels blancs :
 WWWWWWWWWWWWBWWWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWW 
Un encodage Run Length Encoding consiste à indiquer pour chaque suite de pixels d'une même couleur le nombre de pixels de cette séquence.
Le résultat comporte en général moins de caractères, bien que ça ne soit pas toujours le cas.
On obtient, par exemple, pour la ligne précédente :
 12W1B14W3B23W1B11W
Tandis que
 WBWBWBWBWB
donnerait :
 1W1B1W1B1W1B1W1B1W1B
Ce qui est deux fois plus long.
Remarque : dans le dernier cas, il serait plus efficace d'écrire uniquement la lettre si elle est seule (sans le chiffre 1).
On aurait alors toujours au maximum la même taille.
Applications.
Les formats d'images utilisent cette compression en considérant que toutes les lignes de pixels sont jointes pour former une unique séquence de couleurs.
RLE est aussi utilisé pour les fax Groupe 3 et Groupe 4 (Recommandations ITU-T T.4 et T.6), son usage le plus fréquent hors informatique.
Les lignes, ici des successions de points blancs ou noirs, sont codées par leur longueur en pixel de chaque couleur.
Mais les longueurs sont codées en fonction de leur fréquence d'apparition.
Et ce codage fait partie de la spécification.
Il s'agit d'une sorte de compression Huffman prédéfinie.
Chaque segment est forcément de la couleur opposée et cette couleur ne doit donc pas être transmise, augmentant la compression. Dans l'exemple le W et B ne sont pas transmis.
Par contre, cela implique que chaque ligne commence par une couleur connue.
Et quand la longueur dépasse celle possible, on intercale l'autre couleur mais de longueur nulle.
La même compression peut être utilisée en niveaux de gris mais elle est alors peu efficace, dû à la faible vitesse de transmission des fax pour de telles images.

Compression de données/Codage de Huffman