图片格式转换器完全在你的浏览器内把图片从一种格式重新编码为另一种。它接受 PNG、JPEG、WebP 和 GIF 文件,输出 PNG、JPEG 或 WebP,并为两种有损目标提供可调的质量滑块。由于一切基于 Canvas API 运行,不会上传任何内容,原图也不会离开标签页。
使用方法
- 把 PNG、JPEG、WebP 或 GIF 拖到上传区,或点击它打开文件选择器。预览以及显示尺寸、文件大小和 MIME 类型的元数据行会立即出现。
- 选择目标格式:PNG、JPEG 或 WebP。
- 如果选择 JPEG 或 WebP,设置质量滑块。范围是 10 到 100,初始为 90。PNG 是无损的,因此目标为 PNG 时滑块隐藏。
- 点击转换。图片被绘制到画布上并用
canvas.toBlob编码,结果面板会报告新的文件大小。 - 下载。文件保留原基础名并换上新的扩展名,所以
holiday.png转成 JPEG 后下载为holiday.jpg。
哪些转换真正可行
输入集和输出集并不对称,所以在开始前了解边界很有必要。
| 从 | 转 PNG | 转 JPEG | 转 WebP | 说明 |
|---|---|---|---|---|
| PNG | — | 可以 | 可以 | PNG 和 WebP 保留透明;JPEG 会把它压平成白色。 |
| JPEG | 可以 | — | 可以 | JPEG 没有 alpha 通道可保留。 |
| WebP | 可以 | 可以 | — | 仅限静态 WebP;canvas 不解码动画。 |
| GIF | 可以 | 可以 | 可以 | 只读取第一帧。 |
本表之外的格式——SVG、HEIC、AVIF、TIFF、BMP 和 RAW——会在转换前被拒绝。工具既不解码它们,也不会悄悄替换成其他格式。
实操示例
- 一张 2400×1600、重 1.6 MB 的 PNG 截图,以质量 90 转成 JPEG 后约为 250–320 KB。可见尺寸不变,变的只是编码。
- 一个 800×800、背景透明的 PNG 徽标转成 WebP 后透明仍在,通常比源文件小 50–75%。同一个徽标转成 JPEG 会得到纯白背景,因为工具在绘制前用
#FFFFFF填充了画布。 - 一个 12 帧的 GIF 动图转成 PNG 会得到第一帧的静态图,通常只有原尺寸的一小部分。其余帧被丢弃,而不是被提取。
Canvas 重新编码的工作原理
每次转换都遵循同样的四步。浏览器把源图解码进一个 Image 元素,工具按图片的 naturalWidth 和 naturalHeight 创建画布,用 drawImage 把图绘上画布,再由 toBlob(callback, mimeType, quality) 向浏览器编码器请求新的字节流。质量以小数传入,所以滑块上的 “90” 变成 0.9;数值会被限制在 0.1–1.0。
这解释了两个现象。第一,转换是重新编码而非改扩展名:像素被解码又编码,所以即便是高质量源文件,写成 JPEG 时也可能损失一点保真度。第二,编码器归浏览器所有,而不是页面。现代 Chrome、Edge、Firefox 和 Safari 都支持 PNG、JPEG 和 WebP 编码,但旧浏览器可能忽略所请求的 WebP 类型,转而输出 PNG 字节。
质量是请求,不是保证。浏览器把 0–1 的值映射到自己的量化器上,所以同样的 “90” 在不同浏览器里产生略有差异的字节数,而且没有任何一个浏览器承诺目标文件大小。把显示的输出大小当作事实依据,逐步调低滑块直到符合你的预算。
准确性与局限
- 透明在 PNG 和 WebP 中保留,被 JPEG 破坏。把徽标转成 JPEG,每个透明像素都变成白色。
- 不支持动图。Canvas 只读一帧,所以 APNG、动态 WebP 和 GIF 动画都无法保留。
- 分辨率从不改变。输出尺寸与输入完全一致。需要更小的像素请先缩放。
- 超大图片会触及各浏览器的画布上限。某些浏览器把画布单边限制在约 16,384 px,总面积上限还远低于此;源图过大时会加载失败或返回空白。
- 元数据会被丢弃。浏览器在解码时会应用 EXIF 方向,但 EXIF 块本身不会被复制到输出。
实用建议
- JPEG 和 WebP 从质量 80–90 开始。低于约 60 时,照片在边缘和文字处会出现可见的块状伪影。
- 纯色图形和徽标应交给 WebP 而不是 JPEG。WebP 能保持锐利边缘并支持 alpha,是更好的网页目标。
- 需要无损存档副本时选 PNG——但要有心理准备,照片类 PNG 会比相应的 JPEG 大好几倍。
- 只重新编码一次。每一次有损的 JPEG 或 WebP 往返都会叠加压缩伪影。
一句话概括目标格式:照片用质量 80–85 的 WebP,JPEG 作为兼容性后备;纯色徽标和图标交付用 WebP、无损编辑用 PNG;文字精细的截图保持 PNG,因为 JPEG 会糊掉细笔画;必须在旧桌面软件里打开的文件,用 JPEG 最稳妥。
相关工具
- 图片压缩 — 在浏览器中压缩和调整图片尺寸,进一步减小文件体积。
- 图片转 Base64 — 将任意图片转换为 Base64 data URI,方便嵌入代码。
- Favicon 生成器 — 从您的图片生成多种尺寸的 favicon PNG。
常见问题
能把透明的 PNG 转成 JPEG 吗?
可以,但透明不会被保留。JPEG 没有 alpha 通道,所以转换器会在绘制图片前用纯白(#FFFFFF)填充画布,每个透明像素都变成白色。如果需要保留抠图背景,请使用 PNG 或 WebP。
为什么我的 GIF 动图变成了静态图?
Canvas API 只解码 GIF 动图的第一帧。转换它会得到第一帧的静态图片,其余帧被丢弃。本工具不提供帧提取或动画导出。
转换器接受 SVG、HEIC 或 AVIF 文件吗?
不接受。输入仅限 PNG、JPEG、WebP 和 GIF。SVG、HEIC、AVIF、TIFF 和 RAW 文件会在转换开始前被判定为不支持并拒绝,因为工具完全依赖浏览器内置的图片解码器。
JPEG 和 WebP 该用什么质量设置?
从 80–90 开始。滑块范围是 10 到 100,默认 90。低于大约 60 时,照片会在边缘和文字处出现可见的块状伪影。PNG 是无损格式,会忽略质量设置,因此目标为 PNG 时滑块会被隐藏。
转成 WebP 一定能让文件变小吗?
不一定。对照片而言 WebP 通常大幅胜出,但一个很小的图标,或一张本就压缩得很好的纯色 PNG,写成有损 WebP 后反而可能变大。下载前先对比显示的输出大小。
我的下载文件标着 WebP,另一个程序却识别成 PNG,为什么?
实际输出由浏览器的编码器决定。在缺少 WebP 编码的旧浏览器上,toBlob 可能悄悄产生 PNG 字节,而页面仍显示所请求的 MIME 类型。现代 Chrome、Edge、Firefox 和 Safari 都能正确编码 WebP。
由 HandyTools Hub 团队审校 · 最后更新