zt一个压缩文件的例子,写得不确切,要多看几次。
uses zlib;2.压缩图像  
 
procedure CompressBitmap(var CompressedStream: TMemoryStream;
const CompressionLevel: TCompressionLevel);  
 
var  
 
SourceStream: TCompressionStream;  
 
DestStream: TMemoryStream;  
 
Count: Integer;  
 
Begin  
 
//获得图像流的原始尺寸  
 
Count := CompressedStream.Size;  
 
DestStream := TMemoryStream.Create;  
 
SourceStream:=TCompressionStream.Create  
 
(CompressionLevel, DestStream);  
 
Try  
 
//SourceStream中保存着原始的图像流  
 
CompressedStream.SaveToStream(SourceStream);  
 
//将原始图像流进行压缩, DestStream中保存着压缩后的图像流  
 
SourceStream.Free;  
 
CompressedStream.Clear;  
 
//写入原始图像的尺寸  
 
CompressedStream.WriteBuffer(Count, SizeOf  
 
(Count));  
 
//写入经过压缩的图像流  
 
CompressedStream.CopyFrom(DestStream, 0);  
 
finally  
 
DestStream.Free;  
 
end;  
 
end;  
 
3.还原被压缩图像  
 
procedure UnCompressBitmap(const CompressedStream: TFileStream; 
var Bmp: TBitmap);  
 
var  
 
SourceStream: TDecompressionStream;  
 
DestStream: TMemoryStream;  
 
Buffer: PChar;  
 
Count: Integer;  
 
Begin  
 
//从被压缩的图像流中读出原始图像的尺寸  
 
CompressedStream.ReadBuffer(Count, SizeOf(Count));  
 
//根据图像尺寸大小为将要读入的原始图像流分配内存块  
 
GetMem(Buffer, Count);  
 
DestStream := TMemoryStream.Create;  
 
SourceStream := TDecompressionStream.Create(CompressedStream);  
 
Try  
 
//将被压缩的图像流解压缩,然后存入 Buffer内存块中  
 
SourceStream.ReadBuffer(Buffer^, Count);  
 
//将原始图像流保存至 DestStream流中  
 
DestStream.WriteBuffer(Buffer^, Count);  
 
DestStream.Position := 0;//复位流指针  
 
//从 DestStream流中载入原始图像流  
 
Bmp.LoadFromStream(DestStream);  
 
finally  
 
FreeMem(Buffer);  
 
DestStream.Free;  
 
end;  
 
end;  
 
4.压缩按钮 OnClick事件  
 
procedure TForm1.Button1Click(Sender: TObject);  
 
var  
 
Bmp: TBitmap;  
 
CompressedStream: TMemoryStream;  
 
begin  
 
Bmp := TBitmap.Create;  
 
CompressedStream := TMemoryStream.Create;  
 
Try  
 
//捕获当前整个屏幕 ,将图像保存至 Bmp对象中 GetScreen(Bmp);  
 
//将 Bmp对象中的图像保存至内存流中  
 
Bmp.SaveToStream(CompressedStream);  
 
//按缺省的压缩比例对原始图像流进行压缩  
 
CompressBitmap(CompressedStream, clDefault);  
 
//将压缩之后的图像流保存为自定义格式的文件  
 
CompressedStream.SaveToFile(‘ C:\cj.dat’ );  
 
finally  
 
Bmp.Free;  
 
CompressedStream.Free;  
 
end;  
 
end;  
 
5.解压缩按钮 OnClick事件  
 
procedure TForm1.Button2Click(Sender: TObject);  
 
var  
 
CompressedStream: TFileStream;  
 
Bmp: TBitmap;  
 
begin  
 
Bmp := TBitmap.Create;  
 
//以文件流的只读方式打开自定义的压缩格式文件  
 
CompressedStream := TFileStream.Create(‘ C:\cj.dat’ , fmOpenRead);  
 
Try  
 
//将被压缩的图像流进行解压缩  
 
UnCompressBitmap(CompressedStream, Bmp);  
 
//将原始图像流还原为指定的 BMP文件  
 
Bmp.SaveToFile(‘ C:\cj.bmp’ );  
 
finally  
 
Bmp.Free;  
 
CompressedStream.Free;  
 
end;  
 
end;  
 
此外 TCompressionStream对象还提供了 CompressionRate属性,该属性用于描述对
原始数据进行压缩后的压缩比率,而 OnProgress事件在压缩与解压缩过程中都会被
触发,开发人员可以在该事件中编写用于显示进度的代码。