流的压缩与解压缩函数

uses Zlib;

//压缩函数
procedure Zip(var fs: TMemoryStream);
var
  cs: TCompressionStream;
  ms: TMemoryStream;
  num: Integer;
begin
  if not(Assigned(fs) and (fs.Size>0)) then Exit;

    num := fs.Size;
    ms := TMemoryStream.Create;
    cs := TCompressionStream.Create(clMax, ms);
  try
    fs.SaveToStream(cs);
    cs.Free;
    //ms.Position := 0;
    fs.Clear;
    fs.WriteBuffer(num, sizeof(num));
    fs.CopyFrom(ms, 0);
  finally
    ms.Free;
  end;
end;

//解压函数
procedure UnZip(var fs: Tmemorystream);
var
  ds: TDecompressionStream;
  ms: TMemoryStream;
  num: Integer;
begin
  if not(Assigned(fs) and (fs.Size>0)) then Exit;

  fs.Position := 0;
  fs.ReadBuffer(num,sizeof(num));
  ms := TMemoryStream.Create;
  ds := TDecompressionStream.Create(fs);
  try
    ms.SetSize(num);
    ds.Read(ms.Memory^, num);
    //ms.Position := 0;
    fs.Clear;
    fs.CopyFrom(ms, 0);
  finally
    ds.Free;
    ms.Free;
  end;
end;


//压缩测试
procedure TForm1.Button1Click(Sender: TObject);
var
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  ms.LoadFromFile('c:/temp/test.txt');
  Zip(ms);
  ms.SaveToFile('c:/temp/test.zipx');
end;

//解压测试
procedure TForm1.Button2Click(Sender: TObject);
var
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  ms.LoadFromFile('c:/temp/test.zipx');
  UnZip(ms);
  ms.SaveToFile('c:/temp/test2.txt');
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  作为信息时代象征的Internet的广泛使用是毋庸置疑的,作为Internet的终极用户,您可能经常有这种抱怨,我的机器够快的,但使用Internet时总觉得慢,作为ISP又抱怨用户不愿意掏钱买更好的线路,作为ICP又觉得没有太好的软件可以让数据的量变小,这种受带宽限制的Internet着实让很多人伤心,何不制作一个数据压缩程序,将数据压缩一下,让他变得快些呢,Web Server和IE提供了部分这样的功能,也就是将网页的内容进行压缩,但这仅仅是部分功能。   对于象地理信息系统,图书查询系统,ERP系统等的,Internet要传输的数据量相当大,而象图形数据、XML数据、文本数据其压缩率是相当高的,甚至可以压缩到百分之几,正是由于这个要求,我制作了这么两个软件:一是传输/文件的压缩软件,另一个是基于HTTP的压缩传输软件,这两个软件花费了我很多心血(尽管里面还有一些BUG),但我准备把他作为免费软件,来庆贺我的生日,如果你想使用或想得到源码请发邮件给我。   第一个软件,传输/文件的压缩,利用Internet中惯常使用的gzip, deflate算法,可以和sun java的GZipInputStream和GZipOutputStream互操作   第二个软件,基于HTTP的压缩传输软件,可完全和IE的VBScript和JScript无缝融合   更详细信息请看使用文档Help.doc   例子文件包含这么几个: readme.doc 本文件 help.doc 帮助文档 GZCore.dll gzip,deflate压缩/解压程序,使用前必须注册 GZUtil.dll GZCore.dll的缓冲区处理封装,用于Web的处理,使用前必须注册 GZip4Web.dll 基于Web的压缩文件/的传送,使用前必须注册 Test.zip 第一个产品的例子, C++代码工程 Temp.asp 第一个产品的例子, 直接用压缩程序发送GZip SvrRecv.asp 第二个产品的例子,用于服务端处理接受的压缩 SvrSend.asp 第二个产品的例子,用于服务端处理发送的压缩 default.asp 第二个产品的例子,用于客户端处理处理接受文件,GZip   如果您有好的建议或BUG汇报,请邮件给我,我先表示感谢。   重要说明,此软件不允许使用于商业用途,否则会受到牵连。   另注,由于本软件使用带来的任何损失,软件制作者概不负责。    Ashley Wang ashleywang@21cn.com 2001.12.24
在MATLAB中,图像压缩解压缩是非常常见的操作。图像压缩是将图像文件的大小减小,而不会明显损失图像质量,这对于减少存储空间和加快图像传输速度都非常有用。而解压缩则是将压缩后的图像文件还原成原始的大小和质量。 在MATLAB中,可以使用一些内置的函数来进行图像压缩解压缩。例如,可以使用imresize函数来改变图像的分辨率,从而降低图像文件的大小。此外,还可以使用imwrite函数将图像以不同的压缩格式(如JPEG、PNG等)保存,从而减小图像文件的大小。 而在进行图像解压缩时,可以使用imread函数压缩后的图像文件读入MATLAB中,然后使用imresize函数将图像还原为原始分辨率。如果压缩时使用了特定的压缩格式,还可以使用相应的函数进行解压缩,如jpegread函数用于解压JPEG格式的图像文件。 除了使用MATLAB内置的函数,还可以通过编写自定义的算法来实现图像压缩解压缩。例如,可以使用离散余弦变换(DCT)对图像进行变换,并丢弃一部分高频分量来实现压缩,然后再利用逆DCT将图像还原。这些算法需要一定的数学和编程知识,但可以实现更灵活和高效的图像压缩解压缩。 总之,MATLAB提供了丰富的函数和工具,可以实现图像的压缩解压缩操作,同时也支持自定义算法,可以满足不同需求的图像处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值