在线图片压缩,支持 JPG、PNG、WebP 和 AVIF

上传 JPG、PNG、WebP 或 AVIF,拖动质量滑块即可实时预览,点击下载由 sharp 和 libvips 重新编码。

或将图片拖放到此处

关于此工具

在浏览器中直接压缩 JPG、PNG、WebP 或 AVIF 图片,配有实时质量滑块和格式对比。将图片拖放到页面上后,预览会通过浏览器的 canvas 编码器立即更新,每次拖动滑块都在本地完成,不会发起网络请求。点击下载时,原始文件会通过 HTTPS 发送到我们的压缩服务,这是一个由 sharp 和 libvips 支持的 Cloudflare Worker,与 Vercel 和 Shopify 使用的编码栈相同。服务器端编码生成的文件通常比浏览器预览在相同质量下小 10 到 15 个百分点,因为 libvips 应用了浏览器无法匹配的 MozJPEG 调优。文件会在租户隔离的缓存中保留短暂时间,然后删除。服务器通道支持最大 25 MB 的文件。适合需要更小文件但不想切换软件或打开编辑器的摄影师、开发者和产品团队,也常用于满足微信 16 MB 的图片发送限制。

压缩图片
这个工具能做什么

这个工具能做什么

本页运行的是双通道图片压缩器。预览上方的滑块是一个本地实时编码器,使用浏览器原生的 canvas.toBlob 接口,根据您选择的质量值即时编码。每次拖动滑块都会重新渲染分屏预览并更新字节计数器,完全不产生网络流量。点击下载时,原始文件会发送到我们的压缩服务,由 sharp 和 libvips 完成最终编码,与 Vercel 和 Shopify 使用的编码栈相同。输出尺寸与您的输入完全一致。工具支持 JPG、PNG、WebP 和 AVIF 的输入和输出,可任意组合。

压缩图片
如何一步步压缩图片

如何一步步压缩图片

将 JPG、PNG、WebP 或 AVIF 拖放到上传区域,或使用 Ctrl+V 从剪贴板粘贴。从三个卡片中选择输出格式(照片默认选 WebP)。拖动质量滑块,观察字节计数器实时更新,当文件大小达到目标且预览看起来仍然合适时停止。点击下载即可获得服务器编码的结果。如果压缩服务无法访问,工具会自动保存浏览器编码的预览作为回退,确保您始终能获得一个可用的文件。

压缩图片
如何选择合适的质量值

如何选择合适的质量值

质量滑块范围为 1 到 100,有损压缩的默认值为 78。质量 80 相当于 Adobe Photoshop 导出 JPEG 时标注的「高」级别,适合作品集和客户交付。质量 60 是常见的网页默认值,可以将一张 4 MP 照片压到大约 200 到 400 KB,在正常观看距离下几乎看不出损失。低于 50 时,渐变和肤色区域会开始出现块状压缩噪点。低于 30 时,输出只能作为缩略图使用。滑块上方的字节计数器在拖动时显示精确的输出大小,不需要靠猜。PNG 模式下滑块控制的是调色板颜色数量,而非有损压缩强度。

压缩图片
哪种格式最小:JPG、WebP 还是 AVIF

哪种格式最小:JPG、WebP 还是 AVIF

工具会在同一张源图上并列显示 JPG、WebP 和 AVIF 的字节数,因此对比基于您的实际文件,而非通用基准测试。一般规律是,在相同视觉质量下,WebP 通常比 JPG 小 25 到 35 个百分点,AVIF 通常比 JPG 小 40 到 60 个百分点。AVIF 编码耗时较长,服务器通道上一张 8 MP 照片大约需要 3 到 8 秒,因为 libaom 计算量较大。2026 年这三种格式在 Chrome、Firefox、Safari 和 Edge 上的浏览器支持都已经很完善。PNG 适合颜色数量有限的图片,例如截图和 Logo,这种情况下调色板量化的效果优于有损编码器。

压缩图片
您的文件如何处理

您的文件如何处理

滑块预览完全不走网络。每次拖动都是浏览器内部一次全新的 canvas.toBlob 调用,可以在 DevTools 中过滤 Network 面板的 compress 关键字来验证,拖动滑块时不会出现任何请求。下载按钮是唯一会上传文件的步骤。您的文件会通过 HTTPS POST 到我们位于 /api/compress 的 Cloudflare Worker,Worker 再代理到运行 sharp 和 libvips 的后端。编码后的结果在响应体中返回并保存到您的下载目录。一份中间副本会在租户隔离的缓存中保留短暂时间,然后删除。如果服务无法访问或文件超过 25 MB,浏览器编码器会作为回退静默运行。

压缩图片
这个工具不做什么

这个工具不做什么

不调整尺寸,输出宽高等于输入宽高,如果同时需要缩小像素数,请先使用调整大小工具。不支持批量上传,一次只处理一张图片,这是有意为之。不保留 EXIF,元数据由 libvips 和 sharp 在编码层剥离,这对隐私是好事,但意味着嵌入的 GPS 和相机信息会丢失。视觉方向标签会在剥离前读取并应用,所以您的输出仍然是正面朝上的。不处理 GIF 动画,只处理第一帧。没有目标大小模式,但配合实时字节计数器,两三次滑块调整通常就能让任意目标在 10 个百分点以内命中。

如何将照片裁剪成圆形

  1. 拖放或粘贴您的图片

    将 JPG、PNG、WebP 或 AVIF 拖到上传区域,或点击浏览。您也可以使用 Ctrl+V 或 Cmd+V 从剪贴板粘贴。

  2. 选择输出格式

    点击 JPG、WebP 或 AVIF 设置输出格式。WebP 是默认值,通常是网页用照片的最小选择。

  3. 拖动质量滑块

    拖动滑块时观察字节计数器更新。当文件足够小且预览看起来仍然合适时停止。

  4. 点击下载

    原始文件会发送到我们的服务器,由 sharp + libvips 编码。最终文件通常比浏览器中显示的预览小 10 到 15 个百分点。

常见问题

如何压缩图片?

将图片拖到页面上,然后拖动质量滑块,直到计数器中显示的文件大小达到目标。点击下载即可获得服务器编码的结果(由 sharp + libvips 编码)。整个流程不到一分钟。下载按钮会触发一次 POST 请求到我们的压缩服务,如果服务无法访问,工具会自动保存浏览器编码的预览作为回退。

为什么要压缩 JPEG 图片?

未优化的手机照片通常有 4 到 6 MB。在质量 78 下,同一张照片由 MozJPEG 重新编码后通常只有 800 KB 到 1.5 MB,足够小到可以作为电子邮件附件、微信发送或网页主视觉图使用,且没有明显的视觉损失。压缩后的图片也加载更快,有助于提升 Core Web Vitals 分数。微信单张图片上限为 16 MB,压缩后几乎所有手机原图都能顺利发送。

如何在不损失画质的情况下压缩图片?

如果需要真正的无损压缩,请将输出格式选择为 PNG。PNG 通道使用 pnpngquant 进行调色板优化,可以将未优化的 PNG 缩小 30 到 50 个百分点,且视觉上完全没有差别。对于有损格式(JPG、WebP、AVIF),质量 80 是大多数观众无法分辨差异的实用门槛,具体效果取决于图片内容。

可以将图片压缩到指定大小,比如 100 KB 吗?

工具没有目标大小模式,但借助实时字节计数器,命中目标非常直接。向下拖动滑块,直到计数器显示您的目标值,然后点击下载。两三次滑块调整通常就能让任意目标大小在 10 个百分点以内命中。如果一次拖过头,稍微往回拖一点即可。

JPG、WebP 还是 AVIF,哪种格式压缩后最小?

这取决于图片内容。工具会同时显示三种格式的字节数,方便您基于实际文件做对比。一般规律是:在相同视觉质量下,WebP 通常比 JPG 小 25 到 35 个百分点,AVIF 通常比 JPG 小 40 到 60 个百分点,不过 AVIF 的编码会多花几秒钟。

压缩图片会改变它的尺寸吗?

不会。输出尺寸与输入尺寸完全相同。压缩只改变字节编码,不改变像素数。如果同时需要降低分辨率(例如从 4000 像素宽缩到 1200 像素),请先使用调整大小工具,再压缩调整后的文件。这个顺序能得到最小的最终文件。

详细信息

团队关于工艺、格式以及一个好的圆形裁剪背后小决定的笔记。

双通道架构详解
滑块预览和下载编码是两条完全独立的代码路径。预览使用浏览器原生的 canvas.toBlob 接口,在 GPU 合成线程上同步运行。每次拖动滑块都会以新的质量值触发一次新的 canvas.toBlob 调用,结果绘制到分屏画布中。这条路径完全本地化:打开 DevTools 的 Network 面板,过滤 compress 关键字,拖动滑块时您会看到零请求。下载按钮触发的是另一条完全不同的路径。它会将原始(未修改的)文件 POST 到我们位于 /api/compress 的 Cloudflare Worker,Worker 再代理到一个运行 Node 24 和 sharp(Apache 2.0 许可)的 Fastify 服务,sharp 底层依赖 libvips 8.x(LGPL-3.0)。编码后的结果在响应体中返回,保存到浏览器下载目录。两条路径,一个工具。
为什么服务器编码胜过浏览器编码
浏览器的 JPEG 编码器使用 libjpeg 或浏览器自带的实现,缺少 MozJPEG 的色度子采样表调优。MozJPEG 是 libvips 调用的 JPEG 编码器,由 Mozilla 于 2014 年开发,作为 libjpeg-turbo 的替代实现,专注于在相同感知质量下生成更小的文件。我们对 50 张多样化照片(野生动物、人像、产品图、截图)做过基准测试,libvips 和 MozJPEG 在质量 78 下产出的文件,比 Chrome canvas.toBlob 在相同质量值下的输出小 10 到 20 个百分点。PNG 差距更大:浏览器使用默认压缩级别的 zlib,而 pnpngquant 会将颜色调色板缩减到所需的最小值,通常能让未优化的 PNG 文件再小 30 到 70 个百分点。
AVIF:它是什么,何时使用
AVIF 基于 AV1 视频编码器的帧内预测,由开放媒体联盟开发。它通过在更大区域预测像素值并更紧凑地表示残差,实现了比 JPEG 更高的压缩效率。实际效果是,质量 60 的 AVIF 文件通常在视觉上与质量 80 的 JPEG 文件无法区分,而体积要小 40 到 60 个百分点。代价是编码时间:在我们的服务器上,一张 8 MP 照片在质量 60 下用 libaom-av1 编码需要 3 到 8 秒。截至 2026 年,浏览器支持已经很完善(Chrome、Firefox、Safari、Edge 都能解码 AVIF)。工具会和 JPG、WebP 一起实时显示 AVIF 字节数,方便您判断在自己的工作流中,体积节省是否值得多等几秒。
质量设置的实战意义
滑块直接映射到有损格式编码器的 q 参数。质量 80 相当于 Adobe Photoshop 导出 JPEG 时标注的「高」级别,是大多数专业工作流的默认选择。质量 60 下,平均一张 4 MP 照片压到约 200 到 400 KB,足够用于大多数邮件和网页场景,细节损失只在 1:1 放大查看精细纹理时才看得出来。低于质量 50 时,平滑渐变和肤色区域会出现块状压缩噪点,即使在视网膜屏幕的正常观看距离下也能察觉。低于质量 30 时,输出仍可识别但明显已压缩,只适合作为缩略图预览使用。滑块上方的字节计数器在拖动时直接显示输出大小(单位 KB),不是估算值。
元数据剥离及其影响
两条通道都默认从输出中剥离 EXIF、GPS 和相机元数据。这是 libvips 和 sharp 在默认配置下的正确行为,有两个实际效果。第一,移除智能手机摄像头嵌入的可能敏感的位置数据,这对公开分享的图片是隐私上的好处。第二,稍微减小文件体积(典型 EXIF 块为 10 到 40 KB)。视觉方向标签的处理是分开的:工具会在剥离前读取 EXIF 方向字段,并预先旋转图片,使输出方向正确。如果您需要为取证、归档或印刷工作流保留元数据,请在压缩前使用专门的元数据编辑器。
支持的格式:输入和输出
输入接受所有现代浏览器下的 JPG、PNG、WebP 和 AVIF,通过文件头魔法字节嗅探验证,而不是仅依赖文件扩展名。Chrome 和 Firefox 接受 GIF,但只处理第一帧(不保留动画),因此动画 GIF 不应该用本工具压缩。HEIC 在 Safari 中可用,因为 Safari 内置了原生 HEIC 解码器,但 Chrome 和 Firefox 不能原生解码 HEIC。无论输入是哪种格式,输出都可以是 JPG、PNG、WebP 或 AVIF,因此本工具也可以作为一站式的转换加压缩通道使用。服务器通道接受最大 25 MB 的文件,超过该上限的文件会由浏览器回退编码器处理。