问题

QQ 群中的表情图片的画质是如何越传越差的?

回答
QQ 群中的表情图片越传越差,这是一个非常普遍的现象,背后涉及到图像压缩、存储、传输以及平台处理等多个环节。下面我将尽量详细地解释其中的原因:

核心原因:无损压缩 vs. 有损压缩,以及重复压缩的累积效应

首先,我们要明白QQ群里流传的图片,尤其是表情图片,大多数情况下都不是原始的无损格式(如BMP, PNG的部分设置)。它们通常是以有损格式(最常见的是JPEG)存在,并且在传播过程中会经历多次压缩。

详细分解各个环节:

1. 原始图片来源与最初的压缩:
用户上传的原始图片: 用户从手机拍照、从网上保存或自己制作的表情包,其画质取决于原始来源。手机相机通常会使用JPEG格式,并进行一定程度的压缩。网络上找到的表情包,很多也已经是经过多次转发和压缩的二手货。
QQ的上传处理: 当用户将一张图片上传到QQ时,QQ服务器会对其进行一次处理。为了节省服务器存储空间和加快传输速度,即使是上传一张看似清晰的PNG图片,QQ也可能会在某些情况下进行一次有损压缩,特别是当图片尺寸较大或者文件格式不符合其最优存储格式时。虽然QQ声称对PNG等格式有一定程度的无损支持,但实际操作中,为了效率,压缩是不可避免的。

2. QQ群内的传输与保存:
QQ的文件传输机制: 当一张图片在群里被发送时,QQ会将其打包并传输给群内的其他成员。这个过程中,图片数据会被重新编码。如果图片已经被压缩成JPEG,那么在传输过程中很可能会被再次编码成JPEG,这就意味着有损压缩的累积。
群存储的优化: QQ群服务器为了管理大量的聊天记录和媒体文件,会采用各种优化手段。这可能包括:
缩略图生成: 为了快速显示群聊列表中的图片预览,QQ会生成一个低分辨率的缩略图。这个缩略图的画质必然会比原图差。
图片二次压缩: 为了节省存储空间,QQ可能会对用户上传的图片进行一定程度的二次压缩,即使是原始上传的图片。这种压缩通常是有损的,会进一步降低图片的质量。
格式转换: 为了统一存储格式或适配不同的显示场景,QQ可能将各种格式的图片统一转换为JPEG等格式,进一步引入有损压缩。

3. 用户接收与转发的循环:
下载与重新上传: 当一个群成员看到一张图片觉得不错,想要转发或下载后再次发送时,他实际上是先将图片下载到本地,然后再通过QQ客户端将其上传一次。这个“下载上传”的过程,如果图片是JPEG格式,就会经历一次重新编码。每一次重新编码(除非是无损格式且QQ明确支持不重新编码),都会导致JPEG压缩算法的损失累积。
视觉上的影响: 即使是微小的压缩损失,当累积到一定程度时,就会在视觉上表现为:
模糊: 边缘不再锐利,细节丢失。
噪点增加: 原本平滑的区域出现斑点。
色块化/马赛克: 在颜色过渡不明显的地方,会出现明显的色块或马赛克现象。
颜色失真: 颜色可能变得不那么鲜艳或出现偏差。
清晰度下降: 整体的细节信息大量丢失。

4. 技术细节解释(JPEG压缩):
JPEG原理: JPEG是一种非常流行的有损压缩格式。它通过以下几个关键步骤来减小文件大小:
颜色空间转换: 将RGB颜色空间转换为YCbCr,其中Y代表亮度,Cb和Cr代表色度。人眼对亮度更敏感,对色度不那么敏感,因此可以对色度进行更大幅度的压缩(色度子采样)。
离散余弦变换 (DCT): 将图像块(通常是8x8像素)进行DCT变换,将空间域的像素值转换为频率域的系数。低频成分代表图像的平滑部分,高频成分代表细节和边缘。
量化: 这是主要的有损步骤。将DCT系数除以预设的量化表中的值,然后取整。量化表的数值越大,信息损失越多,压缩率越高,但画质损失也越大。高频系数(代表细节)通常会被量化得更粗糙,甚至直接变成零,从而丢弃掉大部分高频信息。
熵编码: 对量化后的系数进行无损编码(如霍夫曼编码或算术编码),进一步减小文件大小。
累积效应: 当JPEG图片被重新保存或重新编码时,量化过程会再次发生。第一次量化已经丢失了部分细节,第二次量化又会对第一次量化后的结果进行再量化。尤其是在较低的压缩质量下保存JPEG,损失会更大,累积效应也会更明显。

为什么表情图片尤其明显?

表情包的性质: 很多表情包是为了夸张、搞笑或表达特定情绪而设计,其本身就可能包含一些细节或边缘锐利的元素。当这些元素在多次压缩后变得模糊或失真时,视觉效果就会大打折扣。
传播的广度和次数: 表情包是QQ中最频繁使用的内容之一,一张流行的表情包可能在一天内就被成千上万的人转发和保存,这意味着它经历了无数次的“下载上传”循环,压缩损失也随之不断累积。
内容特点: 有些表情包可能本身就是低分辨率的,或者使用了复杂的色彩过渡和细节,这些特点更容易在压缩中暴露其脆弱性。

总结来说,QQ群里表情图片画质越传越差,主要原因是:

1. JPEG等有损压缩格式的使用。
2. QQ平台为了效率和存储进行的自动压缩和优化。
3. 用户在群内反复下载和上传图片,导致多次有损压缩的累积效应。
4. 表情包内容本身的特点对压缩损失的敏感性。

每一次的重新编码,就像给图片施加一层“模糊剂”和“失真剂”,虽然单次影响可能很小,但重复多次后,其破坏力就会显现出来。

网友意见

user avatar

最终结论:一切都是百度的错!!!!!!

-------------------------------------------------2016.10.12更新-------------------------------------------------

为什么图片反复压缩后会普遍会变绿而不是其他颜色? - 互联网

我还真没想到是用了不标准的JPEG算法导致的,我实验时调用的是Mathematica的标准算法

该回答认为这个是谷歌的错,这个bug是在2016 年 4 月修复的

本回答是在2016年3月5日作答的,而现在我仍然保留我的意见

因为当时我也测试过QQ,手机与电脑互传20次后并没有变绿(知乎也没有这个问题)

Chrome浏览器我更是一直在用,在看到这个答案之前我并没有注意到过这个问题

因此,我仍然坚持我当时的实验结果,百度贴吧的算法问题额外的严重...

-------------------------------------------------以下为原答案-----------------------------------------------------

有三个可能性

第一种:截图放缩导致的固有问题.

第二种:图片格式的压缩问题.

第三种:某些平台的问题算法.

------------------------------------------------------------------------------------------------------------------------

我们一个一个来分析,首先请允许我做一个滑稽的表情

说实话,我根本找不到不绿的滑稽大图.....

先第一种可能性,模拟截图,放大,截图,缩小,截图,截图.......

小图已不忍直视,大图表示毫无压力....

当然其实不用这么傻乎乎的迭代,用中心极限定理易证无限次放缩截图的操作等价于进行了一次高斯模糊,大分辨率的图片对于低强度的高斯模糊抗性高.

但是,这个效果和例图效果根本不一样啊....


截屏而造成该问题的可能性排除






------------------------------------------------------------------------------------------------------------------------

JPEG压缩使用基于8*8块大小的离散余弦变换的有损压缩方法.

可以猜想是因为这种信息损失的累积导致了最终的结果.

做个试验,有损压缩100次.

大图仍旧毫无压力.....


结论:JPEG有损压缩导致了色块化的模糊,与例图效果相同.

可以发现,这图要么变红,要么变灰,怎么着也不会变绿.



图片有损压缩是造成该效果的凶手.

但是给图片戴绿帽的主谋则另有其人.




------------------------------------------------------------------------------------------------------------------------------------

尝试了各大软件,最后发现罪魁祸首是百度贴吧(安卓端):

我来看看百度到底干了啥丧心病狂的事儿:


这个病态的算法导致RGB中的R左偏与B"相消"

效果就是,R和B几乎没了,只剩Green了那就绿了.....

或许是百度程序员为了防止图片在离散余弦变换下变红就每次变换加了一点点绿色?



这一个大锅甩百度头上也不大对,因为实验可以看出30次迭代以后基本上就收敛了.用同一种方法艹表情总会收敛,但是这表情辗转于各大平台,被各种方法花样艹,想直视都难啊...

百度啊百度,看看你干了什么,真是罪大恶极,给80万表情包戴上了绿帽...你看看,你看看,现在还有多少表情包不是绿的...哎呀呀........

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有