图片格式转换器

在 JPG、PNG、WebP 之间转换图片格式。有损格式支持调节质量,全部过程都在你的设备上完成。

只想把 JPG 转成 PNG?试试 JPG 转 PNG 专用页面

点击选择一张图片,或将其拖放到此处

支持 JPG、PNG、WebP。文件保留在你的设备上,不会上传任何内容。可多选进行批量转换。

生成后,转换后的图片会显示在这里。

PNG 无损(文件更大,支持透明度)。JPEG 和 WebP 有损,可通过滑块调节质量(文件更小,JPEG 不支持透明度)。在同等视觉质量下,WebP 通常优于 JPEG,但 JPEG 的兼容性最广。

工作原理

你的图片通过本地对象 URL(URL.createObjectURL)加载,由浏览器自身的图像解码器解码,以其完整的原始分辨率绘制到一个离屏 canvas 上,然后通过 canvas.toBlob 按你选择的格式和质量重新编码。有一个细节已经为你处理好了:JPEG 没有 alpha 通道,因此在绘制之前,如果目标格式是 JPEG,canvas 会先填充为白色。如果没有这一步,PNG 中的透明区域在转换后会变成黑色。质量滑块只对 JPEG 和 WebP 生效;PNG 编码是无损的,会忽略该设置。

canvas 往返处理还有一个值得了解的附带效应:输出结果只包含像素信息。手机照片中的 EXIF 元数据、相机型号、时间戳以及嵌入的 GPS 坐标都不会在重新编码后保留下来。这使得该转换工具在公开分享照片之前,无形中带来了隐私上的好处;但如果你确实需要这些元数据,就要注意这一点(这种情况下请保留原图)。浏览器在解码时会应用 EXIF 方向标记,因此侧拍的手机照片经过转换后仍会正确旋转显示。

转换、批量模式,甚至 .zip 打包(在 JavaScript 中逐字节组装)都在你的浏览器中运行完成。打开开发者工具的 Network 标签页并转换一张图片试试:不会有任何请求携带该图片,这也是为什么除了你设备本身的内存限制外,没有其他文件大小上限。