Delphi数据压缩处理(2)

原创 2001年09月29日 15:10:00

 

Delphi数据压缩处理(2)

      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中调试运行通过。

Delphi压缩流和解压流的应用

软件开发者不免都要遇到压缩数据的问题!经常使用Delphi的朋友都知道,它为我们提供了两个流类(TCompressionStream和TDecompressionStream)来完成数据的压缩和解压缩...
  • mpg2012
  • mpg2012
  • 2013年09月09日 09:57
  • 2055

系统学习数字图像处理之图像压缩

1
  • App_12062011
  • App_12062011
  • 2015年01月06日 22:09
  • 1973

pako.js对数据进行gzip压缩传递到后台解析,解决数据量大的请求问题

相信很多人在开发中都不可避免会遇到数据量过大,request无法成功传递到后台的问题,通常解决的方法会有: 1、利用ajax异步,将数据切块分别上传,后台进行数据校验以及拼凑;(个人认为这个比较友好,...
  • JodenHe
  • JodenHe
  • 2017年04月29日 18:32
  • 1923

Delphi : ZLib的数据压缩和解压缩

http://blog.sina.com.cn/s/blog_4ad042e50102e1pk.html Delphi的开发者可以使用ZLib单元中定义的TCompressionStream进行数据...
  • l799623787
  • l799623787
  • 2012年09月26日 14:47
  • 509

数据压缩 程序2

  • 2008年03月23日 19:28
  • 11KB
  • 下载

数据压缩(2)之源程序6

  • 2006年02月23日 09:05
  • 1KB
  • 下载

数据压缩原理与应用 经典 第一部分(共2部分)

  • 2010年11月22日 10:12
  • 8.58MB
  • 下载

数据压缩(2)之源程序1

  • 2006年02月23日 09:05
  • 3KB
  • 下载

数据压缩(2)之源程序5

  • 2006年02月23日 09:05
  • 4KB
  • 下载

数据压缩(4)之源程序2

  • 2006年02月23日 09:05
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi数据压缩处理(2)
举报原因:
原因补充:

(最多只允许输入30个字)