A vector drawing rasterised into a pixel image

SVG 转 PNG — 无需上传,把矢量图渲染成任意尺寸

把 SVG 文件渲染成清晰的 PNG,可选 1×、2×、3×、4× 或你输入的任意像素宽度,用的正是浏览器显示它们时的同一套渲染引擎。透明背景依旧透明,文件从不离开你的设备。

🔒 100% 浏览器内完成📐 1×–4× 或自定义宽度🧊 透明 PNG 免费且无限制

把 SVG 文件拖放到这里

或点击上传

最多 10 个文件,每个 20MB · 支持:SVG

🔒

文件留在你的设备上

SVG 的读取、渲染和编码全部在浏览器标签页内完成。Logo、图表和未发布的作品从不发送到任何服务器。

🖥️

渲染效果和浏览器一致

PNG 来自在屏幕上显示这个 SVG 的同一引擎——Blink、Gecko 或 WebKit——所以渐变、滤镜和文字都和你看到的一样。

📐

任意尺寸,绝不模糊

1× 到 4× 覆盖各种密度的屏幕,自定义宽度则适合印刷和电商平台。矢量在任何尺寸下都能干净地栅格化——不存在放大。

🛡️

先剔除脚本

SVG 可以携带 JavaScript。渲染前会移除脚本、事件处理器和 foreignObject 块,所以来路不明的文件也无法作恶。

为什么 SVG 在转换之前没有尺寸

很多人会问怎样把 SVG 转 PNG 才能"不损失质量",这个问题本身就带着一个值得先澄清的误解。SVG 没有可以损失的质量。它根本就没有像素。

矢量描述形状,像素存储画面

SVG 是对形状(曲线、填充、文字)的描述,放在一套没有固定像素尺寸的坐标系里。PNG 则是一张固定的像素网格。因此 SVG 转 PNG 永远意味着选一个尺寸,而无论你选哪个尺寸,结果都是清晰的。

用文本编辑器打开一个 SVG,你看到的是一条条指令:移动到这个点,画曲线到那个点,用这个颜色填充。没有任何地方写着这幅图有多少像素宽。浏览器在显示时才决定,而且每次都可以决定得不一样。

viewBox、width 和 height 到底是什么意思

根元素上的三个属性控制尺寸。viewBox 定义坐标系——"这幅图横向从 0 到 240,纵向从 0 到 160"。widthheight 如果存在,则建议一个默认显示尺寸。很多 SVG 只有 viewBox,有些只有 width 和 height,还有少数两者都没有。

这个转换器会读取存在的属性,像浏览器那样推算出固有尺寸,并把它作为 1× 基准。如果什么都没声明,就回退到 1,024 像素,保证你仍能得到一张可用的图片。

为什么"不损失质量"是个错误的问题

因为同一份指令可以把 SVG 渲染成任意尺寸,一张 4,000 像素的 PNG 和一张 400 像素的 PNG 一样清晰——渲染器只是画出了更多细节。唯一会损失质量的做法,是先渲染得很小,然后再把 PNG 放大。解决办法就是在这里、在转换时就选定最终尺寸,之后绝不放大 PNG。

An SVG has a viewBox, not a pixel size; the PNG size is chosen at conversionLeft: a vector drawing on a blueprint grid labelled viewBox 0 0 240 160. Right: the same drawing rendered as three PNGs of different pixel sizes, all equally sharp.SVG — a description<svg viewBox="0 0 240 160">no pixels yet — coordinates and curvesrasterise1× · 240 × 1602× · 480 × 320width 1200 · 1200 × 800each is sharp — the size is a choice, not a loss
SVG 携带的是 viewBox(一套坐标系),而不是像素数。同一个文件渲染成 240、480 或 1,200 像素宽,清晰度完全一样。尺寸是你在 SVG 转 PNG 时做出的选择,而不是会丢失的东西。

这个 SVG 转 PNG 转换器做了什么

这个工具在浏览器中读取你的 SVG 文件,移除所有可执行内容,用浏览器自带的引擎按你选择的尺寸逐个渲染,然后交回保留透明度的无损 PNG——可以单独下载,也可以打包成 ZIP。

和你的浏览器同一个渲染器

服务端转换器使用独立的库——librsvg、Inkscape、ImageMagick——每一个都有短板:不支持的滤镜、被替换的字体、画得略有差异的渐变。你拿回来的 PNG 可能和你看到的 SVG 对不上。

而在这里,渲染由 Blink、Gecko 或 WebKit 完成——取决于你用的是哪个浏览器——直接把 SVG 画到画布上。只要 SVG 在你的浏览器里显示正常,PNG 就会一模一样,因为它们本来就是同一幅画。

剔除脚本,不做上传

SVG 是 XML,可以包含 <script> 元素、onload 处理器和内嵌 HTML。来源不明的文件不该随手就打开。渲染前,转换器会移除脚本、事件属性和 foreignObject 块,然后把结果放进一个本就无法执行代码的图片元素里渲染。两层防护,全在本地。

整个过程没有任何上传。批量转换时,浏览器开发者工具的 Network 面板始终是空的。

How the SVG becomes a PNG inside the browser, in five steps, with nothing uploaded1read .svgtext, on your device2strip scripts<script>, on* handlers3set sizewidth / height / viewBox4browser renderssame engine as the page5canvas → PNGlossless, alpha keptevery step runs in your tab — the Network panel stays empty
五个步骤,全部在你的标签页里完成:读取文件、剔除所有可执行内容、设定像素尺寸、交给浏览器渲染、把画布编码为 PNG。

如何三步把 SVG 转 PNG

1

拖入你的 SVG 文件

把一个或多个 .svg 文件拖到虚线区域,或点击浏览选择。桌面端一次最多 10 个。每一行都会显示矢量的实时预览——浏览器原生支持 SVG,所以看到的就是将要渲染的。

2

选择尺寸和背景

在转换设置中选择"倍率"(SVG 自身尺寸的 1×、2×、3× 或 4×)或"宽度"(预设值或任意像素宽度,高度按宽高比自动计算)。然后选择背景:默认透明,也可以压平到白色、黑色或任意颜色。

3

下载 PNG 或 ZIP

点击转换。每个文件都会显示输出尺寸和 PNG 大小。可以逐个下载,也可以点击"下载全部",得到一个保留原文件名、扩展名为 .png 的 ZIP。

Step 1: drop SVG files.svg.svg.svgup to 10 at once · never uploaded
1

拖入最多 10 个 SVG 文件。它们在本地读取,从不上传。

Step 2: choose a scale or a pixel width and a backgroundOutput sizeScaleWidthscreenretinaphoneprintBackground→ 480 × 320 pxConvert 3 SVG
2

选一个倍率或输入宽度,再选择透明或纯色背景。

Step 3: download PNGs individually or as a ZIPlogo-01.pnglogo-02.pnglogo-03.pngZIPDownload All as ZIP (3)
3

逐个下载每张 PNG,或打包成一个 ZIP 全部下载。

选对输出尺寸

既然尺寸是一个选择,那就有必要知道每个选项是干什么用的。两种模式几乎覆盖所有场景。

1×、2×、3× — 匹配屏幕密度

普通显示器每个 CSS 点显示一个像素。Retina 或 HiDPI 显示屏显示两个;大多数现代手机显示三个。所以一个在屏幕上占 32 点的图标,分别需要 32、64 和 96 像素的 PNG。这就是 1×、2×、3× 的全部含义。

网页和 App 开发通常会把同一个 SVG 按三种倍率各导出一份。拖入文件一次,按 1× 转换,改一下设置,再转一次——或者干脆按 3× 导出,让平台自己缩小。

常见目标的尺寸参考

Favicon:16、32 和 48 像素,最好先做一张 512 像素的 PNG,再用 PNG 转 ICO 工具生成。App 图标:应用商店要 1024 像素,之后用图标集生成器。社交头像:400 到 800 像素。Open Graph 图片:1200 × 630。电商平台商品图:长边通常 2000 像素。

自定义宽度:印刷与电商平台

印刷场景请按 300 DPI 从物理尺寸倒推:A4 页面宽 2,480 像素,A3 是 3,508,6 英寸贴纸是 1,800。切换到宽度模式,输入数字,高度会按 SVG 的宽高比自动计算。转换器把输出的长边上限设为 16,384 像素——这是浏览器对画布的限制——如果你的请求被缩减,它会告诉你。

Why 2× and 3× exist: the same icon needs more pixels on denser screensThree squares each drawn with the same physical size but 4, 8 and 12 pixels across, labelled 1×, 2× and 3×.standard monitor32 × 32 px for a 32-pt iconRetina / HiDPI64 × 64 px for a 32-pt iconmodern phones96 × 96 px for a 32-pt icon
一个 32 点的图标在普通显示器上需要 32 像素,在 Retina 显示屏上需要 64 像素,在大多数手机上需要 96 像素。这就是 1×、2×、3× 的全部含义。

透明度、背景与边缘

大多数 SVG——Logo、图标、插画——都没有背景:形状悬浮在空无一物之上。PNG 能保存这一点,这也是这项工作选 PNG 而非 JPG 的两大理由之一。

保持背景透明

这里默认就是透明。SVG 没有绘制的每个像素都保持透明,包括曲线和斜边上那些被部分覆盖的像素。正是这些柔和的边缘像素,让 PNG 放在深色幻灯片、彩色按钮或照片上时不会出现明显轮廓。

结果会显示在棋盘格背景上,方便你在下载前确认透明效果。

什么时候该压平成纯色

有些目标场景不支持 alpha 通道——较旧的邮件客户端、某些印刷流程、少数会在后台悄悄转成 JPG 的平台上传器。这种情况就在背景设置里选白色、黑色或自定义颜色。形状会被合成到那个颜色上,PNG 完全不透明。

请选择与图片最终所处位置一致的颜色。压平到白色后再把 PNG 放到深色背景上,边缘像素——此时是淡橙、淡蓝,或者形状本身的浅色版本——就会呈现为一圈淡淡的光晕。这圈光晕是转换后 Logo 最常见的投诉,而它是背景选择的问题,不是渲染的错。

A transparent PNG keeps soft anti-aliased edges; flattening bakes in a backgroundLeft: a shape on a checkerboard with a magnified edge showing partially transparent pixels. Right: the same shape flattened onto white, where those edge pixels have become light grey.Transparent (default)edge pixels are partly see-through — sits on any colourFlattened to whiteedge pixels are now light orange — a halo on dark backgrounds
PNG 会在形状边缘保存半透明像素,正因如此它才能干净地贴在任何颜色上。压平到白色后,这些边缘像素会变浅——放在白底上没问题,放在深色上就是一圈明显的光晕。

可能出的问题(以及怎么解决)

在浏览器里渲染意味着 PNG 和屏幕一致,但同时也继承了浏览器对"图片允许加载什么"的规则。

字体缺失

SVG 中的文字会用它指定的字体渲染。如果这个字体既没安装在你的电脑上,也没嵌入文件里,浏览器就会换一个替代字体,PNG 里显示的就是替代字体。通过 URL 引用的网页字体也不会加载:作为图片渲染的 SVG 不允许获取外部资源。

可靠的解决办法是在导出 SVG 之前,在设计工具里把文字转为轮廓。字母变成路径后,在任何地方都能渲染得一模一样。

链接图片缺失

同样的规则也适用于 <image href="https://…">。从 URL 拉取的位图会渲染成空白。改成内嵌即可——大多数编辑器都有"嵌入图片"的导出选项,它会把链接变成 SVG 内部的 data URI。内嵌图片可以正常渲染。

输出空白或极小

既没有 viewBox 也没有 width 和 height 的 SVG,在这里会按回退尺寸渲染;如果图形离原点很远,就可能落在可见区域之外。加一个能框住整幅作品的 viewBox 就好。输出极小几乎总是因为 SVG 声明了很小的 width 和 height——切换到宽度模式,输入你真正想要的尺寸。

症状、原因、解决办法

症状可能原因解决办法
PNG 里的字体不对字体未安装 / 网页字体被拦截导出前把文字转为轮廓
SVG 里的照片是空白通过 URL 链接而非内嵌重新导出并嵌入图片
PNG 非常小SVG 声明了很小的 width/height用宽度模式输入目标尺寸
图形被裁掉viewBox 没有框住整幅图在编辑器里修正 viewBox
深色背景上有光晕压平到了白色保持透明,或压平到真实的背景色
滤镜或模糊效果不一样服务端转换器用了不同的引擎在这里转换——由浏览器渲染

人们用 SVG 转出的 PNG 做什么

既然 SVG 可以完美缩放,为什么还要把 SVG 转 PNG?因为大量软件至今仍然吃不下矢量。

图标集与 Favicon

应用商店、favicon 格式和许多图标体系都要求固定尺寸的 PNG。按你需要的最大尺寸转换一次,其余的用图标生成器PNG 转 ICO 裁出来。

拒绝 SVG 的平台

社交网络、电商平台、社区论坛和大多数 CMS 媒体库都拒绝上传 SVG——部分是出于安全考虑,因为 SVG 可以携带脚本。带透明背景的 2× PNG 是通用的替代品。

邮件签名与新闻邮件

邮件客户端会剥离 SVG 或显示一张损坏的图片。邮件里的 Logo 用的都是 PNG,最好按 2× 导出,再按一半尺寸显示,这样在 Retina 屏幕上依然清晰。

印刷与大幅面输出

印刷厂接受 PDF 和高分辨率位图。用宽度模式把 Logo 渲染到 3,000 或 4,000 像素,海报尺寸也能印得干净利落——矢量在目标尺寸上直接栅格化,不存在放大带来的模糊。

Four uses for SVG rendered as PNG: app icons, social and marketplaces, email, printApp icons and favicons163264128Social posts and marketplacesSVG uploads rejected → PNG acceptedEmail signatures and newslettersmail clients strip SVG; PNG at 2× stays crispPrint and large formatcustom widthe.g. 4000 px for A3no upscaling blur
明明有 SVG 却仍需要 PNG 的场景:图标集、拒绝 SVG 上传的平台、电子邮件,以及印刷。

浏览器端 vs 服务端 SVG 转换器

网上几乎所有 SVG 转 PNG 转换器都会上传文件,然后在服务器上用 librsvg、Inkscape 或无头浏览器渲染。简单图形没问题,稍微复杂一点就会走样。

还原度

每个渲染库支持的 SVG 规范范围都略有不同。滤镜、遮罩、混合模式、文件内的 CSS 以及沿路径排列的文字是最常见的牺牲品。浏览器引擎是现存最完整的 SVG 渲染器,用你机器上的这一个来渲染,PNG 就不可能和预览不一致。

隐私与限制

未发布的 Logo、产品图纸、带内部数据的图表:把它们上传到转换器是一次谁都不想要的小泄露。服务端工具还会限制文件大小和每日用量,因为渲染要花他们的钱。在自己的设备上渲染,两个问题一起消失——没有什么可泄露,也没有什么可计量。

服务器胜在哪里:非常老旧的硬件渲染一批复杂 SVG 会比数据中心慢。但对十个 Logo 来说毫无区别。

Server-based converters render with a different engine; this tool uses your browser'sTop: upload to a server that renders with librsvg or Inkscape, which may draw fonts and filters differently. Bottom: the browser that displays the SVG also renders it, so the PNG matches what you see.Server-based converteryour deviceuploadlibrsvg / Inkscapedifferent rendererfonts substituted · filters approximatedlogo files kept for hours · size capsIn your browser (this tool)browser engineBlink / Gecko / WebKit.png fileslooks exactly as it does on screennothing uploaded · scripts stripped first
服务端转换器用的是另一套渲染器,字体和滤镜可能出来就不一样。这个工具用的正是你此刻查看 SVG 所用的浏览器。

拿到 PNG 之后可以做什么

输出是标准 PNG,所以这里的每个工具都能直接接手,无需再次上传。

用于网页,可以走一遍 压缩 PNG,或转成 WebP——两者都保留透明度并减小体积。用于邮件或照片,PNG 转 JPG 可以压平并缩小。事后需要精确尺寸,用调整图片尺寸。如果你手上是位图、却希望有一份矢量,PNG 转 SVG 可以反向走一遍。

SVG 转 PNG — 常见问题

免费,无需账号,没有每日配额。渲染在你的浏览器里进行,所以没有什么可计量的。桌面端每批最多可添加 10 个 SVG 文件,批次数量不限。

不会。文件的读取、净化、渲染和编码全部在浏览器标签页内完成。未发布的 Logo 和内部图表从不离开你的设备——转换期间,开发者工具的 Network 面板始终是空的。

在转换时就选好最终尺寸。SVG 没有可损失的像素;它在任何尺寸下都能清晰渲染。只有先渲染得很小、之后再放大 PNG 才会损失质量。屏幕用 2× 或 3×,印刷则用宽度模式并输入你需要的精确像素数。

会,默认保留。SVG 没有绘制的每个像素都保持透明,包括让 PNG 能干净地贴在任何颜色上的柔和边缘像素。只有当目标场景不支持透明时,才需要在设置里选白色、黑色或自定义颜色。

它们是 SVG 自身声明尺寸的倍数,对应不同屏幕密度:1× 用于普通显示器,2× 用于 Retina 和 HiDPI 显示屏,3× 用于大多数手机。一个 32 点的图标会变成 32、64 或 96 像素的 PNG。4× 则用于印刷或留出安全余量。

这个字体没有安装在你的电脑上,浏览器换了一个替代字体;通过 URL 链接的网页字体也无法在图片内部加载。导出 SVG 前先在设计工具里把文字转为轮廓,之后在任何地方都会渲染得一模一样。

安全。SVG 可以包含脚本,所以转换器会在渲染前剔除 script 元素、事件处理器和 foreignObject 块,并且在一个无论如何都无法执行代码的图片元素里渲染。文件也从不上传,因此不会到达任何其他人手里。

可以。一次拖入最多 10 个文件,设置一次尺寸和背景,点击转换。每个文件依次渲染,"下载全部"会把结果打包成一个保留原文件名的 ZIP。

T

TinyImagePro 工程团队

我们打造从不上传你数据的浏览器端文件工具。这个 SVG 转 PNG 转换器会净化 SVG 文本,设定明确的像素尺寸,让浏览器自带的引擎把它渲染到画布上,再用内置的无损编码器写出 PNG——全部在你的机器上完成。

关于 TinyImagePro
SVG 转 PNG 转换器 — 任意尺寸、透明背景、无需上传 | TinyImagePro