2、图片资源基础:位图与矢量图、色彩深度与通道、分辨率与DPI、常见图片格式对比

做GUI设计,图片资源是绕不开的坎。我见过太多开发同学,一张图拖进去就完事,结果包体积暴涨、界面模糊、加载卡顿。说白了,图片压缩不是后期调个参数那么简单,你得先搞懂图片的底层逻辑。

这一节,我把图片资源的基础知识拆成四个块:位图与矢量图的本质区别、色彩深度和通道到底在描述什么、分辨率和DPI的真实含义、以及常见格式的选型对比。嗯,都是干货,咱们一个一个来。

2.1 位图与矢量图:两种完全不同的世界观

先问个问题:为什么有些图片放大就糊,有些怎么放大都清晰?

答案就在它们的数学描述方式上。

位图(Bitmap / Raster),说白了就是用一个个像素点来描述图像。每个像素记录颜色值,所有像素拼在一起就成了一幅图。你想想看,一张1920×1080的图片,就是207万个像素点。放大到200%,每个像素被拉大成4个像素,边缘自然就锯齿了。

我的经验: 做移动端图标时,我习惯把位图资源按1x、2x、3x分别导出。但后来发现,只要图标形状不复杂,直接用矢量图能省掉至少60%的维护成本。

矢量图(Vector),则是用数学公式来描述图形——点、线、曲线、填充色。放大多少倍,公式重新计算一遍,边缘永远光滑。SVG、PDF、AI、EPS都是矢量格式。

但矢量图不是万能的。照片、渐变复杂的纹理、真实世界的图像,用矢量描述会变成天文数字的计算量。这时候位图才是正解。

对比维度 位图 矢量图
基本单元 像素 数学路径
缩放表现 放大模糊、锯齿 无限放大不失真
文件大小 随分辨率增大而增大 随图形复杂度增大
适用场景 照片、复杂纹理、截图 图标、Logo、插画、字体
常见格式 PNG、JPEG、WebP、GIF SVG、PDF、AI、EPS
避坑: 我曾经把一个复杂插画存成SVG,结果文件比PNG还大。矢量图不是越小越好——节点数太多,公式描述的开销反而超过像素存储。记住:简单图形用矢量,复杂图像用位图。

2.2 色彩深度与通道:颜色是怎么被数字描述的?

色彩深度(Color Depth / Bit Depth),指的是每个像素用多少位(bit)来表示颜色。位数越多,能表达的颜色种类就越多。

  • 1位: 只有黑白两色。早期单色屏幕用的就是它。
  • 8位: 256种颜色。GIF格式就是这个级别。
  • 16位: 65536种颜色。早期手机屏幕常见。
  • 24位: 约1677万色。也就是我们常说的"真彩色",每个通道8位(R、G、B各256级)。
  • 32位: 24位颜色 + 8位Alpha通道(透明度)。PNG和WebP常用。

通道(Channel)这个概念,其实就是把颜色拆成独立的分量。RGB三个通道分别控制红、绿、蓝的亮度。Alpha通道单独控制透明度。

压缩视角下的关键点:

  • 色彩深度越高,每个像素占用的位数越多,文件越大。
  • 如果图片不需要透明,就别用带Alpha通道的格式。我见过有人把纯色图标存成32位PNG,白白浪费了Alpha通道的8位。
  • 有些场景可以降位深——比如灰度图用8位就够了,没必要用24位。

为什么会这样?因为人眼对颜色细节的敏感度其实有限。你想想看,一张纯色背景的截图,用24位和16位存,肉眼根本看不出区别,但文件大小能差一半。

2.3 分辨率与DPI:这两个概念别搞混了

很多人把分辨率和DPI混为一谈,其实它们说的是两件事。

分辨率(Resolution),指的是图片的像素尺寸,比如1920×1080。它决定了图片有多少个像素点。

DPI(Dots Per Inch,每英寸点数),指的是输出设备上每英寸能显示多少个点。它决定了图片在物理世界中的大小。

举个例子:一张100×100像素的图片,在72 DPI的屏幕上显示,物理尺寸大约是1.39英寸。在300 DPI的打印机上输出,物理尺寸只有0.33英寸。像素没变,但物理大小变了。

概念 含义 单位 影响什么
分辨率 像素总数 像素(px) 图片的细节丰富度
DPI 每英寸点数 dpi / ppi 物理输出尺寸
PPI 每英寸像素数 ppi 屏幕显示密度
我的习惯: 做Web设计时,我基本不看DPI,只看像素分辨率。因为屏幕显示最终由CSS像素和设备像素比决定。但做印刷品或iOS/Android切图时,DPI和PPI就很重要了——@2x、@3x的命名规则本质上就是在处理PPI。

嗯,这里要注意:压缩图片时,不要盲目降低分辨率。如果你需要保留细节(比如产品图),降分辨率会直接损失画质。但如果你只是做缩略图或列表图,分辨率可以降到合理范围——我一般控制在宽度不超过屏幕物理像素的2倍。

2.4 常见图片格式对比:选对格式,压缩就成功了一半

格式选错了,后面再怎么压缩都是事倍功半。我整理了一张对比表,你直接收藏就行。

格式 类型 压缩方式 透明度 色彩深度 适用场景 压缩率参考
PNG-8 位图 无损 支持 8位(256色) 图标、Logo、简单图形 中等
PNG-24/32 位图 无损 支持 24/32位 需要透明背景的复杂图 较低
JPEG 位图 有损 不支持 24位 照片、渐变丰富的图 高
GIF 位图 无损(但限256色) 支持(1位) 8位 简单动画、低色数图 中等
WebP 位图 有损/无损 支持 24/32位 Web场景通用替代 比JPEG高25-34%
SVG 矢量 文本压缩(gzip) 支持 无限(理论) 图标、插画、Logo 极高(图形简单时)
AVIF 位图 有损/无损 支持 24/32位 新一代Web图片 比WebP再高20%
我曾经踩过的坑: 有次做H5活动页,设计师给了全套PNG-32的素材,一张背景图就2.3MB。我换成WebP无损模式,大小降到800KB,画质完全一样。后来我把所有非透明背景的图都转成JPEG(质量85%),总包体积从12MB降到3.5MB。记住:不要无脑用PNG,它只在需要透明或无损保留细节时才有优势。

选格式的核心原则其实就三条:

  1. 需要透明背景? → PNG-8(256色够用)或 PNG-32 / WebP(全彩)
  2. 不需要透明,且是照片/渐变? → JPEG 或 WebP(有损模式)
  3. 图形简单(图标、Logo)? → SVG 优先,其次 PNG-8

下面这张图,我把整个知识体系串起来了,方便你对照理解。

图片资源基础 · 知识体系 图片资源基础 位图 vs 矢量图 色彩深度与通道 分辨率与DPI 常见格式对比 像素点阵描述 数学路径描述 缩放:模糊 vs 无损 1/8/16/24/32位 RGB / Alpha 通道 位深越高 → 文件越大 分辨率:像素尺寸 DPI:物理输出密度 PPI:屏幕显示密度 PNG / JPEG / WebP GIF / SVG / AVIF 有损 vs 无损 vs 矢量 核心原则:按场景选类型 → 按需求定深度 → 按输出控DPI → 按平台选格式