先看结论
- SVG 是一种用 XML 表示可缩放二维图形、文本和嵌入式位图的图像设计格式,部分处理环境还允许脚本和外部引用。
- 可信的 .svg 文件可直接用浏览器打开,也可作为 HTML 图片显示;后者应采用安全图像处理模式。在 Windows 或 Mac 上,可把浏览器选为打开程序;在手机上,应使用明确支持 SVG 的浏览器或查看器。若应用不接受 .svgz,先解压为 SVG。脚本、外部引用、动画与交互能否运行取决于处理环境。
- 来源不明的 SVG 应按可能含有主动内容的文件处理。它可以包含脚本、onclick 等事件属性、任意 URI 和外部媒体,恶意 XML 实体展开还可能耗尽内存。优先使用会禁用脚本、外部引用和交互的受限处理环境。文件能够正常显示,并不代表其中内容或引用资源可信。
SVG 与 SVGZ 文件:识别、谨慎打开和转换
可缩放矢量图形(SVG)使用 XML 描述二维图形,能表示矢量形状、文本、嵌入式位图,并支持分组、样式、变换与合成。SVG 可以作为独立文档查看,也可混入 HTML 或嵌入其他 XML 语言。SVGZ 是用 gzip 包装压缩的 SVG 内容。
需要位图时可以把 SVG 转为 PNG 或 JPEG,但若需要缩放或编辑,应保留原始 SVG。栅格化不能保留 XML 矢量对象、与分辨率无关的编辑能力、DOM 交互、脚本或 SVG 声明式动画。SVGZ 只是 gzip 压缩的 SVG,因此解压为 SVG 可以在图形内容上保持无损。
怎么打开
可信的 .svg 文件可直接用浏览器打开,也可作为 HTML 图片显示;后者应采用安全图像处理模式。在 Windows 或 Mac 上,可把浏览器选为打开程序;在手机上,应使用明确支持 SVG 的浏览器或查看器。若应用不接受 .svgz,先解压为 SVG。脚本、外部引用、动画与交互能否运行取决于处理环境。
可信的 .svg 文件可直接用浏览器打开,也可作为 HTML 图片显示;后者应采用安全图像处理模式。在 Windows 或 Mac 上,可把浏览器选为打开程序;在手机上,应使用明确支持 SVG 的浏览器或查看器。若应用不接受 .svgz,先解压为 SVG。脚本、外部引用、动画与交互能否运行取决于处理环境。
需要位图时可以把 SVG 转为 PNG 或 JPEG,但若需要缩放或编辑,应保留原始 SVG。栅格化不能保留 XML 矢量对象、与分辨率无关的编辑能力、DOM 交互、脚本或 SVG 声明式动画。SVGZ 只是 gzip 压缩的 SVG,因此解压为 SVG 可以在图形内容上保持无损。
文件安全
来源不明的 SVG 应按可能含有主动内容的文件处理。它可以包含脚本、onclick 等事件属性、任意 URI 和外部媒体,恶意 XML 实体展开还可能耗尽内存。优先使用会禁用脚本、外部引用和交互的受限处理环境。文件能够正常显示,并不代表其中内容或引用资源可信。
来路不明、文件名带两个后缀,或者内容和扩展名对不上——先停下来核对。
转换格式
需要位图时可以把 SVG 转为 PNG 或 JPEG,但若需要缩放或编辑,应保留原始 SVG。栅格化不能保留 XML 矢量对象、与分辨率无关的编辑能力、DOM 交互、脚本或 SVG 声明式动画。SVGZ 只是 gzip 压缩的 SVG,因此解压为 SVG 可以在图形内容上保持无损。
先复制一份原文件再转换,转完对照看看画质、元数据和排版有没有变。
常见问题
SVG 文件是什么格式,主要用来做什么?
SVG 是描述二维图形的 XML 文档,可表示可缩放矢量形状、文本、嵌入式位图、样式、变换和合成。它既能作为独立文档,也能用于 HTML 或其他 XML 语言中。
如何用浏览器打开 SVG 文件?
可用浏览器打开可信的 .svg 文件。独立或动态交互环境可能允许脚本、外部引用、动画和交互;作为 HTML 图片使用时应进入安全图像处理模式。对于未知文件,应优先选择受限环境。
Windows 电脑怎么打开 SVG 文件?
为 .svg 文件选择网页浏览器作为打开程序。如果浏览器不接受 .svgz,请先解开 gzip 压缩层,得到其中的 SVG 文件。
Mac 电脑怎么打开 SVG 文件?
使用明确支持 SVG 的浏览器打开 .svg。对于来源不明的文件,应选择禁用脚本、外部引用和交互的环境;如有必要,先把 .svgz 解压为 SVG。
手机怎么打开 SVG 文件?
使用明确说明支持 SVG 的移动浏览器或查看器。不同处理环境支持的功能可能不同,.svgz 文件也可能需要先解压才能查看。
SVG 文件打不开或显示不正确怎么办?
应用可能不支持 SVG,文件可能是经过 gzip 压缩的 SVGZ,或者当前环境禁用了脚本、外部引用、交互或部分动画。先核对扩展名;若为 .svgz,解压后再用支持 SVG 的查看器打开。
SVG 和 SVGZ 有什么区别,应该选哪个?
SVG 是 XML 图形文档;SVGZ 是用 gzip 包装压缩的同类 SVG 内容。解压 SVGZ 可以在图形内容上无损恢复 SVG。需要直接兼容时选 SVG,应用明确接受 gzip 包装时可选 SVGZ。
SVG 转 PNG 或 JPEG 会损失哪些内容?
栅格化只能保留渲染后的图像,不能保留原始 SVG 的 XML 矢量对象、与分辨率无关的编辑能力、DOM 交互、脚本和声明式动画。如果这些能力重要,请同时保留 SVG。
SVG 文件可以包含脚本吗,打开未知 SVG 安全吗?
SVG 可以包含脚本、事件属性、外部引用和任意 URI,XML 实体展开及引用的外部媒体也可能带来风险。不要默认未知 SVG 安全;应在禁用主动内容和外部内容的受限环境中打开或转换。
SVG 文件的 MIME 类型是什么,有固定魔数吗?
SVG 注册的媒体类型是 image/svg+xml。W3C 注册信息列出 .svg 和 gzip 压缩别名 .svgz,但没有提供格式专属魔数,因此这里不主张存在可靠的二进制签名。
相关格式
资料来源
Scalable Vector Graphics (SVG) 2 · World Wide Web Consortium (W3C)
Introduction — SVG 2 · World Wide Web Consortium (W3C)
Media Type Registration for image/svg+xml — SVG 2 · World Wide Web Consortium (W3C)
IANA Media Types Registry · Internet Assigned Numbers Authority (IANA)
Scripting and Interactivity — SVG 2 · World Wide Web Consortium (W3C)