SVG和PNG服务于根本不同的目的。SVG是矢量格式 — 它以数学描述形式存储形状、路径和文字, 可以在不损失质量的情况下缩放至任意大小。PNG是光栅格式 — 它在网格中存储像素, 放大时会损失质量。选错格式会让您付出文件大小、质量或两者兼失的代价。
什么是SVG?
SVG(可缩放矢量图形)是一种基于XML的矢量格式。它不存储像素,而是存储指令: "在X,Y处绘制半径为R的圆,用颜色#FF0000填充。"主要特性:
- 与分辨率无关:SVG徽标在16×16 px(网站图标)和1600×1600 px(印刷)下 看起来完全相同 — 它在每个尺寸下重新计算输出像素
- 简单图形的文件较小:有几个形状的徽标作为SVG可能只有2-10 KB。 同样的徽标以印刷分辨率的PNG可能是500 KB到2 MB
- 文字保持可编辑:SVG文字是真实文字 — 屏幕阅读器可以读取,搜索引擎 可以索引,无需重新设计就能更改字体
- 可用CSS样式:SVG元素响应CSS和JavaScript — 无需额外图片文件即可 为颜色、悬停状态和形状添加动画
- 不适合照片:SVG无法表示照片细节。将照片描摹为矢量要么失去所有细节, 要么产生巨大的文件
什么是PNG?
PNG(便携式网络图形)是无损光栅格式。它在保存时不损失质量地存储精确的彩色像素网格。 主要特性:
- 无损压缩:与JPEG不同,保存PNG不会降低质量 — 每次都能得到完全相同的像素
- 透明度支持:PNG支持完整的Alpha通道透明度 — 每个像素可以部分或完全透明
- 固定分辨率:200×200 px的PNG恰好有200×200个像素。将其放大到 2000×2000 px时,软件必须猜测(插值)新像素 — 结果是模糊的
- 适合照片和复杂图像:PNG捕获SVG无法表示的照片细节
- 照片文件大小比JPEG大:无损压缩对复杂的摄影内容效率较低 — 500 KB的JPEG照片作为PNG可能是3-5 MB
SVG vs PNG:直接比较
- 可扩展性:SVG可以完美缩放到任何大小。PNG放大超过其原始分辨率时质量会下降
- 文件大小(简单图形):SVG胜出 — 小图标作为SVG是1-5 KB, 在2×分辨率的PNG中通常是10-50 KB
- 文件大小(复杂/照片):PNG胜过SVG。照片作为SVG会非常巨大或质量很差
- 浏览器支持:两者在现代浏览器中都普遍支持。SVG从IE9起就受支持
- 电子邮件:PNG更安全 — 某些电子邮件客户端(尤其是Outlook)对SVG支持 有限或不支持
- 印刷:徽标和图形首选SVG — 无论印刷尺寸如何都能以全分辨率打印。 PNG需要高DPI(300 DPI以上)才能高质量打印输出
何时使用SVG
- 徽标和品牌标识:SVG是徽标的行业标准 — 在名片(小)和广告牌(大)上都需要清晰显示
- 图标和UI元素:图标集现在几乎都是SVG。单个SVG图标文件适用于所有尺寸, 而不需要单独的@1x、@2x、@3x PNG文件
- 扁平或简单设计的插图:颜色有限、几何形状的扁平设计可以很好地转换为SVG
- 动画图形:SVG支持CSS和SMIL动画 — 非常适合简单的动画徽标和加载动画
- 图表和图形:数据可视化受益于SVG能够完美缩放并在任何缩放级别保持 文字可读性的能力
何时使用PNG
- 截图:PNG是截图的默认格式 — 精确的像素再现,没有压缩失真
- 带透明度的照片:需要透明背景的照片?PNG支持透明度,JPEG不支持
- 带渐变的复杂插图:SVG难以良好表示的丰富渐变、阴影和复杂纹理
- SVG不受支持时:旧版电子邮件客户端、某些CMS工具和只接受光栅格式的 旧系统
- 社交媒体图片:社交平台接受PNG并自行转换 — SVG通常不被接受
SVG和PNG之间的转换
将SVG转换为PNG很简单 — 以目标尺寸渲染SVG并导出为PNG。大多数设计工具(Figma、 Illustrator、Inkscape)可以直接完成这个操作。
将PNG转换为SVG称为"矢量化",更复杂。简单的徽标和扁平图形可以通过自动描摹(Inkscape的 Trace Bitmap、Adobe Illustrator的Image Trace)获得不错的结果。复杂照片无法有意义地 转换为SVG — 结果是一个试图将每个像素描述为形状的巨大SVG。
文件大小优化
- 优化SVG:设计工具的原始SVG导出包含不必要的元数据、注释和冗余路径。 SVGO等工具可以在没有任何可见质量变化的情况下将SVG文件大小减少30-80%
- 优化PNG:使用图片压缩工具减小PNG文件 大小 — 无损PNG压缩可以在保持精确像素质量的同时将文件减少20-40%
- 网页考虑使用WebP:对于网页使用,WebP通常在质量相当的情况下文件大小 优于PNG。如果工作流程允许,使用 PNG转WebP工具
快速决策指南
- 徽标、图标、简单插图 → SVG
- 照片 → JPEG(网页用WebP)
- 带透明度的照片 → PNG
- 截图 → PNG
- 电子邮件图形 → PNG(SVG在电子邮件中不安全)
- 带渐变的复杂插图 → PNG
- 网页动画徽标 → SVG(或Lottie)