裁剪图片
在图片上拖动裁剪框即可完成裁剪。可自由裁剪,也可锁定为常见比例,裁剪结果保持原始分辨率。
点击选择一张图片,或将其拖放到此处
支持 JPG、PNG、WebP。文件保留在你的设备上,不会上传任何内容。
生成后,裁剪后的图片会显示在这里。
如果需要特定比例(比如头像照片用 1:1),请先选择比例,然后把裁剪框拖到合适的位置。裁剪是按图片的完整分辨率进行的,而不是按预览的显示尺寸,因此输出结果始终保持清晰。
工作原理
你的文件通过 URL.createObjectURL 加载,这是一个本地内存引用,绝不会被上传,并会缩小显示以适配编辑器窗口。你拖动的裁剪框以屏幕像素为单位进行跟踪,但当你点击裁剪的那一刻,这些坐标会按图片原始尺寸与显示尺寸之间的比例进行换算。也就是说,如果你 4000 像素宽的照片以 800 像素宽显示,屏幕上一个 200 像素宽的裁剪框,实际选中的是原图中 1000 像素宽的区域。选中的矩形随后通过 canvas API 的 drawImage 源矩形形式进行复制,精确地从完整分辨率的原图中提取出对应像素。
输出格式与输入保持一致:PNG 输入,PNG 输出(无损,与原始区域逐像素相同),其他格式都会通过 canvas.toBlob 以 92% 质量重新编码为 JPEG。这一区别值得了解:裁剪一张 JPEG 意味着多经历一次 JPEG 压缩,在 92% 质量下通常不易察觉,但确实存在。如果你需要像素级精确的裁剪,请给工具提供一张 PNG 图片。
以上所有过程都在你浏览器自身的图像解码器和 canvas 中完成。在拖入照片之前打开开发者工具的 Network 标签页看看:从来没有任何请求携带过图片,这也意味着没有服务器端的大小限制,也不用排队等待。