图片裁切工具
在线免费图片裁切、旋转与翻转,精准到像素,全程浏览器本地处理不上传
拖拽图片到此处,或点击选择文件
支持 JPG、PNG、WebP、BMP、GIF 格式
什么是图片裁切?
图片裁切就是从原图中选取一个矩形区域,把框外的内容丢弃。它是最基础的图片编辑操作之一——只是改变构图,不重新采样像素:从 4000×3000 的照片里裁出 1000×800 的区域,框内每一个像素都原汁原味保留。这个免费在线裁切工具的操作方式跟桌面编辑器一样:在预览图上拖动选框、用 X/Y/W/H 输入框精确定位、锁定比例让输出适配固定画布(头像、横幅、证件照),然后导出 PNG/JPEG/WebP。旋转和翻转在裁切之后施加,导出的文件方向已经被实际写入像素,对打印和不读 EXIF 方向的应用尤其重要。所有处理通过 Canvas 在浏览器本地完成——图片字节不会离开页面,证件、私照都不会上传。
使用方法
使用步骤
- 拖入图片或点击选择。支持 JPG/PNG/WebP/BMP/GIF。
- 拖拽选框移动位置,或拉角/边手柄调整大小。选择比例预设可锁定宽高比。
- 在 X/Y/W/H 输入框微调数值,实现像素级精确放置。
- 可选 90° 旋转或水平/垂直翻转——这些效果将应用在裁切后的输出上。
- 选择 PNG/JPEG/WebP 格式,点击「裁切」生成结果,然后下载。
使用提示
- 用作头像或缩略图前先锁定比例(1:1、16:9 等),否则平台会自动帮你裁,结果未必如你意。
- X/Y/W/H 的数值是基于原图像素,不是屏幕像素。4000 像素宽的照片即使缩放显示,坐标仍然按 4000 算。
- 照片类用 JPEG 0.85–0.92、WebP 0.80–0.90——再高质量眼睛也看不出差别;截图、线稿或带文字的内容用 PNG。
使用场景
技术原理
裁切在逻辑上很简单——选一个矩形,复制它的像素,扔掉其他——但在浏览器里做好需要几个关键环节:屏幕上的预览是原图的缩放版本,拖拽手柄操作在显示坐标中,而实际的裁切必须在原图坐标中进行,才不会损失画质。 当你加载一个文件,工具先用 URL.createObjectURL() 拿到 blob URL,再交给 HTMLImageElement 解码(零拷贝,比 base64 data URL 省内存)。img.naturalWidth 和 naturalHeight 被作为规范的像素坐标系——state 里存的所有 X/Y/W/H 都用这些像素表示。预览 <img> 用 max-width/max-height 让浏览器自动缩放;每次加载和 resize 时测量渲染后的宽(getBoundingClientRect()),存下一个 displayScale 比例(渲染宽 / 自然宽)。拖拽期间的鼠标偏移量除以这个比例,就从显示运动转回原始像素坐标——不论图片被缩放到多小,裁切矩形始终精确。 裁切框是一个绝对定位的 <div> 叠加在图片上。8 个缩放手柄(四角 + 四边)各自在 pointerdown 时记录模式('nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'move');window 上的 pointermove 监听(pointer events 同时覆盖鼠标和触屏)读取实时鼠标位置,计算与拖拽起点的偏移,转为原图像素后重算矩形的 left/top/right/bottom。角拖以对角为锚点;边拖保持中轴线固定;锁定比例时先算主导轴再反推另一轴。每个结果都被限制在图片边界内,最小 10 像素,防止矩形反转或逃出画布。 导出阶段使用两个离屏 canvas。第一个 canvas 尺寸设为裁切区域的自然宽高;ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh) 的 9 参数形式只拉取裁切区域的像素——Chromium 和 Firefox 都通过 GPU 纹理拷贝完成此操作,目标尺寸不变就不会发生重采样。如果有旋转或翻转,第二个 canvas 按旋转后的尺寸创建(90°/270° 时交换宽高),context 平移到中心,ctx.rotate(angle) 和 ctx.scale(±1, ±1) 施加变换,然后把裁切 canvas 以 (-w/2, -h/2) 偏移绘制。最后 canvas.toBlob(mimeType, quality) 将编码后的字节返回为 Blob;URL.createObjectURL() 将其变成可下载的 URL。PNG 忽略 quality(无损),JPEG 和 WebP 将其传给编码器(0–1)。旧的 Blob URL 在新裁切生成时释放,避免已解码的像素数据常驻内存。
- 裁切坐标(X/Y/W/H)基于原图像素——一张 4000 像素宽的照片即使屏幕上缩小显示,坐标仍然按 4000 计算。
- 所有处理通过 Canvas API 在浏览器本地完成——解码、裁切、旋转、翻转和编码都不会将图片字节发送到任何服务器。
- 裁切框是一个绝对定位的 <div>,带 8 个拖拽手柄;鼠标/触屏偏移量除以显示比例,转换回原始像素坐标。
- 导出使用离屏 Canvas:第一个 Canvas 通过 drawImage 九参数形式只提取裁切区域(不重采样),第二个 Canvas 通过 context 变换施加旋转/翻转。
- 每次状态转换时显式释放旧的 Blob URL,避免已解码的像素数据在内存中堆积。
示例
从人像照片裁出方形头像
载入照片(3024×4032)→ 比例 1:1 → 拖框覆盖面部 → W=2000 H=2000 → JPEG 质量 0.9 → 裁切 → 下载制作 Open Graph 1200×630 封面
载入横幅(1920×1080)→ 比例 16:9 → W=1200 H=630 → 拖到主体 → WebP 质量 0.85 → 裁切 → 下载YouTube 视频缩略图 1280×720
载入素材 → 比例 16:9 → W=1280 H=720 → 拖到焦点 → JPEG 质量 0.9 → 裁切 → 下载修正相机拍的人像方向
载入 IMG_4321.jpg → 向右旋转 90° → 比例自由 → 保持全画布 → PNG → 裁切 → 下载(方向已写入像素)截取屏幕中的部分区域
粘贴/上传屏幕截图 → 比例自由 → 紧框对话框(如 740×420)→ PNG → 裁切 → 下载用于 Bug 报告常见问题
我的图片会被上传到服务器吗?
不会。解码、裁切、旋转和编码全部在当前标签页的 Canvas API 中执行。打开 DevTools → Network 即可确认:裁切或下载期间没有任何请求发出。
裁切会降低图片质量吗?
裁切本身是无损的——只丢掉框外的像素,框内的像素逐字节保留。只有两种情况质量会变化:以低于 100% 的质量重新编码为 JPEG/WebP,或者应用非 90/180/270 的旋转角度(所以我们只提供这三种)。
在线裁切和 Photoshop、Lightroom 有什么区别?
桌面软件功能更全(图层、调色、批处理、自动选区),但启动慢、要付费、要本地安装。在线工具的优势是:打开浏览器即用,免安装免登录,处理一两张图通常比启动 Photoshop 更快。如果只是裁一张图、定个比例、做个头像,在线工具更合适;要做大量批处理或复杂修图再上 PS。
和手机相册自带的裁切相比呢?
手机相册裁切方便但受限:通常只能选几个固定比例、不能输入精确像素、改不了输出格式、文件名固定。当你需要把照片裁到 1200×630 这种具体尺寸,或者要把 HEIC 转 JPG 顺便裁,相册做不到,而本工具可以。
为什么 X/Y/W/H 的值跟我屏幕上看到的不一样?
这些值是原图的像素坐标,不是屏幕像素。一张 4000 像素宽的照片在屏幕上可能只显示 800px,但坐标仍然是原图的 4000——你的编辑器或上传目标实际拿到的也是这个分辨率。
导出的图片有水印吗?
没有。本工具完全免费,无水印、无登录、无次数限制,不会在裁切结果上加任何 logo 或链接。
为什么不能把裁切尺寸设得比原图还大?
裁切框不能超过图片边界。如果需要更大输出,要先单独做放大(upscale)。我们不在裁切中做放大,因为最近邻或双线性上采样会让结果变模糊,专业放大应该交给专门的图片放大工具。
想用预设列表里没有的自定义比例怎么办?
把比例设为「自由」,在 W/H 输入框里键入想要的精确宽高即可——结果就是这两个数字定义的比例。也可以把它当计算器:1080 / 1350 = 0.8 = 4:5。
可以一次裁切多张图片吗?
目前不支持批量。本工具针对单张图的精确裁切设计;要批量处理同一比例的多张图,可以用命令行工具(如 ImageMagick)或专业批量编辑器。
这里的旋转跟手机照片的 EXIF 方向有什么不同?
EXIF 方向是一个元数据标记——识别它的应用在显示时会旋转图片,但文件像素本身保持原始朝向。本工具的旋转是实际重新渲染像素,导出文件在任何查看器里都是正确方向,包括打印工具和不读 EXIF 的应用。
应该导出 PNG、JPEG 还是 WebP?
截图、UI 原型和带文字/锐利边缘的内容用 PNG(无损,文件较大)。打印用照片或更看重文件大小时用 JPEG。WebP 在视觉质量相当时比 JPEG 小 25–35% 且支持透明——目标受众使用现代浏览器时优先选它。
为什么裁切后文件反而变大了?
如果源图是高压缩 JPEG,而你以 PNG 导出,无损重新编码自然会更大。保持源格式(或选 WebP)即可避免。