Delphi的压缩流与解压流(2)

2008-04-09 04:30:06来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:从Internet时间服务器获取标准格林尼治时间

下一篇:Delphi程序执行时实时生成报表