文件结构
lzljy
这个作者很懒,什么都没留下…
展开
-
TIFF图像文件(八):差分计算
差分法差分法(Differencing)是用相邻两个数据的差值来表示数列,本项差值等于本项原数据-上一项原数据。如2,3,4,5,6数列,通过差分法后的数列为:2,1,1,1,1。差分法通常使用在数据压缩之前,通过差分法,产生大量相同的数据,提高压缩率。当Tiff图像使用LZW压缩之前,就使用差分法。TIFF图像的差分法Tiff图像用id=0x13D的tag(Predictor)来定义...原创 2020-02-13 21:45:17 · 776 阅读 · 0 评论 -
TIFF图像文件(七):图像数据
Tiff的图像数据是分trip(条或带)保存,每个带保存n行。每个带数据分别保存。一、每带保存的行数由id=278(0x116)的IFD保存,如果采用lzw压缩,其取值一般而言=8K/width。因为lzw建议一次压缩的数据量不大于8K。总带数=总行数/每带保存的行数;二、带的数据地址数据地址偏移量由id=273(0x111)的IFD保存。IFD由id,数据类型,数据长度,数据...原创 2020-02-06 22:44:57 · 2219 阅读 · 0 评论 -
PNG(一):文件结构
PNG文件是高位优先(big endian)的,以字节为单位保存的图像文件。PNG由8个字节(137 80 78 71 13 10 26 10)开头,作为PNG标志字节,后面是多个数据块。1、块的种类数据块分核心块(critical chunks)和辅助块(ancillary chunks)。核心块是任何PNG必备的,核心块包括信息块(IHDR)、图像数据块(IDAT)和结束块(IEN...原创 2019-12-24 18:44:15 · 327 阅读 · 0 评论 -
huffman 压缩
一、huffman二叉树原理1、将数组按每个数值的权重大小,最小两个权重的数值合并组成一个二叉树,新的二叉树节点值取代原有的两个数值,成为数组的新值,并具有新的权重(原权重相加);2、新的数组继续取最小权重形成新的二叉树,取代原两数,形成新数组,以此不断循环,直至数组合并成一个值,并形成一个二叉数"森林"——即以最后一个数为根,每层分叉形成两叉;3、每个数值根据二叉树路径(0,1)形成...原创 2019-12-19 21:32:12 · 292 阅读 · 0 评论 -
pack和unpack:二进制字符流的处理利器
文件除了是二进制流外,其保存的结构和数据类型以及文件定义的保存结构有关。1、big-endian和little-endian之分,如地址0x3BEF,按big-endian,保存为 3B EF;按little-endian,保存为EF 3B。2、与数据类型有关。如数值01,按单字节保存为01,按short保存,为00 01;按Long类型保存,为00 00 00 01。pack——将数...原创 2019-12-18 22:16:40 · 779 阅读 · 0 评论 -
TIFF图像文件(六):PackBits压缩
PackBits是Apple Macintosh的压缩方法。针对字节为单位,通过字节重复或不重复个数来减少字节的数量,达到压缩的目的。思路:把n个重复的字节用两个字节表示,第一个字节代表重复数(-1~-127),第二个字节代表重复值把n个不重复的字节用n+1个字节表示,第一个字节代表不重复数重复数(0-127),第2~n+1个字节代表不重复值。示例:示例 原数据(十...原创 2019-12-18 11:48:12 · 2462 阅读 · 0 评论 -
TIFF图像文件(五):LZW的PHP应用
一、要点1、字典的关键字256表示开始,257表示结束;2、压缩是针对文件的,9位的压缩码要转成8位ascii便于保存为文件;3、解压时,将ASCII码转成二进制,恢复成9位压缩码再解压;4、本程序只是针对压缩码小于512,即9bits的。实际情况中,当压缩码大于511后,改成10bits;大于1023,,用11bits;大于2048的,用12bits;不会使用13bits的,即编...原创 2020-02-06 20:40:38 · 426 阅读 · 0 评论 -
TIFF图像文件(四):LZW压缩
LZW压缩算法是Unisys的专利,由Lempel-Ziv-Welch三人发明,有效期到2003年。LZW思路:ASCII字符有255个,每个用8bits表示,如果要表示2个字符,就用16bits;3个字符就用24bits,依此类推。假设我们对ASCII码扩展成12位,可以有4096个字符,并自己定义255以后的含义,如ab定义成258,abc定义成259,那么ab只用9位,较原来节约7...原创 2020-02-06 17:38:05 · 9912 阅读 · 0 评论 -
TIFF图像文件(三):图像的Tag
注:TIFF将一幅图像划分成几条,每条包含几行,所以Tag提到的图像都用strip。一、黑白图像的IFD必须有的Tag Tag 代码 Tag 名称 类型 值 100 ImageWidth(图像宽) SHORTorLONG ...原创 2019-12-15 21:27:48 · 2518 阅读 · 0 评论 -
TIFF图像文件(二):数据类型
TIFF的Tag信息块的2-3字节代表Tag值的数据类型,取值1-12,分别代表如下:数据类型代码 数据类型 字节数 说明 1 Byte 1 00-FF 2 ASCII 1 00-80(128个ASCII字符) 3 Short 2 <65535的无符号整数 4 Long 4 <...原创 2019-12-15 19:25:18 · 1120 阅读 · 0 评论 -
TIFF图像文件(一):文件结构
TIFF(Tag Image File Format)是一种包含标签(Tags)的静态图像文件。它的文件由文件头、1个以上的IFD(Image File Directory)及IFD指向的数据块组成。一、文件头(Header)文件头通常为8个字节(big TIFF另说),具体如下:0-1字节;49 49或4D 4D;即II或MM,代表多字节数据存储方式。II=littlele-endi...原创 2019-12-15 17:53:31 · 1886 阅读 · 0 评论 -
文件中字节存储的顺序(big-endian和little-endian)
文件存储的数据按bit( 比特)单位的顺序存储在文件结构中,单个bit没有任何意义,8个bit形成一个字节,字节根据文件结构设计者的要求代表0-255的数值。为了表示更大范围的数值,需要2,4,8或16个字节来表达。当使用2个以上字节表示数值时,存在两种存储数据顺序:高位优先(big-endian,大端字节)和低位优先(little-endian,小端字节)。这两种存储数据顺序简单来说就是按书写顺...原创 2019-12-15 10:43:58 · 939 阅读 · 0 评论