Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51332
  • 博文数量: 10
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-30 10:39
文章分类

全部博文(10)

文章存档

2007年(10)

我的朋友

分类: 服务器与存储

2007-04-30 21:53:00

转摘
 
最近网上流传了一个几十K的压缩文件,解压后能有几百M.

    这是有可能实现的一种特殊的情况!但是这只是在文件内容极其特殊的情况下压缩的结果。对一般实际应用是没有通用性的。这里只讨论出现这种特殊情况的原理。

    在我看来,压缩就是能够减少必要的、代表数据传输或存储中的信息位数,进而节省带宽和或存储空间的技术。

    怎么压缩?我理解的就是:提取文件中的信息中相同的信息,做成一个信息的单元,然后再用控制信息来控制这个信息单元,控制信息就包含了文件的格式,文件的某些特别的属性记录,以及信息单元的个数等。这样,在解压的时候,只需要用控制信息控制引导信息单元的创建,就能创建一个和原来文件一样的文件。(仅为个人观点,有可能不对或不完整。请指教。)

    也就是说,如果文件中的相同信息越多,就能压缩得越小,压缩比就越大。要压缩的文件内容和压缩后的压缩文件大小有直接关系。

    那个几十K的压缩文件我下载后解压打开(还不能用windows自带的文本,超大无法打开,用的是UltraEdit32)一看,原来是4兆多个数字“1”,压缩文件只要有:信息单元:1,控制信息:四兆个信息单元,这样就能在解压的时候制造一个和原来文件一样的400多M的文本文件,内容是四兆个一。

    我们平常使用的BMP格式的图片。BMP图是每个点都记录了RGB的信息,如果是一张超大的,超高分辨率的白色的BMP图片,那它每个点的RGB信息都一样,如果压缩的话,只需要保存一个点的RGB信息,和一共有多少个点的这个控制信息,那这个BMP图片压缩后,一定会很小。

    为了证明我的想法,我立即用Photoshop7.0制作了一张分辨率为9999(软件最大允许的分辨率),长和宽各为30000像素(软件最大允许的像素)的图片,然后保存为BMP图,查看属性,有一百多M。
    然后马上用WinRar3.4,设置成“最好”压缩,结果证实了我的想法,压缩后的文件,只有很小的8KB。

    现在明白了,为什么能有几十K的压缩包解压就有几百M。
   

文件: 超高压缩.rar
大小: 39KB
下载: 下载

    但是,只有在极其特殊的情况之下才可能有这样的结果。没有什么实用价值,只是想到了就说说而已。不过,科技日新月异,谁也说不准,将来的某种压缩算法真的能把任何内容的东西都能有10000:1的超高压缩比。

阅读(3360) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-01-22 16:24:32

怎么做的呀?能不能教教我!