免费转换器

SVG 转 PNG 转换器

将矢量 SVG 文件转换为高质量的光栅 PNG 图像。在浏览器中轻松自定义输出比例和背景颜色。

拖放 SVG 到这里

最大支持 50MB

关于此工具

SVG(可缩放矢量图形)将图像描述为一组几何图元(路径、形状、文本、渐变),可以缩放到任何尺寸而不损失质量。 PNG 以固定分辨率存储单个矩形像素网格。将 SVG 转换为 PNG 是一个光栅化步骤:SVG 的绘图指令以选定的像素大小进行评估,并将生成的位图编码为 PNG。输出在您指定的尺寸下看起来清晰,但如果放大则会像素化。

该转换器使用浏览器的内置 SVG 引擎呈现 SVG。 SVG 被加载到 Image 元素中,以选定的输出尺寸绘制到 HTML5 画布上,并通过 canvas.toBlob 导出为 PNG。由于浏览器会进行光栅化,因此复杂的 SVG 功能(渐变、滤镜、蒙版、作为静态帧的动画)的渲染方式与在真实网页上的渲染方式相同。

SVG 到 PNG 转换中最重要的决定是目标大小。 SVG 与分辨率无关,因此选择与实际使用情况匹配的 PNG 大小可以避免过度配置(缩略图大小的图标的巨大文件)和配置不足(稍后放大时输出模糊)。常见目标:图标为 32×32 或 64×64,徽标为 256×256 或 512×512,英雄图形为 1024×1024,视网膜质量资源为 2048×2048。

为什么将 SVG 转换为 PNG

SVG 对于网络和现代设计工具来说非常棒,但对于许多其他环境来说却很糟糕。电子邮件客户端呈现 SVG 的方式不一致;有些人将其视为安全风险而阻止。较旧的办公软件、某些 CMS、第三方服务和几乎所有照片打印管道根本不接受 SVG。转换为 PNG 会生成一个普遍接受的栅格,在所选尺寸下看起来相同。

PNG 还可以可靠地嵌入到办公文档、幻灯片和 PDF 中,而无需依赖接收者的 SVG 渲染器。对于需要在多个平台上一致显示的徽标和图形,PNG 是更安全的选择,尽管它失去了 SVG 最初具有吸引力的分辨率独立性。

使用方法

选择您的目标尺寸,渲染。浏览器进行光栅化。

  1. 上传 SVG 文件: 将 SVG 拖到上传区域或单击进行浏览。支持最大 50 MB 的文件,但典型的 SVG 远低于 1 MB。独立的 SVG 效果最好;通过 xlink:href 引用外部图像到远程 URL 的 SVG 可能会呈现不完整。
  2. 选择输出尺寸: 默认值是 SVG 的本机 viewBox 尺寸,但您可以覆盖为任何像素大小。选择符合您实际使用情况的尺寸 - 避免为以 32×32 显示的图标生成 4K PNG。
  3. 渲染: 浏览器解析 SVG,按照请求的尺寸将其绘制到画布上,并将画布导出为 PNG。具有过滤器或大量路径数的复杂 SVG 可能需要一些时间;简单的图标立即呈现。
  4. 下载PNG: 保存文件。 SVG 中的透明度(绘制形状之外的任何内容)在 PNG 中保留为 Alpha 通道。

常见用例

技术细节

SVG(W3C 建议)是一种基于 XML 的矢量格式,包含路径、基本形状(矩形、圆形、椭圆形、直线、多边形、折线)、文本、渐变(线性渐变、径向渐变)、滤镜、蒙版和剪辑路径元素。浏览器解析 XML、构建 DOM、应用 CSS 并在页面渲染期间光栅化结果。

该转换器将 SVG 加载到 HTMLImageElement 中(这会触发浏览器的正常 SVG-as-image 渲染路径),然后通过 drawImage 将其绘制到画布上。使用canvas.toBlob('image/png') 将画布导出为PNG。输出中的确切像素与 SVG 在浏览器选项卡中以相同大小呈现的像素相匹配。

边缘情况:通过 Image 元素使用时,并不总是支持使用foreignObject 的 SVG。由于 CORS,引用外部资源(xlink:href 到不同域)的 SVG 可能无法加载。 SMIL 动画和 JavaScript 驱动的动画仅渲染为初始帧。

最佳实践

常见问题

我的 SVG 转换为 PNG 后质量会下降吗?
矢量到光栅的转换意味着图像变成基于像素的并且不能再无限缩放。选择高分辨率以确保 PNG 在您想要的显示尺寸下看起来清晰。
PNG 格式有什么用途?
PNG(便携式网络图形)主要用于具有透明度的图形、屏幕截图、徽标、图标。
有什么限制需要注意吗?
支持最大 50MB 的文件。非常大或复杂的文件可能需要更长的时间来处理。所有转换都发生在您的浏览器中,因此处理速度取决于您的设备。
我的图像在转换过程中是否保密?
是的。您的 SVG 文件完全在浏览器中使用 Canvas API 和 JavaScript 进行处理。没有任何内容上传到任何服务器 - 文件直接从您的设备传输到转换器,然后返回到您的设备。
文本是呈现为文本还是路径?
文本在输出 PNG 中被光栅化为像素。输出不再可搜索或可选择。如果您的 SVG 使用浏览器中不可用的字体,文本可能会以后备字体呈现;在渲染之前将文本转换为 SVG 中的路径以保证外观。
我的 SVG 是否上传到服务器?
不会。SVG 解析和渲染发生在您的浏览器中; PNG 编码发生在您的浏览器中。该文件不会离开您的设备。
为什么我转换后的 PNG 是空白的?
常见原因:SVG引用外部图片,由于CORS导致加载失败; SVG 使用图像元素渲染路径不支持的功能(foreignObject、某些过滤器); SVG 具有零维 viewBox。直接在浏览器中打开 SVG 以在转换之前确认其渲染。
我可以在脚本中将 SVG 转换为 PNG 吗?
是的——对于批处理作业,使用 Sharp 或 puppeteer 的 Node.js 设置将 SVG 渲染为 PNG,与浏览器具有相似的保真度。该工具用于在浏览器中进行一次性转换,无需安装任何东西。