范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

压缩格式有哪些(压缩文件的作用和目的)

  我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 starhttps://github.com/crisxuan/bestJavaer已提交此篇文章
  此篇文章是《程序员需要了解的硬核知识》第五篇文章,历史文章请戳
  程序员需要了解的硬核知识之内存
  程序员需要了解的硬核知识之CPU
  程序员需要了解的硬核知识之二进制
  程序员需要了解的硬核知识之磁盘
  之前的文章更多的介绍了计算机的硬件知识,会有一些难度,本篇文章的门槛会低一些,一起来看一下计算机中都有哪些压缩算法认识压缩算法
  我们想必都有过压缩和 解压缩文件的经历,当文件太大时,我们会使用文件压缩来降低文件的占用空间。比如上传文件的限制是100 MB,我这里有个文件夹无法上传,但是我解压完成后的文件一定会小于 100 MB,那么我的文件就可以上传了。
  此外,我们把相机拍完的照片保存到计算机上的时候,也会使用压缩算法进行文件压缩,文件压缩的格式一般是JPEG。
  那么什么是压缩算法呢?压缩算法又是怎么定义的呢?在认识算法之前我们需要先了解一下文件是如何存储的文件存储
  文件是将数据存储在磁盘等存储媒介的一种形式。程序文件中最基本的存储数据单位是字节。文件的大小不管是 xxxKB、xxxMB等来表示,就是因为文件是以字节 B = Byte 为单位来存储的。
  文件就是字节数据的集合。用 1 字节(8 位)表示的字节数据有 256 种,用二进制表示的话就是 0000 0000 - 1111 1111 。如果文件中存储的数据是文字,那么该文件就是文本文件。如果是图形,那么该文件就是图像文件。在任何情况下,文件中的字节数都是连续存储的。
  压缩算法的定义
  上面介绍了文件的集合体其实就是一堆字节数据的集合,那么我们就可以来给压缩算法下一个定义。
  压缩算法(compaction algorithm)指的就是数据压缩的算法,主要包括压缩和还原(解压缩)的两个步骤。
  其实就是在不改变原有文件属性的前提下,降低文件字节空间和占用空间的一种算法。
  根据压缩算法的定义,我们可将其分成不同的类型:
  有损和无损
  无损压缩:能够无失真地从压缩后的数据重构,准确地还原原始数据。可用于对数据的准确性要求严格的场合,如可执行文件和普通文件的压缩、磁盘的压缩,也可用于多媒体数据的压缩。该方法的压缩比较小。如差分编码、RLE、Huffman编码、LZW编码、算术编码。
  有损压缩:有失真,不能完全准确地恢复原始数据,重构的数据只是原始数据的一个近似。可用于对数据的准确性要求不高的场合,如多媒体数据的压缩。该方法的压缩比较大。例如预测编码、音感编码、分形压缩、小波压缩、JPEG/MPEG。
  对称性
  如果编解码算法的复杂性和所需时间差不多,则为对称的编码方法,多数压缩算法都是对称的。但也有不对称的,一般是编码难而解码容易,如 Huffman 编码和分形编码。但用于密码学的编码方法则相反,是编码容易,而解码则非常难。
  帧间与帧内
  在视频编码中会同时用到帧内与帧间的编码方法,帧内编码是指在一帧图像内独立完成的编码方法,同静态图像的编码,如 JPEG;而帧间编码则需要参照前后帧才能进行编解码,并在编码过程中考虑对帧之间的时间冗余的压缩,如 MPEG。
  实时性
  在有些多媒体的应用场合,需要实时处理或传输数据(如现场的数字录音和录影、播放MP3/RM/VCD/DVD、视频/音频点播、网络现场直播、可视电话、视频会议),编解码一般要求延时 ≤50 ms。这就需要简单/快速/高效的算法和高速/复杂的CPU/DSP芯片。
  分级处理
  有些压缩算法可以同时处理不同分辨率、不同传输速率、不同质量水平的多媒体数据,如JPEG2000、MPEG-2/4。
  这些概念有些抽象,主要是为了让大家了解一下压缩算法的分类,下面我们就对具体的几种常用的压缩算法来分析一下它的特点和优劣几种常用压缩算法的理解RLE 算法的机制
  接下来就让我们正式看一下文件的压缩机制。首先让我们来尝试对 AAAAAABBCDDEEEEEF 这 17 个半角字符的文件(文本文件)进行压缩。虽然这些文字没有什么实际意义,但是很适合用来描述 RLE 的压缩机制。
  由于半角字符(其实就是英文字符)是作为 1 个字节保存在文件中的,所以上述的文件的大小就是 17 字节。如图
  (这里有个问题需要读者思考一下:为什么 17 个字符的大小是 17 字节,而占用空间却很大呢? 这个问题此篇文章暂不讨论)
  那么,如何才能压缩该文件呢?大家不妨也考虑一下,只要是能够使文件小于 17 字节,我们可以使用任何压缩算法。
  最显而易见的一种压缩方式我觉得你已经想到了,就是把相同的字符去重化,也就是 字符 * 重复次数 的方式进行压缩。所以上面文件压缩后就会变成下面这样
  从图中我们可以看出,AAAAAABBCDDEEEEEF 的17个字符成功被压缩成了 A6B2C1D2E5F1 的12个字符,也就是 12 / 17 = 70%,压缩比为 70%,压缩成功了。
  像这样,把文件内容用 数据 * 重复次数 的形式来表示的压缩方法成为 RLE(Run Length Encoding, 行程长度编码) 算法。RLE 算法是一种很好的压缩方法,经常用于压缩传真的图像等。因为图像文件的本质也是字节数据的集合体,所以可以用 RLE 算法进行压缩RLE 算法的缺点
  RLE 的压缩机制比较简单,所以 RLE 算法的程序也比较容易编写,所以使用 RLE 的这种方式更能让你体会到压缩思想,但是 RLE 只针对特定序列的数据管用,下面是 RLE 算法压缩汇总
  文件类型压缩前文件大小压缩后文件大小压缩比率文本文件14862字节29065字节199%图像文件96062字节38328字节40%EXE文件24576字节15198字节62%
  通过上表可以看出,使用 RLE 对文本文件进行压缩后的数据不但没有减小反而增大了!几乎是压缩前的两倍!因为文本字符种连续的字符并不多见。
  就像上面我们探讨的这样,RLE 算法只针对连续的字节序列压缩效果比较好,假如有一连串不相同的字符该怎么压缩呢?比如说ABCDEFGHIJKLMNOPQRSTUVWXYZ,26个英文字母所占空间应该是 26 个字节,我们用 RLE 压缩算法压缩后的结果为 A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1 ,所占用 52 个字节,压缩完成后的容量没有减少反而增大了!这显然不是我们想要的结果,所以这种情况下就不能再使用 RLE 进行压缩。哈夫曼算法和莫尔斯编码
  下面我们来介绍另外一种压缩算法,即哈夫曼算法。在了解哈夫曼算法之前,你必须舍弃半角英文数字的1个字符是1个字节(8位)的数据。下面我们就来认识一下哈夫曼算法的基本思想。
  文本文件是由不同类型的字符组合而成的,而且不同字符出现的次数也是不一样的。例如,在某个文本文件中,A 出现了 100次左右,Q仅仅用到了 3 次,类似这样的情况很常见。哈夫曼算法的关键就在于 多次出现的数据用小于 8 位的字节数表示,不常用的数据则可以使用超过 8 位的字节数表示。A 和 Q 都用 8 位来表示时,原文件的大小就是 100次 * 8 位   3次 * 8 位 = 824位,假设 A 用 2 位,Q 用 10 位来表示就是 2 * 100   3 * 10 = 230 位。
  不过要注意一点,最终磁盘的存储都是以8位为一个字节来保存文件的。
  哈夫曼算法比较复杂,在深入了解之前我们先吃点甜品,了解一下 莫尔斯编码,你一定看过美剧或者战争片的电影,在战争中的通信经常采用莫尔斯编码来传递信息,例如下面
  接下来我们来讲解一下莫尔斯编码,下面是莫尔斯编码的示例,大家把 1 看作是短点(嘀),把 11 看作是长点(嗒)即可。
  莫尔斯编码一般把文本中出现最高频率的字符用短编码 来表示。如表所示,假如表示短点的位是 1,表示长点的位是 11 的话,那么 E(嘀)这一数据的字符就可以用 1 来表示,C(滴答滴答)就可以用 9 位的 110101101来表示。在实际的莫尔斯编码中,如果短点的长度是 1 ,长点的长度就是 3,短点和长点的间隔就是1。这里的长度指的就是声音的长度。比如我们想用上面的 AAAAAABBCDDEEEEEF 例子来用莫尔斯编码重写,在莫尔斯曼编码中,各个字符之间需要加入表示时间间隔的符号。这里我们用 00 加以区分。
  所以,AAAAAABBCDDEEEEEF 这个文本就变为了 A * 6 次   B * 2次   C * 1次   D * 2次   E * 5次   F * 1次   字符间隔 * 16 = 4 位 * 6次   8 位 * 2次   9 位 * 1 次   6位 * 2次   1位 * 5次   8 位 * 1次   2位 * 16次 = 106位 = 14字节。
  所以使用莫尔斯电码的压缩比为 14 / 17 = 82%。效率并不太突出。用二叉树实现哈夫曼算法
  刚才已经提到,莫尔斯编码是根据日常文本中各字符的出现频率来决定表示各字符的编码数据长度的。不过,在该编码体系中,对 AAAAAABBCDDEEEEEF 这种文本来说并不是效率最高的。
  下面我们来看一下哈夫曼算法。哈夫曼算法是指,为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩。因此,用什么样的编码(哈夫曼编码)对数据进行分割,就要由各个文件而定。用哈夫曼算法压缩过的文件中,存储着哈夫曼编码信息和压缩过的数据。
  接下来,我们在对 AAAAAABBCDDEEEEEF 中的 A - F 这些字符,按照出现频率高的字符用尽量少的位数编码来表示这一原则进行整理。按照出现频率从高到低的顺序整理后,结果如下,同时也列出了编码方案。
  字符出现频率编码(方案)位数A601E511B2102D2112C11003F11013
  在上表的编码方案中,随着出现频率的降低,字符编码信息的数据位数也在逐渐增加,从最开始的 1位、2位依次增加到3位。不过这个编码体系是存在问题的,你不知道100这个3位的编码,它的意思是用 1、0、0这三个编码来表示 E、A、A 呢?还是用10、0来表示 B、A 呢?还是用100来表示 C 呢。
  而在哈夫曼算法中,通过借助哈夫曼树的构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系。不过哈夫曼树的算法要比较复杂,下面是一个哈夫曼树的构造过程。
  自然界树的从根开始生叶的,而哈夫曼树则是叶生枝哈夫曼树能够提升压缩比率
  使用哈夫曼树之后,出现频率越高的数据所占用的位数越少,这也是哈夫曼树的核心思想。通过上图的步骤二可以看出,枝条连接数据时,我们是从出现频率较低的数据开始的。这就意味着出现频率低的数据到达根部的枝条也越多。而枝条越多则意味着编码的位数随之增加。
  接下来我们来看一下哈夫曼树的压缩比率,用上图得到的数据表示 AAAAAABBCDDEEEEEF 为 000000000000 100100 110 101101 0101010101 111,40位 = 5 字节。压缩前的数据是 17 字节,压缩后的数据竟然达到了惊人的5 字节,也就是压缩比率 = 5 / 17 = 29% 如此高的压缩率,简直是太惊艳了。
  大家可以参考一下,无论哪种类型的数据,都可以用哈夫曼树作为压缩算法
  文件类型压缩前压缩后压缩比率文本文件14862字节4119字节28%图像文件96062字节9456字节10%EXE文件24576字节4652字节19%可逆压缩和非可逆压缩
  最后,我们来看一下图像文件的数据形式。图像文件的使用目的通常是把图像数据输出到显示器、打印机等设备上。常用的图像格式有 : BMP、JPEG、TIFF、GIF 格式等。BMP : 是使用 Windows 自带的画笔来做成的一种图像形式JPEG:是数码相机等常用的一种图像数据形式TIFF: 是一种通过在文件中包含"标签"就能够快速显示出数据性质的图像形式GIF: 是由美国开发的一种数据形式,要求色数不超过 256个
  图像文件可以使用前面介绍的 RLE 算法和哈夫曼算法,因为图像文件在多数情况下并不要求数据需要还原到和压缩之前一摸一样的状态,允许丢失一部分数据。我们把能还原到压缩前状态的压缩称为 可逆压缩,无法还原到压缩前状态的压缩称为非可逆压缩。
  一般来说,JPEG格式的文件是非可逆压缩,因此还原后有部分图像信息比较模糊。GIF 是可逆压缩
  另外,cxuan 肝了六本 PDF,公号回复 cxuan ,领取作者全部 PDF。

苹果6能查苹果5s手机定位吗(怎么查找iphone手机位置)苹果6能查苹果5s手机定位吗(怎么查找iphone手机位置)现在的社会,手机现已成为了万众随身的一种设备,它可以上网和联络朋友,可以作为人们的掌上电脑。现在的手机大多数都是智能化的苹果6手机怎么查手机定位(怎么查找对方iphone手机位置)苹果6手机怎么查手机定位(怎么查找对方iphone手机位置)现在的社会,手机现已成为了万众随身的一种设备,它可以上网和联络朋友,可以作为人们的掌上电脑。现在的手机大多数都是智能化的苹果6咋查手机定位(怎么查找iphone手机位置)苹果6咋查手机定位(怎么查找iphone手机位置)现在的社会,手机现已成为了万众随身的一种设备,它能够上网和联络朋友,能够作为人们的掌上电脑。现在的手机大多数都是智能化的,能够和电华为手机卡顿反应慢怎么解决方法(华为手机反应太慢了怎么解决)前些天,有一位网友咨询我,说他的华为手机总是提示内存不够用了,而且还开始卡顿,问我怎么办?碰到这种情况,我们只需要给华为手机减肥就可以了,也就是清理内存,就能有效解决问题。这里分享电脑怎么装两个硬盘(电脑如何装2个机械硬盘吗)计算机是我们日常使用最有用的工具。当我们使用电脑的时间时,我们的计算机的空间将缓慢增长。许多小伙伴询问如何安装小型硬盘,然后今天小编会教你如何安装硬盘,让我们一起学习!硬盘驱动器安电脑硬盘如何安装(笔记本硬盘外接)大家好,我给大家介绍一种目前安装win11最方便的硬盘安装方法。第一部分首先关于TPM,本方法无法跳过TPM检测。尽管可以PE安装绕过TPM装上Windows11,但是建议有条件还苹果活动比这个世界更美好根据我的AppleWatch,在加利福尼亚州库比蒂诺,苹果总部周围的空气质量指数在周二早上处于120度范围内ndash只是ldquo不健康rdquo。经过一个多星期的湾区野火烟雾(没服务密码能查通话记录吗(查通话详单忘记服务密码)没服务密码能查通话记录吗(查通话详单忘记服务密码)如果我们知道自己手机号的服务密码的话,是可以去营业厅查询最近6个月的通话记录的,但如果我们忘记了自己的密码该怎么办呢?是否还有办法一加Nord超多外观图曝光双挖孔屏竖排四摄实锤了文章来源科技讯日前有不少信息显示一加Nord后置摄像头为矩形设计不过7月9日有数码博主曝光了疑似一加Nord的真机图真机图显示这款手机采用了后置竖排四摄像头的设计方式在这之前大家关如何坚定理想信念(入党积极分子如何坚定理想信念)理想信念是中国共产党人精神上的钙,理想信念不坚定就是缺钙,缺钙就会得软骨病。对于广大党员干部来说,理想信念是必须的坚守,坚定理想信念是干事创业的前提,是立身处世之本,是成才成功之道苹果9月秋季发表会iPhone12不会出现官网和爆料证实随着现在的生活水准越来越高,大家购买苹果的产品也是越来越多了,那么苹果的产品当中有很多的功能大家是未必知道如何去使用的,当然也包括要去多了解苹果新出的新功能之类的,那么今天小编就收
自己在家怎么做火锅(火锅配方)世间万物,唯有美食不可辜负,寒冷冬日,唯有火锅不可辜负!每年冬天一到,相信很多人都会馋着吃火锅,这不仅是因为火锅多变的食材能让人满足,更是因为火锅能温暖身心,寒冷的冬天,一家人齐聚咖啡怎么做(咖啡配方表)意式咖啡步粉与压粉采用定量直出磨豆机,需设定好单份双份研磨时间和粗细度,保证单份的粉每次是67g,双份的粉是1617g之间。如果采用拨粉磨豆机,需要调整研磨粗细度再不轻拍粉的情况下鱼做汤怎么做(清纯鱼汤的做法)大家好,我是小鱼,早晨起床,心情就挺好,又得到了一个消息,老婆怀孕了心情就更好了,今天给老婆做点好吃的补补,听说孕妇多吃些鱼比较好,今天就做一道清炖鱼。清炖鱼是一道美味的汤菜,汤汁奥尼尔为什么喜欢姚明(姚明在nba算超级巨星吗)北京时间2020年5月23日讯,作为中国篮球的第一人,姚明不仅在国内篮球有着举足轻重的地位,甚至在国际篮球上,姚明同样有着不可忽视的号召力。大鲨鱼奥尼尔甚至公开称赞姚明伟大的篮球巨喉咙发炎为什么会疼(喉咙发炎吞咽口水都疼)喉咙咽口水都痛,大部分原因是急性咽喉炎,其中包括急性扁桃体炎扁桃体周围脓肿急性会厌炎急性化脓性扁桃体炎等情况。对于急性炎症的治疗,首先止痛抗炎消肿,药物主要用头孢拉定头孢呋辛等抗生李玉刚为什么能唱女声(李玉刚女声)文话多多李玉刚又得罪人了!继得罪梅葆玖,至死不道歉之后,这一次,他暗示大众,王菲过气了,天价演唱会门票是在吃老本圈钱,不知道又会引起怎样的互联网海啸?前些时间,李玉刚携新作品刚好遇怎么样才能消除眼袋(年轻人眼袋怎么才能消除?)眼袋一旦出现,只能通过手术去除改善。眼袋是由眼底的内中外三团脂肪构成的。如果是色素型黑眼圈可以使用主要成分有透明质酸烟酰胺咖啡因等这些。这些成分呢,主要是针对眼部黑眼圈皱纹,但含量怎么样才能去眼袋(怎样才能有效的去眼袋)眼袋问题,已经成了当代年轻人时刻的皮肤健康问题!由于加班熬夜,很多年轻人年纪轻轻就顶着大大的眼袋出门,一边忧心自己的眼袋问题,一边又在网上找偏方祛除眼袋比如滚鸡蛋去眼袋涂牙膏祛眼袋怎么样才可以去眼袋(6种方法有效消除眼袋)女性都是爱美的,对于气血亏败脸上长斑这些问题,化妆品能够很好地派上用场,但是眼角下的大眼袋则难以用粉底来遮盖。过于肿胀的眼袋非常影响女性的容貌与气质。根据中医中的理论,当人体的阳明免费线上游戏HTML5Games用网页线上玩经典游戏(支援手机电脑)随着现在的生活水准越来越高,大家购买苹果的产品也是越来越多了,那么苹果的产品当中有很多的功能大家是未必知道如何去使用的,当然也包括要去多了解苹果新出的新功能之类的,那么今天小编就收怎么样制作网页(html网页制作用什么软件)如今,计算机技术日新月异,网站制作方法多种多样。然而,对于一些新手或电脑小白来说,他们经常会问制作网站使用的软件更好的问题,所以在这里,他们会告诉大多数新手制作网页的软件,这样当新