Borland公司推出的 RAD开发工具 Delphi 5.0作为 Windows平台上的主流开发工具,其可视化的开发环境和面向对象编程的强大功能已经吸引了无数的开发人员。
3.还原被压缩图像
procedure UnCompressBitmap(const CompressedStream: TFileStream; var Bmp: TBitmap);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: Integer;
Begin
file://
从被压缩的图像流中读出原始图像的尺寸 CompressedStream.ReadBuffer(Count, SizeOf(Count));
file://根据图像尺寸大小为将要读入的原始图像流分配内存块
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
file://
将被压缩的图像流解压缩,然后存入 Buffer内存块中 SourceStream.ReadBuffer(Buffer^, Count);
file://
将原始图像流保存至 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
file://
捕获当前整个屏幕 ,将图像保存至 Bmp对象中 GetScreen(Bmp);
file://
将 Bmp对象中的图像保存至内存流中 Bmp.SaveToStream(CompressedStream);
file://
按缺省的压缩比例对原始图像流进行压缩 CompressBitmap(CompressedStream, clDefault);
file://
将压缩之后的图像流保存为自定义格式的文件 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;
file://
以文件流的只读方式打开自定义的压缩格式文件 CompressedStream := TFileStream.Create(‘ C:\cj.dat’ , fmOpenRead);
Try
file://
将被压缩的图像流进行解压缩 UnCompressBitmap(CompressedStream, Bmp);
file://
将原始图像流还原为指定的 BMP文件 Bmp.SaveToFile(‘ C:\cj.bmp’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
此外 TCompressionStream对象还提供了 CompressionRate属性,该属性用于描述对原始数据进行压缩后的压缩比率,而 OnProgress事件在压缩与解压缩过程中都会被触发,开发人员可以在该事件中编写用于显示进度的代码。
以上代码在 Delphi 5.0中调试运行通过。
查看本文来源