Page 1 sur 1

.Pak

Publié : sam. 21/août/2004 1:28
par garzul
:( Hier soir j'ai voulue compacter un fichier son mais a priori sa ne compacte pas pourtant polux dit sur un tuto que sa peut compacter alors j'ai essayer avec un fichier mp3 et wav mais toujour la meme taille de fichier es - normale voici le code

Code : Tout sélectionner

CreatePack("Zik.pak")
 AddPackFile("Genesia.mp3",1) 
ClosePack()

Publié : sam. 21/août/2004 6:09
par Guimauve
Un code posté par Denis il y a quelque temps déjà. C'est un exemple de compression-décompression. J'espère que ça peut t'aider.

Code : Tout sélectionner

#FicherCourant = 1


;========================================================================================================
;=======================================================================================================

Procedure.l Compresse(NomFichier$)
     
     Resultat = 1
     If CreatePack(NomFichier$) ; crée le le fichier qui va être compressé
          
          ; tu peux choisir un ou plusieur fichiers à compresser
          packers$ = OpenFileRequester("Choisissez le(s) fichiers a compresser", "tout", "*.*", 0, #PB_Requester_MultiSelection)
          
          If packers$ ; teste si la chaine existe
               Repeat
                    Fichier$ = GetFilePart(packers$) ; récupère seulement le nom de fichier
                    AddPackMemory(@Fichier$, Len(Fichier$) + 1) ; ajoute le nom de fichier, la zone mémoire étant la chaine Fichier$
                    ; on ajoute 1 à len(Fichier$) pour écrire le 0 qui est le caractère de fin de chaine
                    AddPackFile(packers$, 9) ; rajoute la selection et niveau de compression 9
                    packers$ = NextSelectedFileName() ; ajoute le fichier compressé
               Until packers$ = "" ; on reboucle tant qu'il y a des fichiers compressés
               ClosePack() ; ferme le pack
          Else
               MessageRequester("Information", "Aucun fichier n'a été sélectionné", #MB_ICONERROR)
               Resultat = 0
          EndIf
     Else
          Resultat = 0
     EndIf
     
     ProcedureReturn Resultat
     
EndProcedure


;=======================================================================================================
;=======================================================================================================

Procedure Decompresse(FichierCompresser$)
     
     If OpenPack(FichierCompresser$)
          
          ; MessageRequester("Ok","OpenPack a réussi",16)  ; on affiche que l'ouverture du fichier compressé a réussie
          Repertoire.s = PathRequester("Ou décompresser les fichiers ?", "")
          NomFichier.s = Space(256) ; crée la variable chaine qui récupèrera le nom de fichier courant
          
          AdresseMemoire = NextPackFile() ; On récupère le premier élément compressé, c'est-à-dire le nom du fichier
          
          While AdresseMemoire ; on débute la boucle
               ; Debug("AdresseMemoire")                   ; la variable utilisée AdresseMemoire est partagé, tu doit utiliser
               ; Debug(AdresseMemoire )                    ; la même pour récupérer le nom de fichier et le fichier lui-même
               ; Debug("")
               
               NomFichier = PeekS(AdresseMemoire) ; récupère le nom de fichier en situé en mémoire
               ; Debug(NomFichier)
               
               AdresseMemoire = NextPackFile() ; récupère l'adresse du fichier à décompresser
               
               Taille = PackFileSize() ; récupère la taille du fichier à décompresser
               
               CreateFile(#FicherCourant, Repertoire + NomFichier) ; on crée le fichier sur le disque avec le répertoire sélectionné
               WriteData(AdresseMemoire, Taille ) ; on écrit le contenu du fichier
               CloseFile(#FicherCourant) ; on ferme le fichier
               
               AdresseMemoire = NextPackFile() ; on continue l'opération tant que adresseMemoire est différent de 0
          Wend
          ClosePack() ; ferme le pack
          
     Else
          MessageRequester("Erreur", "OpenPack a échoué", #MB_ICONERROR)
     EndIf
     
EndProcedure


;===========================================================================================================
;===========================================================================================================
A+

Guimauve

Publié : sam. 21/août/2004 9:08
par Heis Spiter
Tu as mis compression 1, donc compression quasi nul. Mets 9 et tu verra.

Publié : sam. 21/août/2004 9:15
par comtois
je pense que Polux voulait dire que tu pouvais ajouter n'importe quel type de fichier à ton fichier .pak. Par contre l'algo compressera plus ou moins les fichiers selon les données qu'ils contiennent.
Le format mp3 c'est déjà une sorte de compression , je suppose qu'il ne faut pas s'attendre à des miracles ?

ensuite la syntaxe c'est

AddPackFile(NomFichier$ [, NiveauCompression])

et toi tu as un mis NiveauCompression = 1

Essaye en mettant 9 , tu devrais voir un changement .

AddPackFile("Genesia.mp3", 9)

[Edit] le temps que je prenne mon café et que je valide , Heis avait déjà répondu :)

Publié : sam. 21/août/2004 11:53
par Le Soldat Inconnu
avec du mp3 et l'algo de pack de pure, si on compresse à plus de 1% tu as de la chance à mon avis.
déjà avec du zip, ça compresse rien, et avec du rar c'est pas la joie non plus (enfin, ça dépend de l'encodage mp3, si c'est du 320 kbit/s ce qui m'téonnerai, ça va compressé, mais du 128, niet)
c'est pareil avec du jpg, du png, du gif ou tout autre format déjà compressé, faire une archive change pas grand chose

Publié : sam. 21/août/2004 12:21
par KarLKoX
Le mp3 est un format de compression avec perte donc ca me parait normal d'avoir tres peu de gains voir aucuns lors de la compression en .pak (de simples fichiers zip).
Le 320 kbits se compresse mieux car il n'y a aucune perte à ce bitrate.

Publié : sam. 21/août/2004 13:45
par garzul
:D Merci les gars mais j'ai essayer avec un format wav et sa fait pareil meme en encodage 9 8O