为什么减压保持质量?

-1 graphics

我已经读过,为了将压缩图像读入内存,必须先将其解压缩,然后分配原始大小.因此,由于它被解压缩并且在压缩之前的大小被分配在内存中,为什么使用某个软件查看时压缩图像的分辨率与原始软件的分辨率不同?

Pan*_*ama 6

压缩不是降低图像的分辨率或像素大小.压缩是关于减少表示特定图像所需的字节数.

您可以将图像看作4字节结构的数组,每个像素一个,其中每个字节代表每个像素颜色的一个组成部分,即红色,绿色,蓝色和alpha.使用此方案表示图像所需的大小是

width * height * 4
Run Code Online (Sandbox Code Playgroud)

因此,100x100像素的图像将具有10000个像素,因此消耗40000个字节.事实上,这大致就是BMP格式存储图像的方式.

但是,这不是表示10000像素的唯一方法.例如,如果前5000个像素是蓝色,而底部像素是棕色,则可以通过说"blue:5000,brown 5000"之类的东西来表示图像,并且这将需要更少的字节来表示.该方案大致是RLE(行程编码)的工作原理,并广泛用于GIF等多种格式.

但是,您可以做很多事情来减少表示图像中字节所需的字节数.数据并不总是很容易用较少的字节表示,因此一些压缩算法(如JPEG文件中使用的算法)只是稍微修改像素,因此数据更容易压缩,但更改不是非常引人注目.如果这种变化是可以接受的,则在压缩图像时可以获得令人印象深刻的结果.这就是所谓的"有损压缩".

压缩图像的整个要点是使图像从一个地方移动到另一个地方更容易,无论是将它们存储在光盘上还是通过互联网发送.但是,当您要显示图像时,您的计算机必须告诉显示器每个像素必须获得什么颜色,因此一旦您要显示图像,您需要将其解压缩.