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
CompressedStream.SaveToStream(SourceStream);//我的理解是:把传近来的内存流的内容的内容保存到压缩流,其实是通过这个压缩流把内存流的内容压缩并且保存在另外一个内存流里去(DestStream)
SourceStream.Free;//我做过实验,不把这个压缩流释放,DestStream的大小就是0,我的理解是:释放压缩流的同时触发:把压缩过的流保存到另外一个内存流里去
CompressedStream.Clear;//清空穿进来的内存流,准备把压缩后的内容给它(因为它是个var变量,所以操作的是地址)
CompressedStream.WriteBuffer(Count,SizeOf(Count));//这句话我就不明白了,我看帮助上说WriteBuffer的第一个变量应该是buffer,说实话,我现在还不太清楚buffer到底是什么,怎么用,但是我想最起码应该是PChar之类的吧,但是奇怪的是,这个例子里的竟然是个整数!还有就是SizeOf(Count)是什么意思,是取count的内存大小吗?例如:1000的sizeof(1000)是什么呢?
CompressedStream.CopyFrom(DestStream, 0);//给CompressedStream赋值
finally
DestStream.Free;//释放
end;
end;
我提出的问题,希望大家能够解答,最好在qq上给我解答,谢谢了,我的qq 12416204,我真的是想搞清楚问题,至于分数,好说,好说。
var
SourceStream:TCompressionStream;//压缩流
DestStream:TMemoryStream;//内存流
Count:Integer;
Begin
Count:=CompressedStream.Size;//传近来的内存流的大小
DestStream := TMemoryStream.Create;//建立一个内存流
SourceStream:=TCompressionStream.Create(CompressionLevel,DestStream);建立一个压缩流
Try
CompressedStream.SaveToStream(SourceStream);//我的理解是:把传近来的内存流的内容的内容保存到压缩流,其实是通过这个压缩流把内存流的内容压缩并且保存在另外一个内存流里去(DestStream)
SourceStream.Free;//我做过实验,不把这个压缩流释放,DestStream的大小就是0,我的理解是:释放压缩流的同时触发:把压缩过的流保存到另外一个内存流里去
CompressedStream.Clear;//清空穿进来的内存流,准备把压缩后的内容给它(因为它是个var变量,所以操作的是地址)
CompressedStream.WriteBuffer(Count,SizeOf(Count));//这句话我就不明白了,我看帮助上说WriteBuffer的第一个变量应该是buffer,说实话,我现在还不太清楚buffer到底是什么,怎么用,但是我想最起码应该是PChar之类的吧,但是奇怪的是,这个例子里的竟然是个整数!还有就是SizeOf(Count)是什么意思,是取count的内存大小吗?例如:1000的sizeof(1000)是什么呢?
CompressedStream.CopyFrom(DestStream, 0);//给CompressedStream赋值
finally
DestStream.Free;//释放
end;
end;
我提出的问题,希望大家能够解答,最好在qq上给我解答,谢谢了,我的qq 12416204,我真的是想搞清楚问题,至于分数,好说,好说。
解决方案 »
- 我根据需要在form的panel上动态创建一些button组件(数量不定),如何确定每个组件的点击事件?
- 有没有16进制转字符串的函数?
- 请问如何知道剩余系统资源的百分比
- 为什么我的removedir函数不可以上出目录!!
- 关于汉英混和字符串的查询问题,请大虾赐教。
- 各位有没有用到installshield中的billboards,就是能在你程序安装的时候放入介绍产品的图片。我放了两张图进去,它怎么没显示出来,是不是
- 停靠工具栏如何做?工具栏上可以任何其它控件
- 打印证书(不同字体,不同字号)的操作应如何进行?
- IdTCPClient 接收数据问题 Delphi 2010
- batchmove执行时会发动触发器吗?
- 有关treeview节点保存问题(请教)
- ole控件中有个execl文件,有若干个sheer,怎样对这个ole中execl的sheet进行循环
即用writebuffer(1000,sizeof(integer))是一样的