Delphi-Datenkomprimierungsverarbeitung(2)
Puffer: PChar;
Anzahl: Ganzzahl;
Beginnen
file://Lesen Sie die Originalbildgröße aus dem komprimierten Bildstream
ComPRessedStream.ReadBuffer(Count, SizeOf(Count));
file://Ordnen Sie Speicherblöcke für den zu lesenden Originalbildstream basierend auf der Bildgröße zu
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Versuchen
file://dekomprimiert den komprimierten Bildstream und speichert ihn im Pufferspeicherblock
SourceStream.ReadBuffer(Buffer^, Count);
file://Speichern Sie den Originalbildstream im DestStream-Stream
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//Stream-Zeiger zurücksetzen
//Laden Sie den Originalbildstream aus dem DestStream-Stream
Bmp.LoadFromStream(DestStream);
Endlich
FreeMem(Puffer);
DestStream.Free;
Ende;
Ende;
4. OnClick-Ereignis der Komprimierungsschaltfläche
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
CompressedStream: TMemoryStream;
beginnen
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Versuchen
file://Erfassen Sie den gesamten aktuellen Bildschirm und speichern Sie das Bild im Bmp-Objekt GetScreen(Bmp);
file:// speichert das Bild im Bmp-Objekt im Speicherstream
Bmp.SaveToStream(CompressedStream);
file://Komprimiert den Originalbildstream gemäß dem Standardkomprimierungsverhältnis
CompressBitmap(CompressedStream, clDefault);
file://Speichern Sie den komprimierten Bildstream als Datei in einem benutzerdefinierten Format
CompressedStream.SaveToFile(' C:cj.dat' );
Endlich
Bmp.Free;
CompressedStream.Free;
Ende;
Ende;
5. Schaltfläche OnClick-Ereignis entpacken
procedure TForm1.Button2Click(Sender: TObject);
var
CompressedStream: TFileStream;
Bmp: TBitmap;
beginnen
Bmp := TBitmap.Create;
file://Öffnen Sie eine benutzerdefinierte komprimierte Formatdatei im schreibgeschützten Modus des Dateistreams
CompressedStream := TFileStream.Create(' C:cj.dat' , fmOpenRead);
Versuchen
file://dekomprimiert den komprimierten Bildstream
UnCompressBitmap(CompressedStream, Bmp);
file://Stellt den ursprünglichen Bildstream in der angegebenen BMP-Datei wieder her
Bmp.SaveToFile(' C:cj.bmp' );
Endlich
Bmp.Free;
CompressedStream.Free;
Ende;
Ende;
Darüber hinaus stellt das TCompressionStream-Objekt auch die Eigenschaft „CompressionRate“ bereit, mit der das Komprimierungsverhältnis nach der Komprimierung der Originaldaten beschrieben wird. Entwickler können in dieses Ereignis schreiben, um den Fortschritt anzuzeigen .
Der obige Code besteht aus Debugging und Ausführung in Delphi 5.0.