IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

compression/ décompression/ extraction


Sujet :

C

Vue hybride

tixweb compression/ décompression/... 22/06/2007, 11h38
Neitsa Bonjour, Une solution... 22/06/2007, 13h00
GyZmoO Si tu cherches l'algo LZW... 22/06/2007, 13h42
tixweb Ouille ^^ pour le momment,... 22/06/2007, 14h08
tixweb Haha ! j'ai craqué pour... 22/06/2007, 18h53
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut compression/ décompression/ extraction
    Salut !

    j'ai comme projet de faire une compilation de documents, que je décompresserai et placerai dans des dossiers spécifiques via un programme.

    Mais voilà, les premiers problemes se posent : comment compresser et joindre tous mes documents dans un meme fichier, et les extraires par la suite via mon programme ? existe il une lib ou une technique intéressante pour ce genre de manipullation ?

    merci, ++ Tix.

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Bonjour,

    Citation Envoyé par tixweb
    Salut !

    j'ai comme projet de faire une compilation de documents, que je décompresserai et placerai dans des dossiers spécifiques via un programme.

    Mais voilà, les premiers problemes se posent : comment compresser et joindre tous mes documents dans un meme fichier, et les extraires par la suite via mon programme ? existe il une lib ou une technique intéressante pour ce genre de manipullation ?

    merci, ++ Tix.
    Une solution possible serait de créer un fichier pour y mettre tous les fichiers compressés. Ce fichier unique comprendrait une en-tête (binaire), donnant la structure même du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct _CompressedFile {
    size_t SizeOfCompressedFile; /* taille du fichier compressé */
    void* pFile; /* pointeur (dans le fichier) vers les données du fichier compressé */
    } CompressedFile;
     
    typedef struct _Header {
    size_t SizeOfHeader; /* taille de l'en-tête */
    unsigned int NumberOfCompressedFile; /* nombre de fichiers compressés */
    CompressedFile[] Array; // tableau de structure "CompressedFile"
    } Header;
    Donc lorsque tu compresses, tu crées un fichier qui contiendra tous les fichiers compressé (une archive en somme).

    A ce stade tu sais déjà combien de fichier tu va compresser, tu peux donc allouer la taille nécessaire à l'entête et remplir les champs adéquats (Taille du header, Nombre de fichier compressé).

    Tu compresses le fichier 1 et obtiens sa taille compressé, tu remplis Array[0] (structure "CompressedFile") et met le fichier compressé dans l'archive. Tu passes au fichier 2 et rempli Array[1], etc.

    La décompression revient uniquement à lire l'entête, extraire le fichier copressé et passer ce fichier à un décompresseur.

    Généralement le fichier compressé à un champ renseignant sur sa taille décompressée (suivant l'algo de compression / décompression). Donc théoriquement il n'y pas à s'occuper de cela.

    Si tu t'intéresse à la théorie de compression des données, jette un coup d'oeil au alog type LZ (Lempel Ziv) ou Huffman qui sont relativement simples à implémenter.

    Si tu ne veux pas t'ennuyer avec la compression / décompression en elle même tu peux utiliser un bibliothèque.

    Certaines gèrent déjà la compression de fichier multiples en archive (ZIP par exemple).

  3. #3
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Si tu cherches l'algo LZW déja codé en C, dis le, je l'ai et il marche trés bien !

  4. #4
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Ouille ^^

    pour le momment, je vais me contenter de libs je crois, ca sera plus efficace.

    On m'a parlé de Gzip ,et ZLib

    j'ai regardé en diagonale leur site respectif, ca m'a l'aire intéressant.

    les auriez vous déjà utilisées ?

    merci, ++ Tix.

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    Haha !

    j'ai craqué pour Gzip.

    Or, voila, j'arrive a compresser, mais pas a décompresser !

    Ques est donc la marche a suivre ?

    merci, ++ Tix.

  6. #6
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Gzip ne permet pas de décompresser, il me semble qu'il faut utiliser gunzip ou alors, si tu es sous linux, tu peux faire appel à la commande system

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compression/décompression d'un byte[]
    Par mister3957 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 16/11/2007, 16h12
  2. Réponses: 7
    Dernier message: 01/05/2007, 21h55
  3. Compression & décompression de texte
    Par crocodilex dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 17/05/2006, 22h05
  4. [zLib] Compresser/Décompresser des données
    Par alex6891 dans le forum Réseau
    Réponses: 10
    Dernier message: 25/03/2006, 11h35
  5. Bibliothèque de compression décompression
    Par YéTeeh dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/03/2006, 23h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo