7

The original PNG image is 800x1200 and takes up about 34K. After the images is resized by GraphicsMagick to 320x480 size, the resulting images takes up approximately 37K. (For comparison, if the image is resized with Paint on Windows 7 then the resulting image is 40K.) What gives? The whole point of resizing an image was to save space. How should GraphicsMagick be used to shrink the image size?

4

2 回答 2

9

PNG 是一种无损格式,通过首先执行一个称为预测的步骤,然后应用 zlib 中使用的相同算法来压缩图像数据。预测步骤是有效压缩文件的关键步骤,它基于早期相邻像素的值。

所以,假设你有一个大的黑白PNG(我的意思是只有黑白,有些人有时会用灰度混淆)。还假设它不是一个微小的棋盘图案。在此图像的许多区域中,您将有一个相对较大的白色区域,然后是一个相对较大的黑色区域,依此类推。当预测器在这些大区域之一内时,正确预测当前像素强度与上一个像素强度完全相等是没有问题的。这使得更好地压缩描述图像的数据变得更加容易。

现在,让我们使用一些不同于最近邻的重采样滤波器(比如 Lanczos)来缩小这个黑白图像。这很有可能将您的黑白图像变成灰度图像,灰度图像具有更大的强度范围。这可能会使预测器的工作变得更加困难,因此最终的文件大小可能会更大。

例如,这是一个黑白 256x256 PNG 图像,占用 5440 字节,将其大小(使用 3-lobed Lanczos)调整为 120x120,现在占用 7658 字节,另一个调整大小(使用最近邻)到 120x120,占用 2467 字节。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2013-01-03T20:47:31.080 回答
2

PNG是一种压缩格式。有时试图压缩一个最大压缩的项目实际上会导致一个更大的项目。因此,如果将 800x1200 调整为更小的尺寸,但结果会保留原始的所有内容,因为原始已经尽可能小,您可能会看到这种情况发生。为了证明这一点,尝试使用 7zip 以超压缩方式压缩一些数据。然后尝试压缩压缩文件。通常第二个压缩文件会比第一个大。

于 2012-12-23T04:54:03.423 回答