首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    可能是最通俗的Lempel-Ziv-Welch (LZW)无损压缩算法详述

    一、概述      首先看看百度百科里的一句话介绍:“LZW就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩。” 简单来说,就是尝试用短的编码代替长的编码达到压缩的目的。...LZW其实是三个大牛的名字,这个算法最开始是 Ziv和Lempel这两个人在1977,1978年发明的,在1984年的时候由另一位大牛Terry Welch进行了改进,所以这个算法的名字才叫LZW。...LZW算法就是利用这样一种思想并且能够自适应的生成字典并且保存在最后的编码本身之中。      原始的LZW算法的采用4k长的字典(实际上很难用到这么多),最开始的256个字典项就是ASCII码值。...LZW的解压缩算法用伪码表示是这样的:  1. 读入一个码p 2. 输出p对应字符 3. p = c; 4. while ( 继续读入下一个码c ) 5.{ 6....m_nCount = 0; 16 static int m_nOffset = 0; 17 18 static long lzw_compress

    5.7K80

    GIF压缩小记

    点阵数据本身的存储也是可以进行压缩的,GIF图所采用的是LZW压缩算法。这样的压缩和图像本身性质无关,是字节层面的,文本信息也可以采用(比如常见的gzip,就是LZW和哈夫曼树的一个实现)。...举一个简单的例子来说明LZW算法的核心思路。...对原始信息来说,LZW压缩是无损的。 除了采用LZW之外,帧信息存储过程中还采取了一些和图像相关的优化手段,以减小文件的体积,直观表述就是——公共区域排除、透明区域叠加等。 3....压缩算法 GIF默认的压缩算法为LZW算法,理论上我们也可以尝试其他压缩算法来获得更高的压缩比。比如LZW算法只针对完全相等的数据,那么我们是否可以使用一定程度的近似值来做更极值的压缩? 4....具体实现    笔者已将GIF生成以及压缩的代码封装成Python工具类,git地址:https://github.com/jesonxiang/gif_maker。

    1K31

    聊聊字典编码1 导论2 LZ77算法3 LZ78算法

    LZW算法 在LZW算法中使用的术语与LZ78使用的相同,仅增加了一个术语—前缀根(Root),它是由单个字符串组成的缀-符串(String)。...在编码原理上,LZW与LZ78相比有如下差别:①LZW只输出代表字典中的缀-符串(String)的码字(code word)。...现将LZW编码算法和译码算法介绍如下。 1. 编码算法   LZW编码是围绕称为字典的转换表来完成的。...对LZW算法进一步的改进是增加可变的码字长度,以及在字典中删除老的缀-符串。在GIF图像格式和UNIX的压缩程序中已经采用了这些改进措施之后的LZW算法。   ...LZW算法取得了专利,专利权的所有者是美国的一个大型计算机公司—Unisys(优利系统公司),除了商业软件生产公司之外,可以免费使用LZW算法。

    3.7K30

    Java入门(10)-- 类的高级特性

    注:同一个包中的类不必存放在同一个位置,如com.lzw.class1和com.lzw.class2可以一个放在C盘,一个放在D盘,只要将CLASSPATH分别指向这两个位置即可。...10.1.3 创建包 在Java中包名设计应与文件系统结构相对应,如一个包名为com.lzw,那么该包中的类位于com文件夹下的lzw子文件夹下。没有定义包的类会被归纳在预设包(默认包)中。...使用import关键字导入包 语法: 指定com.lzw包中的所有类在程序中都可以使用: import com.lzw.* 指定com.lzw包中的Math类在程序中可以使用: import com.lzw.Math...在程序中添加import关键字时,就开始在CLASSPATH指定的目录中进行查找,查找子目录com.lzw,然后从这个目录下编译完成的文件中查找是否有名称符合者,最后寻找到Math.class文件。.../com/lzw/*.java 这样编译成功后将在当前运行路径下的bin目录中产生com/lzw路径,并在该路径下出现相应源文件的类文件。

    39230

    聊聊字典编码

    j.ziv和a.lempel在1978年首次发表了这种编码方法的文章 在他们的研究基础上,terry a.weltch在1984年发表了改进这种编码算法的文章,因此把这种编码方法称为LZW(lempel-ziv...算法 使用的术语与LZ78的类似,仅增加了一个术语—前缀根(Root),它是由单个字符串组成的缀-符串(String) 4.1 编码原理 LZW只输出代表字典中的缀-符串(String)的码字(code...LZW编码器使用了一种很实用的分析(parsing)算法,称为贪婪分析算法(greedy parsing algorithm) 在贪婪分析算法中,每一次分析都要串行地检查来自字符流(Charstream...算法得到普遍采用,它的速度比使用LZ77算法的速度快,因为它不需要执行那么多的缀-符串比较操作 对LZW算法进一步的改进是增加可变的码字长度,以及在字典中删除老的缀-符串 在GIF图像格式和UNIX...的压缩程序中已经采用了这些改进措施之后的LZW算法

    77720

    Android终端上视频转GIF的实现及GIF质量讨论

    基于调色板的图象数据 图象数据是基于LZW编码方式对数据进行压缩。该部分数据首先包含一个LZW编码的位数,然后是LZW编码后的数据索引数,再是每个像素在调色板中的索引经过LZW编码后的值。...LZW索引编码的最后包含一个终止字节为0。 图形控制扩展(89a版本) 图形控制扩展主要用于设置处理方法、帧之间的延迟时间、透明色的索引值。 ?...写入LZW编码后的图象数据。这里记录的是图象中每个像素点的颜色值在全局调色板或者局部调色板中的索引,经过LZW压缩后,编码到GIF文件中。...indexedPixels为每个像素点的颜色索引 LZWEncoder encoder = new LZWEncoder(width, height, indexedPixels, 8); // LZW

    3.6K110

    面向智能工厂的工业数据压缩研究

    压缩比较低,如LZW编码霍夫曼编码。 3.1.1 Huffman编码 霍夫曼(Huffman)在1952年提出的一种编码方法,从下到上的编码方法,属于变长码类。...3.1.3 LZW编码 LZW编码是围绕称为词典的转换表来完成的。这张转换表用来存放称为前缀(Prefix)的字符序列,并且为每个表项分配一个码字(Code word),或者叫做序号。...LZW编码器(软件编码器或硬件编码器)通过管理这个词典,完成输入与输出之间的转换。...LZW编码器使用的分析(parsing)算法,称为贪婪分析算法(greedy parsing algorithm)。...LZW算法步骤: (1)开始时的词典包含所有可能的根(Root),而当前前缀P是空的; (2)当前字符(C):=字符流中的下一个字符; (3)判断缀-符串P+C是否在词典中:是:P:=P+C,即用C扩展

    50630
    领券