精华内容
下载资源
问答
  • 常用无损压缩软件
    2021-11-08 10:45:10

    无损压缩:是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于数码图像而言,也就不会使图像细节有任何损失。

    无损压缩的基本原理是相同的颜色信息只需保存一次。压缩图像的软件首先会确定图像中哪些区域是相同的,哪些是不同的。包括了重复数据的图像(如蓝天) 就可以被压缩,只有蓝天的起始点和终结点需要被记录下来。但是蓝色可能还会有不同的深浅,天空有时也可能被树木、山峰或其他的对象掩盖,这些就需要另外记录。从本质上看,无损压缩的方法可以删除一些重复数据,大大减少要在磁盘上保存的图像尺寸。但是,无损压缩的方法并不能减少图像的内存占用量,这是因为,当从磁盘上读取图像时,软件又会把丢失的像素用适当的颜色信息填充进来。如果要减少图像占用内存的容量,就必须使用有损压缩方法。

    有损压缩:是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了,所以压缩比可以很高,图像质量也会相应的下降。

    有损压缩可以减少图像在内存和磁盘中占用的空间,在屏幕上观看图像时,不会发现它对图像的外观产生太大的不利影响。因为人的眼睛对光线比较敏感,光线对景物的作用比颜色的作用更为重要,这就是有损压缩技术的基本依据。

    1.有损压缩、无损压缩对应的图片文件格式:
    有损压缩格式:JPEG、JPG、WMF、WebP (jpeg、jpg、wmf)

    无损压缩的图片格式:BMP、PCX、TIFF、GIF、TGA、PNG、RAW(bmp、pcx、tiff、gif、tga、png、raw)

    有损压缩详细格式:

    (1)WebP是Google新推出的影像技术,它可让网页图档有效进行压缩,同时又不影响图片格式兼容与实际清晰度,进而让整体网页下载速度加快。

    与JPEG相同,WebP是一种有损压缩利用预测编码技术。但谷歌表示,这种格式的主要优势在于高效率。他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%,美中不足的是,WebP格式图像的编码时间“比JPEG格式图像长8倍”。

    (2)JPEG也是最常见的一种图像格式,是一种有损压缩格式,能够将图像压缩在很小的储存空间,因此容易造成图像数据的损伤。

    JPEG是一种很灵活的格式,具有调节图像质量的功能,允许用不同的压缩比例对文件进行压缩,支持多种压缩级别,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。

    JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,适合应用于互联网,可减少图像的传输时间,可以支持24bit真彩色,也普遍应用于需要连续色调的图像。

    JPEG格式是目前网络上最流行的图像格式

    JPEG格式的应用非常广泛,特别是在网络和光盘读物上。各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快。

    JPEG 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。

    (3)JPEG2000作为JPEG的升级版,其压缩率比JPEG高约30%左右,同时支持有损和无损压缩。

    JPEG2000和JPEG相比优势明显,且向下兼容,因此可取代传统的JPEG格式。JPEG2000即可应用于传统的JPEG市场,如扫描仪、数码相机等,又可应用于新兴领域,如网路传输、无线通讯等等。

    (4)WMF格式

    WMF(Windows Metafile Format)是Windows中常见的一种图元文件格式,属于矢量文件格式。它具有文件短小、图案造型化的特点,整个图形常由各个独立的组成部分拼接而成,其图形往往较粗糙

    无损压缩详细格式

    (1)BMP

    位图(外语简称:BMP、外语全称:BitMaP)BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。

    BMP 是(Windows 位图) Windows 位图可以用任何颜色深度(从黑白到 24 位颜色)存储单个光栅图像。Windows 位图文件格式与其他 Microsoft Windows 程序兼容。它不支持文件压缩,也不适用于 Web 页。 从总体上看,Windows 位图文件格式的缺点超过了它的优点。为了保证照片图像的质量,请使用 PNG 、JPEG、TIFF 文件。BMP 文件适用于 Windows 中的墙纸。

    BMP 不支持压缩,这会造成文件非常大。

    (2)PCX

    个人电脑交换(外语简称:PCX、外语全称:Personal Computer eXchange [1] )

    PCX是最早支持彩色图像的一种文件格式,现在最高可以支持256种彩色。PCX设计者很有眼光地超前引入了彩色图像文件格式,使之成为非常流行的图像文件格式。

    PCX是PC机画笔的图像文件格式。PCX的图像深度可选为l、4、8bit。由于这种文件格式出现较早,它不支持真彩色。PCX文件采用RLE行程编码,文件体中存放的是压缩后的图像数据。因此,将采集到的图像数据写成PCX文件格式时,要对其进行RLE编码:而读取一个PCX文件时首先要对其进行 RLE解码,才能进一步显示和处理。

    PCX 不受 Web 浏览器支持

    (3)TIF格式

    标签图像文件格式(中文简称TIF、外语简称TIFF、外语全称:TagImage FileFormat)是由Aldus和Microsoft公司为桌上出版系统研制开发的一种较为通用的图像文件格式。

    TIFF格式灵活易变,它又定义了四类不同的格式:TIFF-B适用于二值图像:TIFF-G适用于黑白灰度图像;TIFF-P适用于带调色板的彩色图像:TIFF-R适用于RGB真彩图像。

    TIFF支持多种编码方法,其中包括RGB压缩、RLE压缩、JPEG压缩等。

    TIFF是现存图像文件格式中最复杂的一种,它具有扩展性、方便性、可改性,可以提供给IBMPC等环境中运行、图像编辑程序。

    (4)GIF格式

    图形交换格式(外语简称:GIF、外语全称:Graphics Interchange Format)

    GIF文件的数据,是一种基于LZW算法的连续色调的有损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。几乎所有相关软件都支持它,公共领域有大量的软件在使用GIF图像文件。

    GIF图像文件的数据是经过压缩的,而且是采用了可变长度等压缩算法。所以GIF的图像深度从lbit到8bit,也即GIF最多支持256种色彩的图像。

    GIF格式的另一个特点是其在一个GIF文件中可以存多幅彩色图像,如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,就可构成一种最简单的动画。

    GIF解码较快,但GIF不支持Alpha透明通道。

    (5)TGA格式

    已标记的图形(外语全称:Tagged Graphics)格式是由美国Truevision公司为其显示卡开发的,文件扩展名为".tga",已被国际上的图形、图像工业所接受。

    TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有很大影响,是计算机生成图像向电视转换的一种首选格式。

    TGA图像格式最大的特点是可以做出不规则形状的图形、图像文件,一般图形、图像文件都为四方形,若需要有圆形、菱形甚至是缕空的图像文件时,TGA可就派上用场了。

    TGA格式支持压缩,使用不失真的压缩算法。是一种比较好的图片格式。

    (6)PNG格式

    便携式网络图形(外语简称PNG、外语全称:Portable Network Graphics),是网上接受的最新图像文件格式。

    PNG能够提供长度比GIF小30%的无损压缩图像文件。它同时提供 24位和48位真彩色图像支持以及其他诸多技术性支持。

    PNG非常新,所以并不是所有的程序都可以用它来存储图像文件,但Photoshop可以处理PNG图像文件,也可以用PNG图像文件格式存储。

    PNG 支持高级别无损耗压缩,但作为 Internet 文件格式,与 JPEG 的有损耗压缩相比,PNG 提供的压缩量较少。

    PNG 支持 alpha 通道透明度,但作为 Internet 文件格式,PNG 对多图像文件或动画文件不提供任何支持。GIF 格式支持多图像文件和动画文件。

    PNG 支持伽玛校正。

    PNG 支持交错。

    PNG 受最新的 Web 浏览器支持,但较旧的浏览器和程序可能不支持 PNG 文件。

    (7)RAW格式

    RAW中文解释是“原材料”或“未经处理的东西”。RAW文件包含了原图片文件在传感器产生后,进入照相机图像处理器之前的一切照片信息。用户可以利用PC上的某些特定软件对RAW格式的图片进行处理。

    许多图像处理软件可以对照相机输出的RAW文件进行处理。这些软件提供了对RAW格式照片的锐度、白平衡、色阶和颜色的调节。此外,由于RAW拥有12位数据,你可以通过软件,从RAW图片的高光或昏暗区域榨取照片细节,这些细节不可能在每通道8位的JPEG或TIFF图片中找到。

    兼容性不够强仍然是限制RAW格式发展的最大障碍。

    2.有损压缩、无损压缩对应的音频文件格式:
    有损压缩格式:RA、MP3、MIDI、WMA
    无损压缩格式:WAV、APE、FLAC

    有损压缩

    (1)AIFF(Audio Interchange File Format)格式和AU格式,它们都和WAV非常相像,在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。

    AIFF是音频交换文件格式的英文缩写。是Apple公司开发的一种音频文件格式,被MACINTOSH平台及其应用程序所支持,NETSCAPE浏览器中LIVEAUDIO也支持AIFF格式。

    AIFF是苹果电脑上面的标准音频格式,属于QuickTime技术的一部分。这一格式的特点就是格式本身与数据的意义无关,因此受到了Microsoft的青睐,并据此搞出来WAV格式。

    AIFF虽然是一种很优秀的文件格式,但由于它是苹果电脑上的格式,因此在PC平台上并没有得到很大的流行。不过由于Apple电脑多用于多媒体制作出版行业,因此几乎所有的音频编辑软件和播放软件都或多或少地支持AIFF格式。只要苹果电脑还在,AIFF就始终还占有一席之地。由于AIFF的包容特性,所以它支持许多压缩技术。

    (3)MP3

    Mp3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层,分别对应 *.mp1 / *.mp2/ *.mp3 这3种声音文件。需要提醒大家注意的地方是:MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用 *.mp3 格式来储存,一般只有 *.wav 文件的1/10,因而音质要次于CD格式或WAV格式的声音文件。

    Mp3文件尺寸小,音质好;所以在它问世之初还没有什么别的音频格式可以与之匹敌,因而为*.mp3格式的发展提供了良好的条件。

    Mp3这种格式还是很流行,作为主流音频格式的地位难以被撼动。

    MP3音乐的版权问题也一直找不到办法解决,因为MP3没有版权保护技术,说白了也就是谁都可以用。

    MP3格式压缩音乐的采样频率有很多种

    MP3是到2008年止使用用户最多的有损压缩数字音频格式了。它的全称是MPEG(MPEG:MovingPictureExpertsGroup)AudioLayer-3

    MP3问世不久,就凭这较高的压缩比12:1和较好的音质创造了一个全新的音乐领域,然而MP3的开放性却最终不可避免的导致了版权之争,在这样的背景之下,文件更小,音质更佳,同时还能有效保护版权的MP4就应运而生了。MP3和MP4之间其实并没有必然的联系,首先MP3是一种音频压缩的国际技术标准,而MP4却是一个商标的名称。

    (5)MIDI

    MIDI(Musical Instrument Digital Interface)格式被经常玩音乐的人使用,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后再告诉声卡如何再现音乐的一组指令。

    MIDI文件每存1分钟的音乐只用大约5~10KB。MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。

    .mid文件重放的效果完全依赖声卡的档次。.mid格式的最大用处是在电脑作曲领域。.mid文件可以用作曲软件写出,也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里,制成.mid文件。

    (6)WMA

    WMA (Windows Media Audio) 格式是来自于微软的重量级选手,后台强硬,音质要强于MP3格式,更远胜于RA格式,它和日本YAMAHA公司开发的VQF格式一样,是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的,WMA的压缩率一般都可以达到1:18左右

    WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)

    WMA的推出,就是针对MP3没有版权限制的缺点而来——普通用户可能很欢迎这种格式,但作为版权拥有者的唱片公司来说,它们更喜欢难以复制拷贝的音乐压缩技术,而微软的WMA则照顾到了这些唱片公司的需求。

    除了版权保护外,WMA还在压缩比上进行了深化,它的目标是在相同音质条件下文件体积可以变的更小(当然,只在MP3低于192KBPS码率的情况下有效,实际上当采用LAME算法压缩MP3格式时,高于192KBPS时普遍的反映是MP3的音质要好于WMA)。

    无损压缩

    (1)WAV

    WAV文件是波形文件,是微软公司推出的一种音频储存格式,主要用于保存Windows平台下的音频源。WAV文件储存的是声音波形的二进制数据,由于没有经过压缩,使得WAV波形声音文件的体积很大。

    WAV文件占用的空间大小计算公式是[(采样频率×量化位数×声道数)÷8]×时间(秒),单位是字节(Byte)。理论上,采样频率和量化位数越高越好,但是所需的磁盘空间就更大。

    通用的WAV格式(即CD音质的WAV)是44100Hz的采样频率,16Bit的量化位数,双声道,这样的WAV声音文件储存一分钟的音乐需要10MB左右,占空间太大了,一般不是专业人士(例如专业录音室等需要极高音质的场合)不会选择用WAV来储存声音。

    (2)APE

    APE,最原始的文件(WAV)通常是很大的,比如一盘CD上的音乐,就是700M左右,如果把它分离成每首歌曲,那每首歌曲文件的大小在20——60M。这样大的文件即占用硬盘空间,也不适合在网上进行传递。所以,通常要把这个原始的大文件进行压缩。其压缩方式有多种,可以分为两大类,一类是没有损失的压缩,比如用猴子(monkey.exe)这个软件就可以实现,它可以把这个原始的音乐文件(WAV文件)压缩到原来大小的50——60%,文件格式是APE。

    越来越多的人选择APE格式,网络传播是功不可没的,众多的音乐发烧友在网上交流APE格式音乐。

    (3)FLAC

    FLAC代表 Free Lossless Audio Codec - 免费的无损音频压缩。也就是说音频以FLAC方式压缩不会丢失任何信息。这种压缩与Zip的方式类似,但是FLAC将给你更大的压缩比率,因为FLAC是专门针对音频的特点设计的压缩方式,并且你可以使用播放器播放FLAC压缩的文件,就象通常播放你的MP3文件一样。

    FLAC更看重解码的速度。解码速度快

    FLAC的每个数据帧都包含了解码所需的全部信息。解码当前帧无需参照它前面或后面的数据帧。FLAC使用了同步代码和CRC(类似于MPEG等编码格式),这样解码器在数据流中跳跃定位时可以有最小的时间延迟。可以实现流化

    非常适合于存档应用:FLAC是一个开放的编码格式,并且没有任何数据的损失,你可以将它转换为你需要的任何其他格式。除了每个数据帧的CRC和MD5标记对数据完整性的保障,FLAC(译注:FLAC项目提供的命令行方式编码工具)还提供了一个verify(校验)选项,当使用该选项进行编码的时候,编码的同时就会立即对已编码数据进行解码并与原始输入数据进行比较,一旦发现不同就会退出并且报警提示。

    便于对CD进行备份:FLAC有一个“cue表”metadata数据块用于保存CD的内容列表和所有音轨的索引点。你可以将一张CD保存到一个单一文件,并导入CD的cue表格,这样一个FLAC文件就可以完整地记录整张CD的全部信息。当你的原来的CD损坏的时候,你就可以用这个文件恢复出与原来一模一样的CD副本。

    抗损伤:由于FLAC的帧结构,使得一旦发生数据流的损坏,损失会被限制在受损伤的数据帧之内。一般只是会丢失很短的一个片段。而很多其他无损音频压缩格式在遇到损伤的时候,一个损伤就会造成后面所有数据的丢失。

    3.有损压缩、无损压缩对应的视频文件格式:

    有损压缩格式:MPEG、AVI、ASF、MOV
    无损压缩的格式:目前在windows操作系统之中也是存在无损压缩的视频,但是其并不是受限于格式限制,比如说MP4这种格式既可以支持高强度的视频压缩也是可以支持无损压缩格式,只不过是我们一般使用的多数都是有损压缩而已。

    有损压缩

    (1)MPEG格式

    MPEG的英文全称为Moving Picture Experts Group,即运动图像专家组格式,家里常看的VCD、SVCD、DVD就是这种格式。

    MPEG文件格式是运动图像压缩算法的国际标准,它采用了有损压缩方法,从而减少运动图像中的冗余信息。MPEG的压缩方法说的更加深入一点就是保留相邻两幅画面绝大多数相同的部分,而把后续图像中和前面图像有冗余的部分去除,从而达到压缩的目的。目前MPEG主要压缩标准有MPEG-1、MPEG-2、MPEG-4、MPEG-7与MPEG-21。

    MPEG-1:这种视频格式的文件扩展名包括mpg、mlv、mpe、mpeg及VCD光盘中的.dat文件等。

    MPEG-2:制定于1994年,这种视频格式的文件扩展名包括.mpg、.mpe、.mpeg、.m2v及DVD光盘上的.vob文件等。

    MPEG-4:制定于1998年,这种视频格式的文件扩展名包括.asf、.mov和Divx、AVI等。

    MPEG-7:MPEG-7并不是一种压缩编码方法,而是一个多媒体内容描述接口标准(Multimedia Content Description Interface)。继MPEG-4之后,要解决的矛盾就是对日渐庞大的图像、声音信息的管理和迅速搜索,MPEG-7就是针对这个矛盾的解决方案。MPEG-7力求能够快速且有效地搜索出用户所需的不同类型的多媒体材料。

    MPEG-21:MPEG-21标准称为多媒体框架(Multimedia Framework),其实就是一些关键技术的集成,通过这种集成环境对全球数字媒体资源进行透明和增强管理,实现内容描述、创建、发布、使用、识别、收费管理、产权保护、终端和网络资源抽取、事件报告等功能。MPEG-21的最终目标是要为多媒体信息的用户提供透明而有效的电子交易和使用环境,将在未来的电子商务活动中发挥重要的作用 [2] 。

    (2)AVI

    AVI(Audio Video Interleaved)是音频视频交错的英文缩写,将视频和音频封装在一个文件里,且允许音频同步于视频播放。它于1992年被Microsoft公司推出

    这种视频格式的优点是图像质量好,可以跨多个平台使用;其缺点是体积过大,而且更糟糕的是压缩标准不统一,所以在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题,如果用户在进行AVI格式的视频播放时遇到了这些问题,可以通过下载相应的解码器来解决,与DVD视频格式类似,AVI文件支持多视频流和音频流。

    它对视频文件采用了一种有损压缩方式,但压缩比较高,因此尽管画面质量不是太好,但其应用范围仍然非常广泛。

    (3)ASF格式

    ASF(Advanced Streaming Format)高级流格式是Microsoft为了和现在的Real Player竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。用户可以直接使用Windows自带的Windows Media Player对其进行播放。它使用了MPEG-4的压缩算法,其压缩率和图像质量都很不错。因为ASF是以一种可以在网上即时观赏的视频流格式存在的,所以它的图像质量比VCD差一点,但比同是视频流格式的RAM格式要好 [2] 。

    (4)MOV格式

    MOV即QuickTime影片格式,它是Apple公司开发的一种音频、视频文件格式,用于存储常用数字媒体类型。当选择QuickTime(w.mov)作为保存类型时,动画将保存为.mov文件。Quick Time原本是Apple公司用于Mac计算机上的一种图像视频处理软件。

    QuickTime提供了两种标准图像和数字视频格式,即可以支持静态的*.PIC和*.JPG图像格式,动态的基于Indeo压缩法的*.MOV和基于MPEG压缩法的*.MPG视频格式。

    QuickTime因具有跨平台(MacOS/Windows)、存储空间要求小等技术特点,而采用了有损压缩方式的MOV格式文件,画面效果较AVI格式要稍微好一些。现在这种格式有些非编软件也可以对它实行处理,其中包括Adobe公司的专业级多媒体视频处理软件After Effect和Premiere等 [2] 。

    (5)WMV格式

    WMV(Windows Media Video)是微软推出的一种流媒体格式,它是在ASF格式升级延伸来得。在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输。

    (6)3GP格式

    3GP是“第三代合作伙伴项目”制定的一种多媒体标准,即一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式

    (7)FLV/F4V格式

    FLV是Flash Video的简称,也是一种视频流媒体格式。由于它形成的文件较小、加载速度很快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好地使用等缺点,应用较为广泛。

    更多相关内容
  • 事实上,从压缩软件WINRAR到熟知的MP3,数据压缩技术早已应用于各个领域。  2 数据压缩技术概述  本质上压缩数据是因为数据自身具有冗余性。数据压缩是利用各种算法将数据冗余压缩到最小,并尽可能地减少失真,...
  • 第一:QVE视频压缩软件 下载地址:http://www.qvevideo.com/compress 非常实用的视频,图片两用压缩软件,能够将各种视频压缩成mp4,flv等格式, 缩减视频体积,释放磁盘空间,节省网络带宽,压缩后能够保持视频高清晰度,...

    第一:QVE视频压缩软件

    下载地址:http://www.qvevideo.com/compress

    非常实用的视频,图片两用压缩软件,能够将各种视频压缩成mp4,flv等格式, 缩减视频体积,释放磁盘空间,节省网络带宽,压缩后能够保持视频高清晰度,压缩率高达90%以上。

    1,首先打开软件,切换到【图片压缩】界面,然后点击【添加图片】按钮,在弹出的文件对话框需要压缩的图片文件。
    在这里插入图片描述

    设置压缩模式和输出格式:
    在这里插入图片描述
    提供三种压缩模式可选,普通压缩,压缩率相对较低,压缩后图片清晰度非常高;深度压缩,压缩率较高,相对普通压缩,图像质量略低;极限压缩,最大限度压缩文件体积,图像质量低于普通压缩,和深度压缩,设置压缩图片的输出格式。

    一键压缩图片,全选需要压缩的图片,点击一键压缩,等待压缩进度显示完成,然后点击打开目录。
    在这里插入图片描述

    以上就是使用QVE视频压缩软件,压缩图片文件和压缩视频文件大小方法,如果你也有视频和图片需要减少体积,可以试试上述的方法。

    第二:Tinypng

    地址:https://tinypng.com/,在线压缩图片,需要上传到网站,如果有隐私不建议用在线,可以使用QVE视频压缩,本地安装,本地压缩。
    在这里插入图片描述

    第三:Compressor.io

    地址:https://compressor.io/compress

    使用Compressor很简单,只要上传图片就可以自动的压缩
    在这里插入图片描述

    如图所示,压缩之后的图片还可以保存在Google Drive 或者是Dropbox 上,这非常的方便。

    另外Compressor支持压缩下面几种格式的照片:JPEG,PNG,GIF,SVG

    第四:Kraken.io

    工具地址:https://kraken.io/web-interface
    在这里插入图片描述
    这个工具也是我常用的,我很喜欢他的一个功能是,你可以把Zip中的文件一次性导入到工具中进行压缩,同时它支持不同的格式同时进行压缩,如下图所示:

    第五:Giftofspeed

    JPG压缩:https://www.giftofspeed.com/jpg-compressor/

    Png压缩:https://www.giftofspeed.com/png-compressor/

    Giftofspeed相对上面几款工具来说,单独的把JPG,Png分开来测试,这个我觉得很麻烦。

    但是Giftofspeed有一些功能是我很喜欢的,比如下图,你可以输入你的网址,然后这个工具会建议你对图片进行优化,这样你就可以发现很多问题。
    在这里插入图片描述
    测试地址:https://www.giftofspeed.com/image-delivery/
    在这里插入图片描述

    另外Giftofspeed 其实还提供了很多有用的工具,几乎能一站的检测你的网站,
    地址:https://www.giftofspeed.com/tools/

    第六: OptimiZilla

    地址:http://optimizilla.com/
    在这里插入图片描述
    这个工具可以批量上传和批量压缩图片,一次可以上传20张图片;这个工具还有一个比较有意思的功能是,他的压缩程度大小可以有你自己来调节,而且是尽量的不改变画质,如上图所示,你可以看到 Quaility的条件按钮。

    第七:Imagerecycle

    工具地址:https://www.imagerecycle.com/
    在这里插入图片描述
    这个工具可以对图片和PDF进行压缩,同时他也提供了对网站进行分析,只要你输入URL就可以得出报告。

    以上分享的比较常用的图片压缩工具,有在线网站,也有软件,根据自己的需求去选择合适的压缩工具,小编使用的是QVE视频压缩软件,可以无损压缩图片大小,压缩导出速度也快,最终的是支持一键批量压缩,非常方便。

    展开全文
  • 常用无损压缩算法原理简析

    千次阅读 2021-06-13 19:55:02
    无损压缩算法原理 压缩一般分为两个步骤,建模和编码。一个完美的模型可以描述数据流是如何产生的,相当于一个python类里面的generator。只需要这个generator就可以产生所有数据,从而大大降低需要传输的数据。例如...

    无损压缩算法原理

    image-20210613195117116

    压缩一般分为两个步骤,建模和编码。一个完美的模型可以描述数据流是如何产生的,相当于一个python类里面的generator。只需要这个generator就可以产生所有数据,从而大大降低需要传输的数据。例如 如果需要传输的数据序列是1 1 2 3 5 … 6765 ,那么可以用一个“斐波那契数”来精准表达这个传输的序列。在实际应用中,很难得到这样的精准模型,因此一般都是近似的为数据构建一个数学模型。例如英文文章可以认为是一个字典模型,我们只要有字典以及对应的编号,就能还原出信息;在编码步骤中,信息将会被映射到一个编码中。可以认为是一种字典的映射,为了保证解码时信息的还原,必须要求解码时的信息映射是一一对应的。前缀码是一种比较常用的编码方式。已经证明 [McEliece 1977],对于任何可以唯一解码的非前缀代码,都可以找到具有相同码字长度的前缀代码。

    需要把无损压缩算法与我们平常使用的无损压缩格式区分开,因为无损压缩工具一般都是多种压缩算法重叠使用的,而不是单一的压缩算法。只是不同的工具侧重点不一样,一般压缩算法可以被描述成三元组< 压缩速率,解压速率,压缩率> 目前还没有哪种压缩算法能够达到三者同时最优。

    编码技术

    Huffman coding

    霍夫曼编码是一种熵编码,这种编码方式就是需要知道每个字符(symbol)出现的频率(需要扫描所有数据一次),然后构建哈夫曼二叉树。构建过程就是每次挑选出现频率最低的两个节点作为树的左右子节点,并且将它们合并成新的节点,新节点频率是它两之和。构建好huffman树后,就可以进行huffman编码,从根节点开始,左边支路编码为0,右边支路编码为1。然后再扫描一次数据,得到最优编码。缺点是耗时长,需要扫描两遍数据。因此有相关动态的huffman编码工作来提升它的性能,可能压缩率会有所下降。

    这个句子“this is an example of a huffman tree”中得到的字母频率来建构霍夫曼树。句中字母的编码和频率如图所示。编码此句子需要135 bit(不包括保存树所用的空间)

    image-20210613141559788

    构建完霍夫曼树后,就根据霍夫曼树进行编码

    字母频率编码
    space7111
    a4010
    e4000
    f31101
    h21010
    i21000
    m20111
    n20010
    s21011
    t20110
    l111001
    o100110
    p110011
    r111000
    u100111
    x110010

    而解码的过程则是需要根据霍夫曼树进行解码,因此可能需要额外传输霍夫曼树(除非使用公共的霍夫曼树)。

    缺点:对于具有均匀概率分布的一组符号,霍夫曼编码是无效的。

    Arithmetic Coding

    算术编码是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。这里以一个简单的例子来说明算术编码的原理

    : 对一个简单的信号源进行观察,得到的统计模型如下:

    • 60%的机会出现符号 中性
    • 20%的机会出现符号 阳性
    • 10%的机会出现符号 阴性
    • 10%的机会出现符号 数据结束符

    根据这个统计模型,编码器可以将当前的区间分为若干子区间,子区间长度与对应符号的概率成正比。当前要编码的符号对应的子区间成为下一步编码中的初始区间。

    :对于前面提出的4符号模型:

    • 中性对应的区间是[0, 0.6)
    • 阳性对应的区间是[0.6, 0.8)
    • 阴性对应的区间是[0.8, 0.9)
    • 数据结束符对应的区间是[0.9, 1)

    编码的过程其实就是确定最终小数所在的区间,解码过程则是根据小数所在的区间进行解码。

    假设我们的信号是“中性 阴性 数据结束符”,接下来看看对这个信号进行算数编码的过程

    首先初始区间是[0,1),第一个字符“中性”使得编码后的区间在[0,0.6),然后第二个字符“阴性”使得编码后的区间进一步在[0,0.6) 的 [0.8, 0.9]这个区间,也就是[0+0.6*0.8,0+0.6*0.9) = [0.48,0.54)这个区间。最后一个字符“数据结束符”使得整个区间进一步在[0.48,0.54)的[0.9,1) 这个区间,也就是[0.48+(0.54-0.48)*0.9,0.54)=[0.534, 0.540)这个区间。因此任意在这个区间内的数都可以还原这个信息。

    在解码的过程中,假设我们拿到的数是0.538,首先他出现在初始区间[0, 0.6) 中,我们知道第一个符号肯定是“中性”,然后它又出现在[0,0.6)的[0.8, 0.9)这个区间中,我们知道第二个符号肯定是“阴性”,以此类推。

    Arithmetic_encoding.svg

    与霍夫曼编码相比,算术编码还能接受条件概率,即前面出现的字符会影响后面出现字符的概率这种情况。而原始的霍夫曼编码则是在符号之间相互独立、且分布不同时才能达到比较好的压缩效果。

    Lempel-Ziv Codes

    霍夫曼编码相比,LZW编码法被视作将不同长度字符串以固定长的码编码(霍夫曼编码将固定长度字符用不同长度的码编码)。其优点在于此方法只需存储一个相当小的表格,即可存储资料还原时相对应的值,所以所需成本相对地低;然而,这种算法的设计着重在实现的速度,由于它并没有对数据做任何分析,所以并不一定是最好的算法(参考LZMALZ77)。

    编码过程:

    1. 初始化字典使其包含所有字符串的单一字符(例如ascii码)
    2. 在字典中寻找配当前输入的最长字符串W
    3. 将该字符串对应的字典编码作为结果输出,并且将W从输入中移除
    4. 将W+W后面的那个字符添加到字典
    5. 返回第二步

    解码过程

    解码过程通过从编码后的输入中读取一个值,在字典中找到对应的项目并进行输出。这种编码方式并不需要传输字典,因为字典可以在解码过程中构造出来:当解码一个值并输出一个字符串后,解码器将它与后面值的字符串的第一个字符进行拼接,作为新的字典项目放入字典中。然后处理下一值,直到全部处理完。

    举个例子:假设要编码的字符串是"TOBEORNOTTOBEORTOBEORNOT#"

    编码过程如表

    Current SequenceNext CharOutputExtended DictionaryComments
    CodeBits
    NULLT
    TO201010027:TO27 = first available code after 0 through 26
    OB150111128:OB
    BE20001029:BE
    EO50010130:EO
    OR150111131:OR
    RN181001032:RN32 requires 6 bits, so for next output use 6 bits
    NO1400111033:NO
    OT1500111134:OT
    TT2001010035:TT
    TOB2701101136:TOB
    BEO2901110137:BEO
    ORT3101111138:ORT
    TOBE3610010039:TOBE
    EOR3001111040:EOR
    RNO3210000041:RNO
    OT#34100010# stops the algorithm; send the cur seq
    0000000and the stop code

    解码过程如下

    InputOutput SequenceNew Dictionary EntryComments
    BitsCodeFullConjecture
    1010020T27:T?
    0111115O27:TO28:O?
    000102B28:OB29:B?
    001015E29:BE30:E?
    0111115O30:EO31:O?
    1001018R31:OR32:R?created code 31 (last to fit in 5 bits)
    00111014N32:RN33:N?so start reading input at 6 bits
    00111115O33:NO34:O?
    01010020T34:OT35:T?
    01101127TO35:TT36:TO?
    01110129BE36:TOB37:BE?36 = TO + 1st symbol (B) of
    01111131OR37:BEO38:OR?next coded sequence received (BE)
    10010036TOB38:ORT39:TOB?
    01111030EO39:TOBE40:EO?
    10000032RN40:EOR41:RN?
    10001034OT41:RNO42:OT?
    0000000#

    在实际的应用中,很多压缩算法库会对lz编码后的结果再次进行huffman之类的编码。

    压缩算法

    LZ77 、LZ78以及LZO

    lz77和lz78都是基于字典的编码,lz77则会在压缩过程中维护一个滑动窗口,因此解码的时候必须从输入的起始位置开始。从概念上讲,lz78允许在解压时随机访问输入,如果整个字典都预先知道的话。然而在实际应用中,字典是在编码和解码过程中构造的。前面介绍的lz coding就是lz78编码。这里主要讲下lz77的思想:对于重复出现的字符串,我们只需要用一对<offset,length> 的数字就可以表示。例如“Hello world, hello ketty.”,对于第二个hello,我么可以用<13, 5> 来表示,表示它前面13个字符开始的5个字符(即第一个hello)。但是也可能找不到前面匹配的字符,因此使用一个三元组来表示,如利用<0,0,D>表示D本身。

    具体实现则是使用滑动窗口,维护一个search buffer 和 look-ahead buffer。search buffer+look-ahead buffer的长度就是滑动窗口的大小。search buffer就是用来查找前面出现的字符,因为lz77的编码思想就是将前面出现的字符的位置以及长度来替代当前的字符,所以对于很长的文本必须限定搜索空间,这个搜索空间就是search buffer。look-ahead buffer则包含当前字符的后面的连续字符。一般我们使用的gzip算法默认配置32KB的滑动窗口,其中绝大部分用于存储search buffer,固定长度存储look-ahead buffer (例如 262个字符)。像gzip格式实现的是lz77+huffman,这种组合就成为deflate压缩算法。

    LZO则是控制hash表的大小,并且代码实现上使用宏来减少函数的调用开销,主要通过一些工程上的优化来使得压缩算法更快。

    BWT

    也被称为块排序压缩,是一个被应用在数据压缩技术(如bzip2)中的算法。该算法于1994年被Michael BurrowsDavid Wheeler在位于加利福尼亚州帕洛阿尔托的DEC系统研究中心发明[1]。它的基础是之前Wheeler在1983年发明的一种没有公开的转换方法。

    当一个字符串用该算法转换时,算法只改变这个字符串中字符的顺序而并不改变其字符。如果原字符串有几个出现多次的子串,那么转换过的字符串上就会有一些连续重复的字符,这对压缩是很有用的。该方法能使得基于处理字符串中连续重复字符的技术(如MTF变换游程编码)的编码更容易被压缩。

    变换过程:

    算法将输入字符串的所有循环字符串按照字典序排序,并以排序后字符串形成的矩阵的最后一列为其输出。

    image-20210613194334505

    还原过程:

    基于上述的BWT变换过程,以字符串“banana”为例,我们得到了变换结果annb$aa。其还原过程见以下过程:

    1.1 基于原字符串矩阵的最后一列为annb$aa,我们进行该列进行排序,得到$aaabnn,并将其作为还原矩阵的第一列

    image-20210613194535680

    1.2 经过1.1的转移、排序和组合,我们得到了7对邻接字符串:<a$> <na> <na> <ba> <$b> <an> <an>,将这7对邻接字符串进行排序后,得到<$b> <a$> <an> <an> <ba> <na> <na>,由此,我们得到了还原矩阵的第二列b$nnaaa

    image-20210613194650197

    1.3 经过1.2的转移、排序和组合,我们得到了7对邻接字符串:<a$b> <na$> <nan> <ban> <$ba> <ana> <ana>,将这7对邻接字符串进行排序后,得到<$ba> <a$b> <ana> <ana> <ban> <na$> <nan>,由此,我们得到了还原矩阵的第三列abaan$n 依此类推

    image-20210613194842026

    PPM

    部分匹配预测 (PPM) 是一种基于上下文建模和预测的自适应统计数据压缩技术。 PPM 模型使用未压缩符号流中的一组先前符号来预测流中的下一个符号。 PPM 算法还可用于在聚类分析中将数据聚类为预测分组。例如,如果“compr”在前面出现了,则接下来出现“e”的概率就很高。PPM维护一个上下文信息来估计下一个输入字符的出现概率。算术编码就很适合这种情况,就如文中所提到的。详细来说,长的上下文将提升预估的概率,但是需要更多的时间。该方案一般有比较大的内存需求,因此具体的实现方案出现的并不多。具体实现在细节上差异会很大,目前比较知名的是PPMd,这个算法相关的介绍也比较少,因此我也没弄明白咋回事。它的应用场景却是存在的,就是WinRAR这个软件使用的就是PPMd算法。

    参考

    • https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch
    • https://zh.wikipedia.org/wiki/%E7%AE%97%E6%9C%AF%E7%BC%96%E7%A0%81
    • https://zh.wikipedia.org/wiki/%E9%9C%8D%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%81
    • https://zh.wikipedia.org/wiki/Burrows-Wheeler%E5%8F%98%E6%8D%A2
    • https://en.wikipedia.org/wiki/Prediction_by_partial_matching
    • Barr, Kenneth C., and Krste Asanović. “Energy-aware lossless data compression.” ACM Transactions on Computer Systems (TOCS) 24.3 (2006): 250-291.
    展开全文
  • 无损压缩算法专题——无损压缩算法介绍

    千次阅读 多人点赞 2019-12-22 19:50:21
    一、数据无损压缩的理论——信息论 数据压缩的起源是基于信息论的。信息论之父香农第一次用数学语言阐明了概率与信息冗余度的关系。在1948年发表的论文“通信的数学理论”中,香农指出,任何信息都存在冗余,冗余...

    一、数据无损压缩的理论——信息论

    数据压缩的起源是基于信息论的。信息论之父香农第一次用数学语言阐明了概率与信息冗余度的关系。在1948年发表的论文“通信的数学理论”中,香农指出,任何信息都存在冗余,冗余大小与信息中每个符号的出现概率有关。香农借鉴了热力学的概念,把信息中排除了冗余后的平均信息量称为“信息熵”,并给出了计算信息熵的数学表达式。这篇伟大的论文后来被誉为信息论的开山之作,信息熵也奠定了所有数据压缩算法的理论基础。从本质上讲,数据压缩的目的就是要消除信息中的冗余,而信息熵及相关的定理恰恰用数学手段精确地描述了信息冗余的程度。利用信息熵公式,人们可以计算出信息编码的极限。即在一定的概率模型下,无损压缩的编码长度不可能小于信息熵公式给出的结果。下面是这位帅气的美国数学家的照片,记得大学上课的时候老师PPT摆的是他年轻时的照片,周围同学一个劲地夸他帅,哈哈。

     

    信息量定义:     

           设信源x由属于集合Am={a1,a2,…,am}的m个可能的符号产生,若信源事件aj的概率为P(aj),则定义事件aj的信息量I(aj):

                                                                                        I(aj)=-log P(aj)

      取2为底的对数,则单位为比特(bit),信息量也称自信息。

    信源的熵:

           一个通信系统并非只传送1个符号,而是多个符号,这就需要定义整个信源符号的平均信息量的大小。我们把自信息的统计平均值——数学期望,称为信源x的熵。熵的大小表示非冗余的不可压缩的信息量。

     

    以上的理论和公式和理论大家只作为一个了解,其实还是很有用的,我们可以根据香农的理论来计算一个特定文件的极限压缩率。

     

    二、数据压缩的必要性及分类

    当今信息技术飞速发展。由于数字化的多媒体信息尤其是数字视频和音频信号的数据量特别庞大,如果不对其进行有效的压缩就难以得到实际的应用。像我们平常看的视频和听的音乐都是经过压缩的,最直观的感受就是看视频的时候有蓝光超清、720P等等的清晰度可以选择。MP3也有无损音质和各种有损等级的区别。如果不对数据进行压缩,那么我们平常接触到的大部分文件都是非常庞大的,像视频直播这样的技术应用都会遇到很大的阻碍,所以数据压缩是非常有必要的。

           那么问题来了,数据可以被无限压缩吗?答案可定是不能的,我们平时都会发现,被压缩过的文件就很难再被压缩了,从本质上讲,数据压缩的目的就是要消除信息中的冗余,数据压缩只不过是把海绵中的水挤压出来,再怎么用力都无法把海绵都挤的消失。

    下面我们来看看数据压缩的分类:

    无损压缩:完全还原被压缩的数据,适用于普通文件和可执行文件等不能容忍数据丢失的场合,压缩率比较小。

    有损压缩:不能完全还原被压缩的数据,适用于多媒体文件等可容忍一定数据丢失的场合,压缩率比较大。

    为什么数据压缩分为这么多的种类,统一用一种压缩算法不行吗?当然是不行的,因为面向不同的应用场合是有不同的应用需求的,一种算法在这种场合好用并不代表在另外一个场合就一定也好用,所谓“术业有专攻”说的就是这个道理。既然分为那么多的种类,就必然需要一些定性的指标来评判一个压缩算法的好坏。下面是一些压缩算法的性能指标:

    压缩比:压缩前的数据大小和压缩后的数据大小之比。

    数据质量:无损压缩不存在数据质量问题,而有损压缩数据失真情况很难量化,只能对测试的数据进行估计。

    软硬件系统:有些硬件系统有数据压缩模块,与软件系统相比速度快更快。但软件系统灵活度更高。

    压缩/解压速度:不同场合对速度性能有不同的要求。

     

    三、压缩编码

    (1)香农-范诺编码(Shannon–Fano coding)

           最早阐述和实现“从上到下”的熵编码方法的人是Shannon(1948)Fano(1949),因此称为香农-范诺(Shannon- Fano)编码法。编码步骤如下:

     

    编码举例

           现有A,B,C,D和E共5类符号,出现的次数如下表,试着对这40个符号进行香农范诺编码:

     通常情况下每个符号需要用3个比特位来编码表示,现在对这些符号进行香农-范诺编码。

    ①根据符号出现的概率对符号进行降序排列后,分出最均匀的两部分,然后在中间画一条红线分开两部分。可能有人会问最均匀是怎么判定的,简单的一个判定就是这两部的“出现次数”差值最小。举个例子,从B和C间划开两部分后第一部分“出现次数”为15+7=22,第二部分为7+6+5=18,差值为22-18=4;若从C、D间划开两部分后第一部分“出现次数为”15+7+7=29,第二部分为6+5=11,差值为29-11=18;显然从B和C间划开是差值最小的,所以从这里划开。

    划开两部分之后第一部分分配一个比特位0,第二部分分配一个比特位1,如下表所示:

    ②以此类推,将上一次分出来的各部分再进行划分,继续分配相应的比特位,于是可以得到如下的表格:

     

     ③于是得出了每个符号应该分配的编码A(00)、B(01)、C(10)、D(110)、E(111),接下来就可以对比一下压缩性能了。

    压缩前编码位数:N1 = 40 x 3 = 120

    压缩后编码位数:N2 = 30 + 14 + 14 + 18 + 15 = 91

    压缩率: (120-91) / 120 ≈ 24.2%

    问题思考:假设现在就有一个这样的文本文件等待我们去压缩,我们把这些字符统计一番然后编码后,我们再去解压的时候会遇到一个什么样的问题呢?在突然对一个文件进行解压的时候,很明显在解压的时候根本就不知道每个字符是对应什么样的编码的,就没法解压啦。所以我们需要在解压的时候知道对应关系,那么自然就需要在压缩的时候把对照表写到压缩文件里面去,告诉解压时程序每个编码对应应该解释出什么字符,类似于下图这样。

     

    译码过程

          既然讲了编码肯定也要讲讲解压文件时怎么去译码,译码时需要先获取编码码表得知每种编码所对应的真实字符,然后进行译码,因为香农-范诺编码属于前缀码,即任意一个字符的编码都不可能是另外一个字符的前缀,所以译码过程中不会导致出错。下面举个例子来理解。 

    我们读取这个解压文件的编码对照表,得出如下的表格:

    大家很容易发现一个问题,两位二进制有4种组合方式“00”、“01”、“10”、“11”,为什么编码的时候上面只用了三种却没用“11”这种组合?原因很简单,我们可以先假设有“11”这种组合的码字而且它代表的字符是“F”,那么问题来了,当译码的时候读到“11”这两个比特的数据时,我到底译码成“F”这个字符还是继续向后再读一位比特位去译码成“D”或者“E”呢?所以这里就有个冲突问题,“前缀码”的引入就是为了解决这个问题。

    理解了“前缀码”的概念之后,我们开始读取数据进行解压译码,从茫茫的数据流中,我们先读到“110”,发现表里能匹配上,然后译码成“D”,再读再与表里的字符进行匹配,依此类推,直到把整个文件数据全部解压完。

     到这里整个过程就已经结束了,有个问题还是要说下,如果保存的压缩数据中有个别比特位反转,对整体数据会有什么样的影响呢?我们假设以上的数据中某个位反转,发现之后的大片数据可能都会译码错误。究其原因是因为每个字符的编码长度是不一致的,所以出现这种状况会有很大影响,

     

    (2)霍夫曼编码(Huffman coding)

           一种 “从下到上”的编码方法。待编码的元素出现的次数越多,其编码的位数就越少,霍夫曼编码被广泛用在JPEG, MPEG, H.26X等各种信息编码标准中。编码步骤如下图:

    编码举例

           试着对有30个符号的字符串:BABACACADADABBCBABEBEDDABEEEBB,进行霍夫曼编码。

     ①首先我们照符号出现先统计一下这些字符的信息,如下表:

     ②将这些符号按概率大小降序排列,然后选择两个概率最小的符号,这里明显是C和D,组成一个节点P1,后面跟上一个小括号里面填上权重为3+4=7,如下图所示:

     ③根据上一次的结果,存在B、A、E、P1这4个节点,然后再选出两个权重(次数)最小的符号,即E和P1,然后构成新的节点P2,同样后面写上权重为5+7=12,依此类推,操作到最后只剩下一个节点为止。如下面两幅图所示:

     

     ④接下来分配码字,给每一条节点与节点之间的连线都要分配一个比特位,分配规则是给权重小的分配0,另一个权重大的分配1,如下图所示,其实0和1互换过来分配也是可以的,这没什么关系。

     ⑤从右往左顺着字符的枝节读下去就是该字符应该分配的码字了,A(10)、B(11)、C(010)、D(011)、E(00)。译码方法和前面介绍的香农范诺编码是类似的。学过数据结构的朋友肯定能看出来,这其实就是一颗二叉树,只不过转了90度而已,霍夫曼编码采用最优二叉树的形式进行编码,是理论上的最优前缀编码。

     

    (3)行程长度编码(Run-Length Coding)

            计算出相同值重复出现的次数,对相同的数据只编码一次。在JPEG,MPEG,H.261和H.263等压缩方法中,RLE用来对图像数据变换和量化后的系数进行编码。

     这种编码方式有个很明显的缺陷,当待编码的数据中重复块很少时,这种编码方式会使得压缩后的数据比原始数据还要大,所以在实际应用中都会做相应的改进。

     

    四、词典编码

    (1)词典编码的概念和分类

    词典编码的实质就是用一些短的索引来替换重复出现的数据段。LZ系列算法是最具代表性的词典编码算法。同样,举个生动形象的例子:

     看到第一行写的是“吃葡萄不吐葡萄皮”,聪明的你一定猜到下面一行写的是“不吃葡萄倒吐葡萄皮”了。为什么我下面一行没写字上去大家也能知道是什么内容?因为每个图形都代表了一串特定的字符,词典编码也是这个道理。再举个程序员懂的例子,C语言中用一个指针来指向一个字符串,我们输出字符串的时候只需要知道这个指针就行了,那么这个指针就是代表了这一大串的字符,就相当于是数据压缩了。

    第一类编码算法

    ①用已经出现过的字符串替代重复的部分。

    ②编码器的输出仅仅是指向早期出现过的字符串的“指针”。

    第二类编码算法

       ①从输入的数据中创建一个“短语词典

       ②编码器输出词典中的短语“索引号”。

     

    (2)LZSS算法原理(第一类编码)

           LZSSLZ77改进而来,又称“滑动窗口压缩”,该算法将一个虚拟的,可以跟随压缩进程滑动的窗口作为词典,要压缩的字符串如果在该窗口中出现,则输出其出现位置和长度,没出现则原样输出字符。

     编码步骤

     

    编码格式      

           如果匹配串的长度比指针本身的长度长就输出指针,否则就输出真实字符。由于输出的压缩数据流中包含有指针和字符本身,为了区分它们就需要有额外的标志位。下面举个例子,只是做个示例,实际应用不一定这么用。

     我们假设编码格式为8个字节一组,第1字节用来做标记,标记后面7个数据哪些是真实的数据,哪些是指针。

    蓝色部分的是真实数据,直接输出就可以了,后面的0x03 0x03为一组,表示在前向缓冲区的第3个数据处开始匹配3个字符,于是匹配到0x41、0x42、0x43,接下来两个数据一样的道理。 最后解压出来如下图的数据。

     举个完整过程的例子:

     

    (3)LZW算法原理(第二类编码) 

    LZW由LZ78的改进而来,编/译码过程就是不断往“字典”中添加新的数据串,并且对新的数据串进行编号,输入是字符流,输出是“字典”中的序号。

    LZW编码步骤 

    P:数据串前缀,      C:当前字符,          PC:P和C字符串的连接。

     

     (4)LZ系列算法比较 

    五、总结 

    压缩算法种类繁多,需要针对不同的场合选择不同的算法,没有最好,只有最适合的算法。写到这里也很累了现在,在这一篇只做算法的介绍,之后的一段时间里会逐步用代码去实现以上所述的算法,并研究在实际项目中的灵活运用。

    展开全文
  • 此数据实时无损压缩系统由数据实时无损压缩硬件电路、测试软件、解压软件与读数软件组成,其中数据实时无损压缩硬件电路由数据采集、数据压缩、控制单元、数据存储、电源管理等几部分组成,核心器件是FPGA,利用FPGA...
  • LZO是一个开源的无损压缩C语言库,其优点是压缩和解压缩比较迅速占用内存小等特点(网络传输希望的是压缩和解压缩速度比较快,压缩率不用很高),其提供了比较全的LZO库和一个精简版的miniLZO库,...
  • JPG如何免费无损压缩

    2022-03-10 19:31:57
    如何做到图片无损压缩?今天就分享一个我常用的图片压缩方法,大家有需要的也可以试试。 所需工具:speedpdf在线转换 操作步骤: 1,首先打开网页搜索界面,搜索speedpdf在线转换工具找到转换页面并进入。 2,...
  • 世界上最好的无损图片压缩软件Image Optimizer,适用于JPEG、GIF、PNG等多种图像格式。利用Image Optimizer独特的MagiCompress压缩技术,可以在不太影响图像品质状况下将图像减肥,最高可瘦身50%以上。
  • LZW压缩算法(数据无损压缩

    千次阅读 2020-09-02 09:11:53
    零、常用无损数据压缩算法 字典算法 游程编码 基于字典编码技术的LZW算法 基于哈夫曼编码原理的压缩算法 基于算术编码的压缩算法 一、LZW算法介绍 LZW(Lempel-Ziv-Welch Encoding)算法又叫“串表压缩算法...
  • 有损压缩、无损压缩(图片、音频、视频)

    万次阅读 多人点赞 2021-05-12 10:14:42
    无损压缩:是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不会影响文件内容,对于数码图像而言,也就不会使图像细节有任何...
  • 数据压缩算法—2无损压缩算法

    千次阅读 2018-12-12 20:55:43
      字典算法是最为简单的压缩算法之一。它是把文本中出现频率比较多的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示这个单词或词汇。例如:   有字典列表:   00=Chinese   01=People   02=...
  • 电脑用什么解压缩软件比较好?

    万次阅读 2021-07-31 05:14:58
    常用的解压软件有两种: winRAR、360压缩1、WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在 Windows环境下的图形界面。...2、360压缩: 360压缩是新一代的压缩软件,360压缩支持解压主流的rar、z...
  • 这个时候,我们就可以使用ffmpeg的hevc编码功能来实现无损压缩! 什么是FFmpeg? FFmpeg是业内有名的开源图像视频处理程序。它被广泛的使用,在许多视频剪辑软件、图像处理软件中,都使用的FFmpeg,还有比如...
  • WINRAR压缩软件

    2019-01-21 14:07:03
    这款软件对 WAV、BMP 声音及图像文件可以用独特的多媒体压缩算法大大提高压缩率,虽然我们可以将 WAV、BMP 文件转为 MP3、JPG 等格式节省存储空间,但不要忘记它 的压缩可是标准的无损压缩。 3、能完善地支持ZIP格式...
  • Caesium是一款帮助用户压缩和修改图片照片体积... Caesium 是一个可以批量操作的支持 JPG、BMP、PNG、GIF、WMF 等多种常用图片格式并能保证图片原有品质的高级图片压缩软件,它的双图片显示框可以轻松对比图片压缩前后
  • 5 款最好用的图片无损压缩工具

    万次阅读 2018-12-18 12:42:54
    这款工具我最常用的,实在是太喜欢了,经常用到,最大限度的做到对画质无损的进行压缩,推荐! 这个工具他同时支持对Jpg和Png的压缩。Tinypng也支持Wordpress和magento的使用。 Wordpress插件下载:...
  • 6种最好的图片无损压缩工具

    千次阅读 2018-12-28 11:56:32
    这款工具我实在是太喜欢了,经常用到,最大限度的做到对画质无损的进行压缩 这个工具他同时支持对Jpg和Png的压缩。Tinypng也支持Wordpress和magento的使用。 Wordpress插件下载:...
  • 我相信大家在生活中肯定每日都离不开图片的...名称:图压,软件支持MAC、Win 系统,软件界面清新、几乎可以做到无损画质压缩,图片处理速度快,且永久开源免费,小资源体验了下,真的好用到爆,所以来推荐给大家 软件.
  • 极高的无损压缩率,但比其他常用工具较慢. 2.软件极小,不到20K. 3.支持长文件名. 4.支持通配符. 5.支持固实压缩技术. 6.支持制作自解压文件. 6.图形界面,支持文件拖放. --------------------------------------...
  • 图像常用压缩格式

    千次阅读 2021-10-25 00:29:53
    1.图像压缩简介 将数据压缩的技术应用在...常用的图像压缩技可分为有损压缩和无损压缩。有损压缩会丢弃原数据中的信息,压缩率较高,但无法重建原始的图像,如:DFT(离散傅里叶变换)、DCT(离散余弦变换)、KLT(搭配量化
  • 引言 有两种主要的压缩算法: 有损和无损。有损压缩算法通过移除在保真情形下需要大量...无损压缩,也使文件变小,但对应的解压缩功能可以精确的恢复原文件,不丢失任何数据。无损数据压缩被广泛的应用于计算机领域...
  • 常见的图像文件格式 无损压缩

    万次阅读 2016-03-03 09:38:47
    常见的图像文件格式  一、BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格 式...这种格式的特点是 包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺 点--占
  • JPEG图片无损压缩

    2009-05-31 13:01:44
    BetterJPEG是一款专门用来处理JPEG图像的软件 ...以无损压缩编辑JPEG图像,此外还支持单窗口多图 片处理,对于批量处理简单图片的朋友们来说绝对 是绝好选择。 ■使用说明: 解压后直接运行程序即可!
  • 打开软件后即可看到这界面,简直舒服呀,不吹,这是我见过最清新的图片压缩软件了 功能强大,使用简单 支持 JPG/PNG/GIF/Web 等常规的图片格式,可以自定义压缩等级,等级越高压缩的强度也就越高,批量压缩,指定...
  • 如何做到图片无损压缩?speedpdf在线转换操作步骤
  • 为了节约磁盘空间、提升传送效率,压缩文件成为人们常用的手段。Linux以高效和灵活著称,是当前市场上比较火热的操作系统之一。很多Linux系统使用教程中都会出现“压缩”,常见的Linux文件压缩工具有哪些?如何进行...
  • 你所能用到的无损压缩编码(一)

    千次阅读 2013-01-05 16:14:46
    这个系列将结合C/C++介绍无损压缩编码的实现,正如Charles Petzold在里所表达出来的意思一样,计算机最本质的能力就是将各种信息通过电路的开合转换成为一系列的数字,然后对其按照一定的规则进行编码,利用这些编码...
  • C++ huffman数据压缩算法实现(附源码)

    千次阅读 多人点赞 2020-12-06 16:02:46
    Huffman 原理简单,实现起来也不困难,在如今的主流压缩软件得到了广泛的应用。 相应用程序、重要资料等绝对不同意信息丢失的压缩场合, Huffman 算法是非常好的选择。 怎么实现Huffman压缩 哈夫曼压缩是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,507
精华内容 2,202
热门标签
关键字:

常用无损压缩软件