在线SVG转PNG工具

将SVG矢量图形转换为高质量PNG图像。支持自定义尺寸、透明或自定义背景色以及高分辨率输出。所有处理都在您的浏览器中进行,文件不会上传到服务器。

SVG输入

将SVG文件拖放到此处或点击选择

PNG输出设置

×

SVG与PNG:您应使用哪一个?

SVG(可缩放矢量图形)是一种矢量格式,即用数学方式描述形状的 XML 标记。SVG 中的圆是「在 (x, y) 处绘制半径为 R、填充颜色为 F 的圆」,是指令,而非像素。浏览器根据你显示 SVG 的任意尺寸渲染指令,因此它在 1x、2x、3x 及以上都保持清晰。PNG(便携式网络图形)是栅格格式,即具有固定颜色值的固定像素网格。PNG 是当你将 SVG「冻结」在特定分辨率时所获得的。将 SVG 转换为 PNG 称为栅格化:选择目标像素网格,并在该固定大小下渲染矢量指令,之后结果就是带有所有相关尺寸约束的普通栅格图像。

SVG 由 1998 年成立的 W3C SVG 工作组开发;SVG 1.0 于 2001 年 9 月 4 日成为 W3C 推荐标准;SVG 1.1 于 2003 年 1 月 14 日跟进,在接下来的十年中是主导版本;SVG 1.1 第二版于 2011 年 8 月 16 日发布;SVG 2 于 2018 年 10 月 4 日达到 Candidate Recommendation,但已陷入停滞,截至 2026 年仍是 CR 而非完整推荐标准。PNG 于 1996 年 10 月 1 日成为 W3C 推荐标准,并于 1997 年 3 月成为 IETF RFC 2083;此格式自此稳定。

为什么要将SVG转换为PNG

转换在你的浏览器中如何工作

Canvas API 栅格化技术很直接但有微妙之处。标准管道:通过 Blob URL(URL.createObjectURL(svgBlob))或直接作为 data URI(data:image/svg+xml;base64,...)将 SVG 加载为 Image 元素;等待 onload 事件;在所需输出尺寸创建画布;调用 ctx.drawImage(image, 0, 0, width, height) 以所选大小栅格化 SVG;通过 canvas.toBlob('image/png') 导出。浏览器 SVG 渲染器在此栅格化过程中正确处理渐变、蒙版、滤镜、文本和大部分 SVG 功能集。三个注意事项很重要。外部资源在 CORS 下失败:引用外部图像(<image href="https://other-domain.com/photo.jpg">)或外部字体的 SVG 如果跨域服务器不返回适当的 CORS 头,则可能无法加载,画布变为「tainted」,toBlob 抛出 SecurityError。将图像嵌入为 data URI,字体嵌入为 @font-facesrc 为 data URI 以避免此问题。包含 <script> 标签的 SVG 不会执行,当作为 Image 加载时,浏览器的图像解码器出于安全考虑剥离脚本上下文。SMIL 动画被压缩为 time=0 的单帧;如果 SVG 依赖动画来呈现其视觉状态,栅格化的 PNG 不会捕获它。跨浏览器像素差异:Chrome、Firefox 和 Safari 由于各自矢量渲染器的差异,对同一 SVG 产生略有不同的栅格化输出;对于生产图标,渲染一次并发布 PNG,而不是依赖运行时的每浏览器转换。

选择正确的输出分辨率

SVG 没有固有分辨率,选择权在你。常见目标:iOS App Store 列表图标1024x1024;Android Play Store 列表图标512x512(启动器内自适应图标为 432x432,设计在 264x264 安全区内);PWA manifest 图标192x192 和 512x512;favicon 历史上为 16x16、32x32、48x48(现代 favicon.ico 捆绑全部三种尺寸;现代最佳实践为支持的浏览器提供 icon.svg,加上 192x192 apple-touch-icon.png 后备);Open Graph 社交卡片1200x630;Twitter 卡片1200x675;Instagram 正方形1080x1080;Discord 表情128x128;Slack 表情128x128;300 DPI 打印需要 3 倍英寸维度的像素(4 英寸徽标打印需要 1200x1200)。对于 Retina 质量的屏幕渲染,瞄准显示尺寸的 2 倍,100x100 显示的图标应该导出为 200x200 以在 Retina 屏幕上保持清晰。

如何使用此转换器

  1. 提供 SVG。.svg 文件拖放到上传区,或将原始 SVG 标记粘贴到文本区。两种方式工作方式相同。
  2. 设置输出维度。以像素为单位的宽度和高度;锁定纵横比开关在你改变一个维度时保持比例。最大 8192x8192(大多数现代浏览器上的画布尺寸限制;某些硬件限制在 4096 或 8192)。
  3. 选择背景。透明(默认,保留 SVG 的 alpha 通道)、纯白色、纯黑色或任何自定义颜色。当目标不支持透明度时有用(某些旧打印环境)。
  4. 转换并下载。转换按钮按所选大小栅格化 SVG 并显示预览;下载将 PNG 保存到你的设备。

诚实的范围:此工具做什么和不做什么

此工具将单个 SVG 按所选大小栅格化为单个 PNG。它不生成应用商店所需的完整多尺寸图标集(仅 iOS 就需要 1024x1024 + 180x180 + 167x167 + 152x152 + 120x120 + 87x87 + 80x80 + 60x60 + 58x58 + 40x40 + 29x29 + 20x20),为此,请使用 RealFaviconGenerator 或 App Icon Generator 等专用工具。它不优化生成的 PNG(使用 SVG Optimizer 工具先清理源 SVG;对于 PNG 优化使用单独的压缩器)。它不捆绑多尺寸 favicon.ico 输出。它不动画化,导出的 PNG 是单帧,即使 SVG 有 SMIL 动画。对于从一个 SVG 批量生成许多尺寸,使用 sharp-cli(Node.js)或 resvg-cli(Rust)等 CLI;它们所做的每尺寸转换与此工具相同,只是可脚本化。

隐私:为什么仅浏览器在这里重要

SVG 文件通常包含专有品牌资产、进行中的徽标、内部产品图标或受 NDA 约束的设计师提供的源文件。服务器端转换服务(CloudConvert、Online-Convert、Convertio)将你的 SVG 上传到他们的基础设施,在那里它存在于日志中。此工具通过 Canvas API 在你的浏览器中运行整个栅格化管道,在单击转换时在 DevTools 的 Network 标签中验证,或在页面加载后将其离线(飞行模式),转换器仍然工作。对于未发布的品牌作品、内部产品图标、受 NDA 约束的设计师文件或你不希望被复制到陌生人硬盘上的任何 SVG 都很安全。

常见问题

为什么将 SVG 转换为 PNG 而不是直接使用 SVG?

对于大多数现代浏览器,你不必这样做。SVG 在 Chrome、Firefox、Safari、Edge 和 Opera 中本机渲染,是大多数 Web 使用的正确格式。当目标不支持 SVG 时需要转换:Microsoft 在 2025 年 9-10 月退役了 Outlook web 和新的 Outlook for Windows 中的 inline SVG;iOS / Android 应用图标必须是 PNG;按需印刷服务需要 PNG;Discord 和 Slack 自定义表情上传 PNG;一些旧 CMS 仍拒绝 SVG 上传。对于这些场景,你栅格化一次并发布 PNG。

我应该以什么分辨率导出?

匹配目标。iOS 应用商店列表:1024x1024。Android Play Store:512x512(启动器内自适应图标:432x432)。PWA manifest:192 和 512。Open Graph 社交卡片:1200x630。Instagram 正方形:1080x1080。对于 Retina 显示,以显示 CSS 尺寸的 2 倍导出,100x100 图标应为 200x200 PNG 以保持清晰。对于打印,300 DPI 意味着每显示英寸 300 像素(4 英寸徽标打印 = 1200x1200 PNG)。此处最大值为 8192x8192,这是现代浏览器画布的限制。

为什么我的 SVG 在转换后缺少部分?

三个常见原因。CORS 阻止的外部资源:如果 SVG 引用另一个不返回适当 CORS 头的域上的图像或字体,画布变为「tainted」,导出会静默地丢弃它们。将图像嵌入为 data URI,字体嵌入为 @font-face 且 src 为 data URI。SVG 内的脚本不执行:<script> 标签被浏览器的图像解码器安全模型剥离,脚本生成的任何内容都不会出现。SMIL 动画在 time=0(起始帧)渲染;动画视觉状态不被捕获。对于依赖 JavaScript 或动画的 SVG,先在真实浏览器中渲染然后截图,或使用 Puppeteer 无头。

它保留透明度吗?

当选择「透明」作为背景时,是的,PNG 保留 SVG 的 alpha 通道,半透明像素完全保留。当目标不支持透明度或当你需要烘焙特定背景颜色时(某些旧打印环境),选择纯色(白色、黑色、自定义)。

我可以从一个 SVG 生成多个尺寸吗?

不能一键完成,此工具每次转换产生一个 PNG。对于应用商店图标集生成(iOS 和 Android 所需的十几个尺寸),使用 RealFaviconGenerator(web)、App Icon Generator(web)等专用工具,或 sharp-cli(Node.js)或 resvg-cli(Rust)等 CLI,它们执行的每尺寸转换与 Canvas 风格的栅格化相同,只是在许多尺寸上脚本化。

我的 SVG 文件会被上传吗?

不会。栅格化完全通过 Canvas API 在你的浏览器中运行。你的 SVG 和生成的 PNG 永远不会越过网络,在单击转换时在 DevTools 的 Network 标签中验证,或在页面加载后将其离线(飞行模式),转换器仍然工作。对于未发布的品牌作品、内部产品图标、受 NDA 约束的设计师源文件或你不希望被复制到陌生人硬盘上的任何 SVG 都很安全。

相关工具