jpg文件少几个比特?
以一个典型的非压缩的 24 位 RGB 图像为例,每个 pixel 是 8 个字节,24 位就是 16384 个比特。那么 JPEG 压缩会去掉多少信息呢?
假设原图像为 f(x, y),经过一次 JPEG 压缩得到 p(x, y),有 50% 的概率将一个像素点定义为可保留值或者可删除值。定义 D 为图像尺寸(宽度 x 高度 y),则共有 C(D) 种可能的配置。所以有 50%的概率使每个像素点有 50%的可能性成为可留 (0 有 50%成为1)可删值。当所有像素都不具有 1/2的可能成为可删值时,算法停止,此时整个图片的所有信息被删除。 因此根据算法流程有 C(D) = 2^(D*log_2(50)) = (1+根号50)^D (1.1) 同理可以求出,当全部变为可留值时有 C(D) = 2^{D} 所以根据图像长度,可以有 两种情况 当 D 根号50 当 D > 根号50时,C( D ) < 根号50 根据上面的公式就可以计算出不同大小图像所需要的比特数了。
举个例子,对于一幅 100 万像素的图形来说,如果我们要其保存 7 天,需要 7 * 100 万 = 700 万比特;如果我们要他保存 700 年,只需要 700 年 = 700 万秒,而一秒种传输 1 副 100 万象素图形的话,网络带宽需要 7 千兆(100 万 / 1 秒)才能满足要求。 而 jpg 图片的文件尺寸一般是按 「 每像素 5 比特」计算的(其实比 5 比特多,但是计算的时候忽略一些参数可以近似看成 5 比特)。所以对于一幅 100 万像素的图形,如果我们要他保存 7 天,需要用掉 7 * 100 万 * 5 = 3500 万比特。如果我们想要他保存 700 年,只需要用 700 年 * 100 万 * 5 = 35亿比特。和未经 jpg 压缩的 bmp 格式的图形所需要得数量差不多,只不过后者的数据是连续排列的,而前者是经过压缩的。