基于 Canvas 原生 toBlob(),无额外依赖,轻量易用
compressorjs — JavaScript 工具站模板
作者 fengyuanchen
轻量级浏览器端图片压缩库,基于Canvas原生API,适合前端上传前预处理。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。 本截图因高度限制未包含整页。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
支持质量、尺寸、格式等多项压缩参数,可精细控制输出
提供 beforeDraw 和 drew 钩子,便于添加水印或滤镜
自动处理 EXIF 方向,避免图片旋转问题
支持将大体积 PNG 自动转换为 JPEG,有效减小文件大小
提供 abort() 方法,可中断压缩过程
模板详细介绍
compressorjs 是一个专注于浏览器端图片压缩的 JavaScript 库,而非完整的工具站模板。它利用 HTMLCanvasElement.toBlob() 原生方法进行有损压缩,整个过程异步执行,且压缩效果因浏览器而异。项目提供 UMD、CommonJS 和 ES Module 格式,可通过 npm 安装或直接引入,并附带一个在线演示页面,展示基本的上传与压缩流程。
核心能力集中在图片尺寸、质量、格式的精细控制上,例如设置输出宽高、质量系数(0.6-0.8 推荐)、自动将大体积 PNG 转为 JPEG,以及通过钩子函数在绘制前后添加水印或滤镜。它特别适合需要在上传前减少图片体积的 Web 应用,如表单头像上传、图片分享工具等。
需要明确的是,compressorjs 本身是一个库,不包含任何 UI 组件或后端逻辑。演示页面仅用于功能展示,不能直接作为生产环境的前端工具站使用。此外,由于依赖 Canvas,压缩结果在不同浏览器存在差异,且大图处理时需注意内存限制。若计划集成到项目中,需自行实现界面、错误处理及上传逻辑,并针对目标浏览器进行充分测试。
适合你的项目吗?
适用场景
- 浏览器端图片上传前的预压缩,减少带宽消耗
- 需要控制图片最终尺寸或格式的在线工具
- 在图片上添加水印或简单滤镜后再输出的场景
- 作为自定义图片处理工具的核心压缩模块
适合人群
- 前端开发者,希望快速集成图片压缩功能
- 需要处理用户上传图片的 Web 应用
- 对包体积敏感,偏好原生 API 实现的项目
- 已有 UI 框架,只需压缩逻辑的场景
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
通过 npm 安装 compressorjs,然后引入对应模块。
- 2
使用时需传入 File 或 Blob 对象,并在 success 回调中获取压缩结果。
- 3
注意压缩是异步的,且不同浏览器效果有差异。
- 4
建议设置 maxWidth/maxHeight 避免 Canvas 尺寸限制,并根据需求调整 quality 和 convertSize。
- 5
若需支持 IE10+,需引入 polyfill。
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明MIT许可证明确允许免费使用、修改、分发和销售,仅需保留版权与许可声明。
使用时需要遵守
- 保留原作者版权声明和 MIT 许可证声明。
- 在所有副本或实质性部分中包含版权与许可声明
额外费用与待核对事项
- README未提及额外授权限制,未确认第三方素材授权
查看原文依据
Permission is hereby granted, free of charge, to any person obtaining a copy
许可证原文
The above copyright notice and this permission notice shall be included in
许可证原文
https://github.com/fengyuanchen/compressorjs/blob/main/LICENSEhttps://github.com/fengyuanchen/compressorjs/blob/HEAD/README.mdPermission is hereby granted, free of char
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-09-24。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 85 / 100
- 技术栈
- JavaScript
- 网站类型
- 工具站
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-08-29
- 截图检查日期
- 2026-09-05
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 JavaScript。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
当前版本没有可核对的编辑审核记录;旧的应用时间不代表已完成事实审核。
这条历史介绍未保存固定版本的来源快照。请对照当前仓库,发现不一致可反馈。
反馈内容错误看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

simplemde markdown editor
SimpleMDE 是一个开源的 Markdown 编辑器 JavaScript 组件,定位为 textarea 的替代品。
JavaScript · 工具站

numi
numi 是一款以自然语言输入为核心的计算器工具,用户可以直接输入类似“$20 in euro - 5% discount”或“today + 2 weeks”这样的描述,系统会即时解析并返回结果。
JavaScript · 工具站

json editor
JSON Editor 是一个基于 JSON Schema 生成 HTML 表单的 JavaScript 库。
JavaScript · 工具站

overtype
OverType 是一个开源的 Markdown 编辑器库,核心思路是用一个透明的 textarea 覆盖在渲染后的预览层上,让用户感觉在直接编辑格式化文本,但底层仍是原生输入框。
JavaScript · 工具站

Method Draw
Method Draw 是一个基于 Web 的矢量绘图应用,源自 SVG-Edit 项目,但刻意简化了功能,去除了图层、线帽/角等复杂选项,以提供更直观、愉快的编辑体验。
JavaScript · 工具站

tl rtc file
tl rtc file 是一个以 WebRTC 点对点传输为核心的开源工具站项目,源自 2020 年的毕业设计,经过持续迭代已具备相当完整的功能面。
JavaScript · 工具站
