.Pak

Programmation avancée de jeux en PureBasic
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

.Pak

Message 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()
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Tu as mis compression 1, donc compression quasi nul. Mets 9 et tu verra.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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.
"Qui baise trop bouffe un poil." P. Desproges
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

:D Merci les gars mais j'ai essayer avec un format wav et sa fait pareil meme en encodage 9 8O
Répondre