事情是这样的:几周前我全职使用 Linux,并且正在编辑我经常使用的电子表格,突然意识到当我截取其中一部分的屏幕截图时,生成的图像现在占用的空间是 Windows 相同屏幕面积的 2.5 倍...为什么?
脚步
- Windows 7:在 LibreOffice 中打开电子表格,使用标准键盘快捷键截取整个屏幕,粘贴到 MS Paint 中,裁剪所需区域,保存为 PNG
- Ubuntu Linux 16.10:在 LibreOffice 中打开电子表格,使用 Ubuntu 内置工具截取所需区域的屏幕截图,保存为 PNG
我甚至使用 GIMP 以最大压缩率重新保存了 Linux 版本,但 Linux 中的屏幕截图图像大小约为 106 KB,而 Windows 中的屏幕截图图像大小约为 42 KB,图像大小基本相同(宽度为 10 像素,高度为 360 像素)。桌面大小在 Windows 中为 1920x1080,在 Linux 中为 1680x1050,但这并不重要,因为图像大小相同... GIMP 报告的像素数相同(约 305k),加载时使用的内存相同(3.1 MB),图层数相同(1)- 唯一不同的是 dpi 在 Windows 中为 96,在 Linux 中为 72,但同样,这也不重要,因为其他数字都相同。
能解释一下原因吗?MS Paint 可能使用有损 PNG 压缩吗?
答案1
不存在有损 PNG 压缩。
但是肯定存在更优越的 PNG 压缩。也就是说,并非每个支持 PNG 压缩的应用程序都能像其他应用程序一样出色地完成工作。
出于这个原因,我在 Windows 中使用一款名为 PNGGauntlet 的应用程序来优化我的 PNG 文件的大小。PNGGauntlet 本身使用 PNGOut、OptiPNG 和 DeflOpt,并选择最佳的输出。这样做会丢弃不必要的透明度,将颜色深度降至最低,并使用更好的压缩算法。
我相信你可以编写一份OptiPNG对于 Linux。