COMPRESSION AVEC ZLIB

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 4 déc. 2002 à 19:26
syntaxerror99 Messages postés 2 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 5 mars 2008 - 5 avril 2009 à 08:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/2441-compression-avec-zlib

syntaxerror99 Messages postés 2 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 5 mars 2008
5 avril 2009 à 08:52
good job 9/10
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
28 oct. 2006 à 15:44
Bon ok j'ai rien dit ... devoir mémoriser la taille de mes données d'entrée ... ca me convient pas trop mais pas grave je vais le faire :D
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
17 oct. 2006 à 22:47
Merci j'ai mis le 10 :) tiens j'ai rajouté ce qui me manquais au passage.

' Decompression d'un fichier dans un tableau de "byte"
' Decompress a file in a byte Array
Public Function DecompressFileToByteArray(ByVal FilePathIn As String, ByRef TheData() As Byte) As Long
Dim intNextFreeFile As Integer
Dim lngResult As Long
Dim lngFileLen As Long

ReDim TheData(FileLen(FilePathIn))

' Read byte array from file
' Lire le fichier d'entré dans un tableau de "byte"
intNextFreeFile = FreeFile
Open FilePathIn For Binary Access Read As #intNextFreeFile
Get #intNextFreeFile, , lngFileLen ' the original (uncompressed) file's length
Get #intNextFreeFile, , TheData() ' lngFileLen : La taille original du fichier décompresser.
Close #intNextFreeFile

' Decompress
' Decompression du tableau de "byte"
DecompressFileToByteArray = DecompressByteArray(TheData(), lngFileLen)
End Function

' Compression d'un tableau de "byte" dans un fichier
' Compress a byte array in a file
Public Function CompressByteArrayToFile(ByRef TheData() As Byte, ByVal FilePathOut As String, ByVal CompressionLevel As Integer) As Long
Dim intNextFreeFile As Integer
Dim lngResult As Long
Dim lngFileLen As Long

' On met en mémoire le taille du tableau de "Byte" décompresser
lngFileLen = UBound(TheData)

' Compression du tableau de byte
' Compress byte array
CompressByteArrayToFile = CompressByteArray(TheData(), CompressionLevel)

' Efface le fichier de sortie
' Kill any file in place
On Error Resume Next
Kill FilePathOut
On Error GoTo 0

' Ecrit le tableau de "byte" dans le fichier de sortie
' Write it out
intNextFreeFile = FreeFile
Open FilePathOut For Binary Access Write As #intNextFreeFile
Put #intNextFreeFile, , lngFileLen ' must store the length of the original (uncompress) byte array
Put #intNextFreeFile, , TheData() ' lngFileLen : doit contenir la du tableau de "Byte" décompresser
Close #intNextFreeFile

' Attention : le tableau de "byte" n'est pas désalouer
' Warning : the byte array is not desallocate
' Erase TheBytes
End Function



Et en ce qui concerne l'utlisation :
Exemple pour la compression :

ReDim TheByte(255)
For i = 0 To 255
TheByte(i) = 255
Next i
CompressByteArrayToFile TheByte, "test", 9

Et .... Exemple pour la décompression :

ReDim TheByte(0)
DecompressFileToByteArray "test", TheByte

Voila.
Ha et si vous compté test sur quelque ligne comme moi pour etre sur de vous mettez "Erase TheByte" entre les deux
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
17 oct. 2006 à 20:56
c'est fait ^^
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
17 oct. 2006 à 20:55
je supprime ta note si tu veux et renote ...

++
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
17 oct. 2006 à 20:08
Oula oula j'ai rien dis parfais parfais :)

Public Function DecompressByteArray(TheData() As Byte, OriginalSize As Long) As Long

Ca devrais me convenir :) SMACK

Je vais voir si je peu pas changé pour remettre un ptit 10
threadom Messages postés 101 Date d'inscription mardi 8 avril 2003 Statut Membre Dernière intervention 1 novembre 2007
17 oct. 2006 à 20:00
Heureusement qu'on note pas la form :) sinon merci pour le module je vais faire quelque modif mais ca va me servir je pense ... :) l'inconvénient c'est que j'aimerais décompresser mon fichier en mémoire pour ne pas avoir de repertoire temporaire a créer ...

Ha ouai heu tu pourrais ptet modifier pour mettre l'extension en gzip ;)
cs_Ouneufe Messages postés 60 Date d'inscription mardi 4 septembre 2001 Statut Membre Dernière intervention 19 janvier 2009
13 août 2003 à 15:50
il faut sélectionner un fichier compressé avant de décompresser
coolcrash Messages postés 24 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 3 février 2003
8 déc. 2002 à 05:42
oui cela est supposé être possible, j'utilise la librairie zlib, sa crée des extension du .gzip si je ne me trompe.

voici un site de référence http://www.gzip.org/zlib/
chitboy Messages postés 6 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 7 mars 2003
7 déc. 2002 à 01:12
C'est peut etre une question conne.
Mais je voudrais savoir s'il est possible de decompresser le fichier (compressé avec ton application) avec un autre logiciel que ton appli. De plus, quelle est la reelle extension du fichier? (ce n'est ni zip, gz, ...?)
coolcrash Messages postés 24 Date d'inscription dimanche 3 décembre 2000 Statut Membre Dernière intervention 3 février 2003
6 déc. 2002 à 20:00
Moi non plus, qu'es ce que tu a voulu compressé ?

le programme marche très bien
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
4 déc. 2002 à 19:26
ca me dis memoire insuffisante ...

Avec 450 Mo de RAM et 28 Go de libre je pige pas là ...
Rejoignez-nous