㈠ 关于png文件的编辑疑问(质量问题)
1。PNG是LZ77无损压缩派生的一种位图格式。
2。编辑多次看你做的是什么样的编辑,有的时候是会改变的。
3。多次编辑转换,原图肉眼看不见或者不察觉,但是是有改变的。
4。压缩原理很复杂。我告诉你,你愿意看吗?
1.1 索引图与 RGB 图 对于 PNG 图像,可以分为索引(Index)图和 RGB 图两种,索引图只包含固定数量的颜 色,而 RGB 图的颜色数量是不受限制的. RGB 图的每一个象素都保存一个 RGB 值,代表这个象素的颜色,因此,一张 RGB 图有多 少个象素,文件中就保存多少个 RGB 值. 而索引图会将其固定数量的颜色,按照顺序排列起来,作为颜色的索引保存在文件头中,被 称为调色板(palette).每一个象素只保存其颜色在调色板中的索引. 如一个 32 色的索引图,在文件头中保存了 32 个颜色,索引值从 0 到 31.图中每一个象 素只记录其颜色的索引. 因此,对于一般的 PNG 图,索引图文件的大小总是小于 RGB 图的.
1.2 行程压缩原理 当我们把一张索引图的所有象素(N 个) ,按照从上到下,从左至右,即按行扫描的顺序排 列起来的时候,我们得到一个队列.如果我们用 1 个字节来存储一个象素 的索引值(调色板颜色不超过 256) ,那么数据的大小为 N 字节.这段数据的格式我们表示 为 [I1][I2]…[In] 共 N 个. 在上面的队列中,可能会出现很多连续相同的索引值,最多的就是透明色.如果我们在每个 索引值前用 1 个字节保存这个值连续出现的数量(最多可以表示 256 个 ) ,那数据的格式变为 [C1][I1][C2][I2]…[Cm][Im] 共 M 个.那么一张 256 个象素的 单色图的所有数据,只需要 2 个字节来保存.通常,我们所需的图中总 是有大片连续的颜色,包括透明色,因此按照这个格式保存的图像,其文件大小可以大大降 低,这就是行程的压缩原理.
1.3 USI 压缩原理 如果一张索引图的颜色数为 32,那么在[C1][I1][C2][I2]…[Cm][Im] 格式中,I 的数值 都小于 32,那么每个字节前 3 bits 始终为 0.为了充分利用这 3 bits,我们可以将 C 的值保存在这 3bits 中,这样我们的格式变为 [G1][G2]….[Gk] 共 K 个(G 的高位为数量,低位为颜色索引) .这样,对于 32 色的图, 每个字节最多可以保存 8 个象素的信息, 对于 64 色的图, 每个字节最多可以保存 4 个象素 的信息,对于 16 色的图,每个字节最多可以保存 16 个象素的信息. 在 [G1][G2]….[Gk] 这 K 个字节前,再加上调色板数据和其它本图的必要信息,就得到 了 USI 格式的文件.
conan(29842977) 15:03:01 1.1 载入文件
private void load(String file) {
try {
DataInputStream din = new
DataInputStream(getClass().getResourceAsStream(file));
m_flags = din.readInt();
//格式标志
/** 读取调色板信息 */
m_count = din.readByte() & 0xff; //调色板位数
m_mask = 0xff >> (8 - m_count); //计算 取色板索引的掩码
int pal_count = din.readByte() & 0xff; //调色板数量
int pal_len = din.readByte() & 0xff; //调色板长度 即颜色数
m_pal = new int[pal_count][pal_len]; //初始化调色板容器
int pal; //读取调色板信息
for (int i = 0; i < pal_count; i++) { for (int j = 0; j < pal_len; j++) { pal = din.readShort() & 0xffff; m_pal[i][j] = ( ( ( ( (pal & 0xF000) >>> 12) * (17 << 24)) & 0xFF000000) | ( ( ( (pal & 0x0F00) >>> 8) * (17 << 16)) & 0x00FF0000) | ( ( ( (pal & 0x00F0) >>> 4) * (17 << 8)) & 0x0000FF00) | ( ( ( (pal & 0x000F) * 17))) ); } } /** 读取图块信息 */ m_modelCount = din.readShort() & 0xffff; //图块数量 //读取图块尺寸 if ( (m_flags & FLAG_REBUILD_SIZE) != 0) { //基于尺寸的转换方式 m_rebuildWidth = din.readByte() & 0xff; m_rebuildHeight = din.readByte() & 0xff; } else if ( (m_flags & FLAG_REBUILD_MODULE) != 0) { //基于动画 model 的转换方式 m_models = new byte[m_modelCount * 2]; din.read(m_models); } /** 读取像素数据 */ m_dataSize = din.readInt(); //像素数据大小(压缩数据) m_data = new byte[m_dataSize]; din.read(m_data); //读取像素数据(压缩数据) //读取每个图块数据的起始偏移量 int offset = 0; m_dataOffset = new int[m_modelCount]; for (int i = 0; i < m_modelCount; i++) { m_dataOffset[i] = offset; if ( (m_flags & FLAG_16BIT_4_LEN) != 0) { offset += din.readShort(); } else { offset += din.readByte() & 0xff; } } } catch (Exception ex) {} } 1.2 解压缩 /****************************************** * 解压缩指定图块像素数据 * @param model_id int 图块号 * @param pal_id int 调色板号 * @return int[] 解压缩图块像素数据(ARPG 值) ******************************************/ private int[] BuildRle8bFrm(int model_id, int pal_id) { //计算解压后,像素数据的大小(图块 W*图块 H) int size; if ( (m_flags & FLAG_REBUILD_SIZE) != 0) { size = m_rebuildWidth * m_rebuildHeight; } else { size = (m_models[model_id * 2] & 0xff) * (m_models[model_id * 2 + 1] & 0xff); } //初始化像素 buf int[] m_bufB = new int[size]; int pal[] = m_pal[pal_id]; //获取当前调色板 int offset = m_dataOffset[model_id]; //获取压缩数据起点 //解压缩 int count, index, pos = 0; while (pos < size) { count = ( (m_data[offset] & 0xFF) >> m_count) + 1; index = pal[m_data[offset] & m_mask]; offset++; while (--count >= 0) { m_bufB[pos++] = index; } } return m_bufB; } /********************************** * 获取指定图块 Image * @param model_id int 图块号 * @param pal_id int 调色板号 * @return Image 图块 Image 对象 **********************************/ public Image GetImage(int model_id, int pal_id) { //获得指定图块解压数据(ARPG 颜色数据) int[] m_bufB = BuildRle8bFrm(model_id, pal_id); //计算图块尺寸 int w, h; if ( (m_flags & FLAG_REBUILD_SIZE) != 0) { w = m_rebuildWidth; h = m_rebuildHeight; } else { w = m_models[model_id * 2] & 0xff; h = m_models[model_id * 2 + 1] & 0xff; } //生成 Image 图片 Image m_image = Image.createRGBImage(m_bufB, w, h, true); m_bufB = null; return m_image; }
㈡ 压缩文件压缩的文件的哪部分内容压缩软件的原理是什么
老大,压缩原理是非常复杂的, 不同的文件有不同的压缩算法 压缩文件的基本原理是查找文件内的重复字节,并建立一个相同字节的"词典"文件,并用一个代码表示,比如在文件里有几处有一个相同的词"中华人民共和国"用一个代码表示并写入"词典"文件,这样就可以达到缩小文件的目的. 由于计算机处理的信息是以二进制数的形式表示的,因此压缩软件就是把二进制信息中相同的字符串以特殊字符标记来达到压缩的目的。为了有助于理解文件压缩,请您在脑海里想象一幅蓝天白云的图片。对于成千上万单调重复的蓝色像点而言,与其一个一个定义“蓝、蓝、蓝……”长长的一串颜色,还不如告诉电脑:“从这个位置开始存储1117个蓝色像点”来得简洁,而且还能大大节约存储空间。这是一个非常简单的图像压缩的例子。其实,所有的计算机文件归根结底都是以“1”和“0”的形式存储的,和蓝色像点一样,只要通过合理的数学计算公式,文件的体积都能够被大大压缩以达到“数据无损稠密”的效果。总的来说,压缩可以分为有损和无损压缩两种。如果丢失个别的数据不会造成太大的影响,这时忽略它们是个好主意,这就是有损压缩。有损压缩广泛应用于动画、声音和图像文件中,典型的代表就是影碟文件格式mpeg、音乐文件格式mp3和图像文件格式jpg。但是更多情况下压缩数据必须准确无误,人们便设计出了无损压缩格式,比如常见的zip、rar等。压缩软件(compression software)自然就是利用压缩原理压缩数据的工具,压缩后所生成的文件称为压缩包(archive),体积只有原来的几分之一甚至更小。当然,压缩包已经是另一种文件格式了,如果你想使用其中的数据,首先得用压缩软件把数据还原,这个过程称作解压缩。常见的压缩软件有winzip、winrar等。 有两种形式的重复存在于计算机数据中,zip就是对这两种重复进行了压缩。 一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。 一个字节有 0 - 255 共 256 种可能的取值,三个字节有 256 * 256 * 256 共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现(我们写程序时,多少次前后、paste?),以几十 K 为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。 第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个 ASCII 文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母 e 的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大
㈢ 压缩文件的压缩原理
把文件的二进制代码压缩,把相邻的0,1代码减少,比如有000000,可以把它变成6个0 的写法60,来减少该文件的空间。
由于计算机处理的信息是以二进制数的形式表示的,因此压缩软件就是把二进制信息中相同的字符串以特殊字符标记来达到压缩的目的。为了有助于理解文件压缩,请在脑海里想象一幅蓝天白云的图片。对于成千上万单调重复的蓝色像点而言,与其一个一个定义“蓝、蓝、蓝……”长长的一串颜色,还不如告诉电脑:“从这个位置开始存储1117个蓝色像点”来得简洁,而且还能大大节约存储空间。这是一个非常简单的图像压缩的例子。其实,所有的计算机文件归根结底都是以“1”和“0”的形式存储的,和蓝色像点一样,只要通过合理的数学计算公式,文件的体积都能够被大大压缩以达到“数据无损稠密”的效果。总的来说,压缩可以分为有损和无损压缩两种。如果丢失个别的数据不会造成太大的影响,这时忽略它们是个好主意,这就是有损压缩。有损压缩广泛应用于动画、声音和图像文件中,典型的代表就是影碟文件格式mpeg、音乐文件格式mp3和图像文件格式jpg。但是更多情况下压缩数据必须准确无误,人们便设计出了无损压缩格式,比如常见的zip、rar等。压缩软件(compression software)自然就是利用压缩原理压缩数据的工具,压缩后所生成的文件称为压缩包(archive),体积只有原来的几分之一甚至更小。当然,压缩包已经是另一种文件格式了,如果想使用其中的数据,首先得用压缩软件把数据还原,这个过程称作解压缩。常见的压缩软件有winzip、winrar等。
有两种形式的重复存在于计算机数据中,zip就是对这两种重复进行了压缩。
一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。
一个字节有 0 - 255 共 256 种可能的取值,三个字节有 256 * 256 * 256 共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现(我们写程序时,多少次前后、paste?),以几十 K 为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。
第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个 ASCII 文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母 e 的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大。
㈣ PNG图片是无损压缩的吗为什么还有大小分别
PNG图片是有压缩的。
PNG图片主要有三个类型,分别为 PNG 8/ PNG 24 / PNG 32。
PNG8:PNG 8中的8,其实指的是8bits(一个字节),相当于用2^8(2的8次方)大小来存储一张图片的颜色种类,2^8等于256,也就是说PNG 8能存储256种颜色,一张图片如果颜色种类很少,将它设置成PNG 8得图片类型是非常适合的。
PNG24:PNG 24中的24,相当于3乘以8 等于 24,就是用三个8bits分别去表示 R(红)、G(绿)、B(蓝)。
R(0~255),G(0~255),B(0~255),可以表达256乘以256乘以256=16777216种颜色的图片,这样PNG 24就能比PNG 8表示色彩更丰富的图片。但是所占用的空间相对就更大了。
PNG32:PNG 32中的32,相当于PNG 24 加上 8bits的透明颜色通道,就相当于R(红)、G(绿)、B(蓝)、A(透明)。
R(0~255),G(0~255),B(0~255),A(0~255)。比PNG 24多了一个A(透明),也就是说PNG 32能表示跟PNG 24一样多的色彩,并且还支持256种透明的颜色,能表示更加丰富的图片颜色类型。
(4)png压缩原理扩展阅读
PNG图片的压缩,分两个阶段:
预解析(Prediction):这个阶段就是对png图片进行一个预处理,处理后让它更方便后续的压缩。比如就是一个女神,在化妆前,会先打底,先涂乳液和精华,方便后续上妆、美白、眼影、打光等等。
压缩(Compression):执行Deflate压缩,该算法结合了 LZ77 算法和 Huffman 算法对图片进行编码。
压缩阶段会将预处理阶段得到的结果进行Deflate压缩,它由 Huffman 编码 和 LZ77压缩构成。
如前面所说,Deflate压缩会标记图片所有的重复数据,并记录数据特征和结构,会得到一个压缩比最大的png图片 编码数据。
Deflate是一种压缩数据流的算法. 任何需要流式压缩的地方都可以用。
还有就是我们前面说过,一个png图片,是由很多的数据块构成的,但是数据块里面的一些信息其实是没有用的,比如用Photoshop保存了一张png图片。
图片里就会有一个区块记录“这张图片是由photshop创建的”,很多类似这些信息都是无用的,如果用photoshop的“导出web格式”就能去掉这些无用信息。
㈤ 图片格式(BMP,JPEG,GIF,PSD,PNG,TIFF,TGA,EPS)的基本原理
各种图像格式
这里介绍的是制版印刷中有代表性的格式。它们各自都存在优缺点,说不上哪个是优,哪个是劣。有的正在ISO审议中。
TIFF
系Tagged Image File Format之缩略。意为标记图像文件格式,系由许多应用软件配套的有代表性的格式。数据本身、色、大小等的属性由称做标记的数据说明部分描述的文件构成。根据这个标识,确定各种属性或数据形式。借助标记提高了文件的随意性,在不同的应用软件之间和不同的计算机之间,数据的互换也方便。
TIFF/IT
系TIFF for Image Technology之缩略。
系用TIFF结构来表现印刷用的图像数据的标准。主要是针对CMYK等的分色图像确定TIFF文件形式,不依赖于OS,而适用于印刷制版中所用的光栅数据文件的交换格式。有连续调色彩(CS)、线条版(LW)、高分辨力连续调(HC)、单色层次(MP)、点子组合2值(BP)、连续数据(run-length)2值(BL)等各种图像数据。其扩充方案也正在ISO探讨中。
TIFF/IT-P 1
针对TIFF/IT的各图像数据形式,指定叫做profile 1的格式。对于CT、LW、HC、MP、BP、BL各图像数据形式,可以使用标记信息组及其值受到限制的标准。
EPSF,EPS
系Encapsulated PostScript Format之缩略。由美国Adobe Systems公司开发,系将PostScript数据于软件之间进行接受的格式。多数情况用EPS表示。为了确认数据的配置和内容,添付专用的标题文本的同时,使用包括表示画面专用的图画格式。
因为EPS是对应PostScript的缘故,在各种DTP软件上处理图像数据时,成为事实上的标准格式。已经采用了供印刷而用的DCS(Desktop Color Separator)形式。由于采纳了DCS,彩色图像是分为CMYK各色4个文件来保存。作为其它的特长,可以只切取图像予以利用,还有可以做到JPEG压缩等。文字和照片等的图像,用图像照相机(imagesetter)等的输出机输出时,多数场合是对应PostScript的关系,可用EPS来保存数据。
PICT
系Picture之缩略。由美国苹果计算机公司确定的图像格式。在macOS上工作的几乎所有的应用软件给予了帮助。亦称作Macintosh特有的格式。
JPEG
系Joint Photographic Image Experts Group之缩略。
系ISO 和ITU(电通信协会)确定的彩色静止画缩放编码方式的标准,是在制版印刷领域最普遍使用的压缩格式。压缩率自1/5到1/30的程度。由于是非可逆压缩的关系,在减压缩时,会损失一部分信息。当需要高压缩率和高品质再现的场合,就需要特定的压缩技术。
PDF
系Portable Document Format之缩略,意为可移植文件格式。由美国Adobe Systems公司以PostScript技术为基础提倡的文件格式。缩放都能做到,而且文字和图形的轮廓完美无缺,效果极好。不依靠计算机的工作平台也能处理。又因为可以填装字体,被称作是本世纪的标准格式。
通常,用于办公业务。供印刷用时,已有特殊化后的PDF,叫PDF/X正由ISO研讨中。
㈥ 想要将图片文件压缩为png格式,怎么做到的
问题:图片文件怎样压缩才能压缩成png格式
这里有一个好的方法教大家怎样压缩图片文件,推片文件时可以批量压缩的,我们通常压缩文件都会将文件压缩成为压缩包,但是图片文件可以直接压缩,我们来看看图片文件时怎样压缩成为png格式的吧,首先我们需要工具打开在合格工具上。
1、点击打开工具选择图片压缩这个功能进到页面。
是不是很简单呢,而且这样压缩图片文件时不会对图片文件的画质形成什么影响的,我们可以对视频文件进行保存到新的文件夹下,也可以将文件保存在原文件夹下,工具会减小图片文件的大小但是不会影响图片文件的使用。
㈦ png图片的作用原理是什么
这个问题我可以回答你,PNG是带阿尔法通道的一种图片格式,也就是说它可以生成透明的背景,还有一种和PNG类似的格式叫TGA,TGA是一种大体上和PNG一样,但带有序列的一种格式,如果你学习网页的话你应该知道,PNG格式的内存很小,而且可以输出透明背景,所以广泛用于网站上,专业的制作PNG的软件是网页三剑客之一的Fireworks,它是专业的制作PNG图片的软件,是着名的adobe公司生产的!希望我的答案您会满意
㈧ 压缩或解压文件是什么原理
压缩文件的基本原理是查找文件内的重复字节,并建立一个相同字节的"词典"文件,并用一个代码表示,比如在文件里有几处有一个相同的词"中华人民共和国"用一个代码表示并写入"词典"文件,这样就可以达到缩小文件的目的.
由于计算机处理的信息是以二进制数的形式表示的,因此压缩软件就是把二进制信息中相同的字符串以特殊字符标记来达到压缩的目的。为了有助于理解文件压缩,请您在脑海里想象一幅蓝天白云的图片。对于成千上万单调重复的蓝色像点而言,与其一个一个定义“蓝、蓝、蓝……”长长的一串颜色,还不如告诉电脑:“从这个位置开始存储1117个蓝色像点”来得简洁,而且还能大大节约存储空间。这是一个非常简单的图像压缩的例子。其实,所有的计算机文件归根结底都是以“1”和“0”的形式存储的,和蓝色像点一样,只要通过合理的数学计算公式,文件的体积都能够被大大压缩以达到“数据无损稠密”的效果。总的来说,压缩可以分为有损和无损压缩两种。如果丢失个别的数据不会造成太大的影响,这时忽略它们是个好主意,这就是有损压缩。有损压缩广泛应用于动画、声音和图像文件中,典型的代表就是影碟文件格式mpeg、音乐文件格式mp3和图像文件格式jpg。但是更多情况下压缩数据必须准确无误,人们便设计出了无损压缩格式,比如常见的zip、rar等。压缩软件(compression software)自然就是利用压缩原理压缩数据的工具,压缩后所生成的文件称为压缩包(archive),体积只有原来的几分之一甚至更小。当然,压缩包已经是另一种文件格式了,如果你想使用其中的数据,首先得用压缩软件把数据还原,这个过程称作解压缩。常见的压缩软件有winzip、winrar等。
有两种形式的重复存在于计算机数据中,zip就是对这两种重复进行了压缩。
一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1.重复位置距当前压缩位置的距离;2.重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。
一个字节有 0 - 255 共 256 种可能的取值,三个字节有 256 * 256 * 256 共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现(我们写程序时,多少次前后、paste?),以几十 K 为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。
第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个 ASCII 文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母 e 的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(这里顺便提一下:png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大。