Pemrosesan kompresi data Delphi (2)
Penyangga: PChar;
Hitungan: Integer;
Mulai
file://Baca ukuran gambar asli dari aliran gambar terkompresi
ComPRessedStream.ReadBuffer(Hitungan, SizeOf(Hitungan));
file://Alokasikan blok memori agar aliran gambar asli dapat dibaca berdasarkan ukuran gambar
GetMem(Buffer, Hitung);
DestStream := TMemoryStream.Buat;
SourceStream := TDecompressionStream.Create(CompressedStream);
Mencoba
file://dekompresi aliran gambar terkompresi dan menyimpannya di blok memori Buffer
SourceStream.ReadBuffer(Buffer^, Hitung);
file://simpan aliran gambar asli ke aliran DestStream
DestStream.WriteBuffer(Buffer^, Hitung);
DestStream.Position := 0;//Setel ulang penunjuk aliran
//Muat aliran gambar asli dari aliran DestStream
Bmp.LoadFromStream(DestStream);
Akhirnya
FreeMem(Penyangga);
DestStream.Gratis;
akhir;
akhir;
4. Tombol kompresi acara OnClick
prosedur TForm1.Button1Click(Pengirim: TObject);
var
Bmp: TBitmap;
Aliran Terkompresi: TMemoryStream;
mulai
Bmp := TBitmap.Buat;
CompressedStream := TMemoryStream.Buat;
Mencoba
file://Tangkap seluruh layar saat ini dan simpan gambar ke objek Bmp GetScreen(Bmp);
file:// menyimpan gambar dalam objek Bmp ke aliran memori
Bmp.SaveToStream(Stream Terkompresi);
file://Mengompresi aliran gambar asli sesuai dengan rasio kompresi default
CompressBitmap(CompressedStream, clDefault);
file://Simpan aliran gambar terkompresi sebagai file dalam format khusus
CompressedStream.SaveToFile(' C:cj.dat' );
Akhirnya
Bmp.Gratis;
Aliran Terkompresi.Gratis;
akhir;
akhir;
5. Buka zip tombol acara OnClick
prosedur TForm1.Button2Click(Pengirim: TObject);
var
Aliran Terkompresi: TFileStream;
Bmp: TBitmap;
mulai
Bmp := TBitmap.Buat;
file://membuka file format terkompresi khusus dalam mode aliran file hanya-baca
CompressedStream := TFileStream.Create(' C:cj.dat' , fmOpenRead);
Mencoba
file://dekompresi aliran gambar terkompresi
UnCompressBitmap(CompressedStream, Bmp);
file://Pulihkan aliran gambar asli ke file BMP yang ditentukan
Bmp.SaveToFile(' C:cj.bmp' );
Akhirnya
Bmp.Gratis;
Aliran Terkompresi.Gratis;
akhir;
akhir;
Selain itu, objek TCompressionStream juga menyediakan properti CompressionRate, yang digunakan untuk menggambarkan rasio kompresi setelah mengompresi data asli. Peristiwa OnProgress dipicu selama proses kompresi dan dekompresi .
Kode di atas lolos debugging dan berjalan di Delphi 5.0.