了解最常用的图片文件格式
对于数据可视化而言,我们在使用软件可视化做图之后,还要把图片进行保存。所以对于图片的格式就需要有一些认识。就作者而言,目前偏好是将pdf用于高质量保存的文件,同时将png作为进行在线使用的图片格式。如果png文件太大,则会使用jpeg格式。在下文中,我将解释这些文件格式之间的主要区别以及它们各自的优点和缺点。位图和矢量图形各种图形格式之间最重要的区别是它们是位图还是矢量。位图(Bitmaps)或光栅图形将图像存储为单个点(称为像素)的网格,每个点都有指定的颜色。相反,矢量图(vector)存储图像中各个图形元素的几何排列。首字母缩写全称类型应用pdfPortable Document Format矢量图普遍使用epsEncapsulated PostScript矢量图普遍用途,已被pdf取代svgScalable Vector Graphics矢量图在线使用pngPortable Network Graphics位图针对线条绘制进行了优化jpegJoint Photographic Experts Group位图针对摄影图像进行了优化tiffTagged Image File Format位图印刷生产,色彩还原准确rawRaw Image File位图数码摄影,需要后处理gifGraphics Interchange Format位图动态图片矢量图形也称为“与分辨率无关(resolution-independent)”,因为它们可以放大到任意大小而不会丢失细节或清晰度。有关演示,请参见图👇
虽然矢量图可以无限倍数的放大。但是也是有两个缺点的。首先,由于矢量图在打开的时候相当于使用图片查看工具重新绘制图形。因此如果在两个不同的软件或者两个不同的电脑上打开同一个图形的话,其图形的外拐可能有所不同。例如,如果一个软件没有矢量图想要呈现的字体。那么就会替换成其他的字体。这个问题是最经常发生的。相比之下,位图图像将始终看起来相同。其次,对于非常大和/或复杂的图形,矢量图形可能会增长文件大小,并且渲染速度很慢。例如,数百万个数据点的散点图将包含每个单独点的x和y坐标,并且即使在点重叠和/或被其他图形元素隐藏的情况下,在渲染图像时也需要绘制每个点。结果,该文件的大小可能会很大。位图图形的无损压缩大多数位图文件格式采用某种形式的数据压缩,以使文件变小。压缩有两种基本类型:无损和有损。无损压缩可确保压缩后的图像与原始图像像素相同,而有损压缩则对一些图像进行降级,以换取较小的文件尺寸。为了了解何时使用无损压缩或有损压缩是适当的,对这些不同的压缩算法如何工作有一个基本的了解是有帮助的。首先考虑无损压缩。想象一下具有黑色背景的图像,其中图像的大区域为纯黑色,因此许多黑色像素彼此相邻出现。对于每个黑色像素在RGB当中,我们可以使用用三个零连续表示:0,0,0在RGB颜色当中,只需要指定R(红色), G(绿色)以及B(蓝色)的数值,就可以组合成不同的颜色
因此,图像中黑色背景的区域对应于图像文件中的数千个零。现在假设图像中有1000个连续的黑色像素,那么就对应于3000个零。无需写出所有这些零,我们就可以简单地存储所需的零总数,例如通过写入30000。这样,我们仅用两个数字(计数(此处为3000)和值(此处为0))传达了完全相同的信息。多年来,沿这方面发展了许多巧妙的技巧,以至于现代的无损图像格式(例如png)可以以令人印象深刻的效率存储位图数据。但是,只有在图像具有大面积的均匀颜色时,无损压缩算法才能表现的好。摄影图像很少具有彼此相邻的相同颜色和亮度。取而代之的是,图片在许多不同的比例上具有渐变和其他某种规则的模式。因此,对这些图像进行无损压缩通常效果不佳,因此,有损压缩就成了替代方案。有损压缩的关键思想是如果图像的某些细节对于人眼识别而言十分的微妙,那么久可以丢弃这些细节进而不会明显降低图像质量。例如,有一个1000像素的渐变,每个像素的颜色值都略有不同。但是人眼可能识别不了这么准确。所以可以使用200种不同的颜色绘制渐变,并且每五个相邻像素以完全相同的颜色进行着色,这样渐变看起来其实也是一样的。最广泛使用的有损图像格式是jpeg,实际上许多数码相机默认都将图像输出为jpeg。Jpeg压缩对于摄影图像效果非常好,并且通常可以在不降低图像质量的情况下大幅减小文件大小。但是,当图像包含尖锐的边缘(如由线条图或文本创建的图像)时,jpeg压缩将失败。在这些情况下,jpeg压缩会导致非常明显的伪像。
即使jpeg伪像足够微妙,以至于肉眼无法立即看到它们,它们也可能会造成麻烦,例如在印刷生产中。因此,最好避免使用jpeg格式。特别是对于包含线条图或文本的图像,应避免使用它,对于数据可视化或屏幕截图来说,应避免这种情况。这些图像的适当格式是png或tiff。jpeg格式可以用于摄影图像。并且,如果图像同时包含摄影元素和线条图或文字,则仍应使用png或tiff。这些文件格式的最坏情况是图像文件变大,而jpeg的最坏情况是最终产品看起来很丑。在图像格式之间转换通常可以将任何图像格式转换为任何其他图像格式。例如,在Mac上,您可以使用“预览”打开图像,然后导出为多种不同格式。但是,在此过程中,重要的信息可能会丢失,并且信息永远都不会丢失。例如,将矢量图形保存为位图格式后,例如 pdf文件转换为jpeg格式,作为矢量图形的关键特征的分辨率独立性已丢失。相反,将jpeg图像保存为pdf文件并不能神奇地将图像转换为矢量图形。该图像将仍然是位图图像,仅存储在pdf文件中。同样,将jpeg文件转换为png文件不会删除jpeg压缩算法可能引入的任何伪像。因此,保存图片的很好的经验法则就是始终以保持最大分辨率,准确性和灵活性的格式存储原始图像。因此,对于数据可视化,要么将图形储存为pdf,然后在必要时将其转换为png或jpg,或者将其存储为高分辨率png。如果仅可作为位图使用的图像(例如数码照片),请以不使用有损压缩的格式进行存储,如果无法做到无损压缩,则将其压缩程度尽可能减少。同样,以尽可能高的分辨率存储图像,并在需要时缩小图像。