Traitement de compression de données Delphi (2)
Tampon : PChar ;
Nombre : entier ;
Commencer
file://Lire la taille de l'image originale à partir du flux d'images compressées
ComPRessedStream.ReadBuffer(Count, SizeOf(Count));
file://Allouer des blocs de mémoire pour que le flux d'images d'origine soit lu en fonction de la taille de l'image
GetMem (tampon, nombre);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Essayer
file://décompresse le flux d'images compressé et le stocke dans le bloc mémoire tampon
SourceStream.ReadBuffer(Buffer^, Count);
file://enregistrer le flux d'images d'origine dans le flux DestStream
DestStream.WriteBuffer(Buffer^, Nombre);
DestStream.Position := 0;//Réinitialiser le pointeur de flux
//Charge le flux d'images d'origine à partir du flux DestStream
Bmp.LoadFromStream(DestStream);
enfin
FreeMem (tampon);
DestStream.Free ;
fin;
fin;
4. Événement OnClick du bouton de compression
procédure TForm1.Button1Click(Expéditeur : TObject);
var
Bmp : TBitmap ;
CompressedStream : TMemoryStream ;
commencer
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Essayer
file://Capturez l'intégralité de l'écran actuel et enregistrez l'image dans l'objet Bmp GetScreen(Bmp);
file:// enregistre l'image dans l'objet Bmp dans le flux mémoire
Bmp.SaveToStream(CompressedStream);
file://Compresse le flux d'images d'origine selon le taux de compression par défaut
CompressBitmap(CompressedStream, clDefault);
file://Enregistrer le flux d'images compressé en tant que fichier dans un format personnalisé
CompressedStream.SaveToFile(' C:cj.dat' );
enfin
Bmp.Gratuit ;
CompressedStream.Free ;
fin;
fin;
5. Événement OnClick du bouton Décompresser
procédure TForm1.Button2Click(Expéditeur : TObject);
var
CompriméStream : TFileStream ;
Bmp : TBitmap ;
commencer
Bmp := TBitmap.Create;
file://ouvre un fichier au format compressé personnalisé en mode lecture seule du flux de fichiers
CompressedStream := TFileStream.Create(' C:cj.dat' , fmOpenRead);
Essayer
file://décompresse le flux d'images compressé
UnCompressBitmap (CompressedStream, Bmp);
file://Restaurer le flux d'images d'origine dans le fichier BMP spécifié
Bmp.SaveToFile(' C:cj.bmp' );
enfin
Bmp.Gratuit ;
CompressedStream.Free ;
fin;
fin;
De plus, l'objet TCompressionStream fournit également la propriété CompressionRate, qui est utilisée pour décrire le taux de compression après la compression des données d'origine. L'événement OnProgress est déclenché pendant les processus de compression et de décompression. Les développeurs peuvent écrire dans cet événement pour afficher la progression. .
Le code ci-dessus passe le débogage et s'exécute dans Delphi 5.0.