裁剪是人们对一张图片做得最平常的一件事,也是最能说明问题的一件:裁一张截图,是为了只给人看其中一小块;裁一张照片,是为了把周围的东西去掉。换句话说,人们裁剪几乎总是为了藏起什么,而那个“什么”没有任何理由经过服务器。
区域可以用手指、鼠标或者键盘来画,三者没有区别:八个手柄,方向键移动,Shift 加方向键改变大小,而且每挪一步都会为读屏软件念出来。这不是额外加的无障碍功能,这是所有人共用的同一条路。
有一件事要知道:跟旋转 PDF 页面不一样,裁剪图片会重画像素。所以文件是重新编码的,而一个 JPEG 就算别的什么都没改,重新编码也会掉一点画质。这次重新编码的好消息是,它会把原来的元数据全都带走,包括日期、设备、GPS 位置,还有内嵌的那张预览缩略图。
怎么用
- 把您的图片放进来。它会显示出来,上面有一个可以抓、可以拖、可以改大小的框。
- 调好该调的:需要正方形或者某种屏幕比例就设一个固定比例,要转四分之一圈就设旋转,要镜像就设镜像。
- 点“裁剪并下载”。结果那张表会写明取的确切区域、得到的尺寸,以及从产出文件里回读出来的类型。
支持的格式
只要您的浏览器显示得出来的格式,都能裁。而输出格式则受限于您的浏览器写得出什么,而且得到的类型是回读出来的,不是想当然的。
JPEG
会重新编码:有损失,损失多少由画质那一项决定。输出选 PNG 就完全没有损失。
PNG
无损重新编码,透明会保留。
WebP
哪里都读得了,但 Safari 没有一个版本写得出 WebP:在 iPhone 上,输出会是 PNG,而工具会告诉您,不藏着。
AVIF
Chrome 和 Firefox 读得了。没有哪个浏览器被证实写得出它:输出会是 PNG 或者 JPEG。
它的限制
裁剪总会把图片重新编码
裁剪改变了文件里的像素:所以必须把它重写一遍。在 JPEG 上,就算设成最高档,这次重新编码也要掉一点画质,因为它的压缩是不可逆的。这是格式本身的性质,不是我们的选择,也正因如此才提供 PNG 作为输出。
最多 1670 万像素
浏览器的画布是有上限的,兼容性的下限是 1670 万像素(iOS 18 之前的 iPhone)。超过之后,操作会悄无声息地失败并给出一张白图。所以工具会干脆拒绝,并把读到的尺寸显示出来。
原来的元数据全部消失
这是重新编码的后果,而且几乎总是人们想要的:日期、设备、软件、GPS 位置和内嵌的预览缩略图都没了。不过浏览器在 JPEG 上会写回两个属于它的块(一个像素密度标记和一份色彩配置):它们什么也不说谁,而我们宁可把它们点出来,也不藏着。
输出格式取决于您的浏览器
标准允许浏览器在写不出所要格式时一声不吭地给出一个 PNG。Safari 没有一个版本写得出 WebP。所以工具会回读产出文件的类型并显示出来:这是本项目的一条硬规矩。
关于这个工具的问题
我的图片会被发到什么地方吗?
不会,三十秒就能自己验证。按 F12 打开开发者工具,切到“网络”标签页,清空列表,然后把图片放进来裁一次。一行都不会冒出来。把网断掉再做一遍:工具表现完全一样。
我能用键盘来裁吗?
能,而且是完整的一套,跟用鼠标是同一条路。那个框可以用键盘取得焦点;方向键让它每次移动图片的百分之一,Shift 加方向键改变它的大小,而且每挪一步都会念出来,带上精确到像素的尺寸和位置。
画质会掉吗?
如果输出 JPEG,会掉一点:JPEG 的压缩是不可逆的,所以重新编码总要付出点什么,哪怕画质开到最高。输出选 PNG 就一点损失都没有,代价是文件更重。这跟 PDF 不一样,在那里旋转一页不碰任何像素。
我照片的 GPS 位置会保留吗?
不会,而这是有意的。裁剪会从画布重新编码这张图片,于是原来的元数据全都消失:日期、时间、设备、软件、位置,连相机塞进文件里的那张预览缩略图也一样。如果您想在分享之前看看一张照片说了些什么,同一个专区里的“查看并删除元数据”会原原本本给您看。
我要的是 WebP,拿到的是 PNG。
那是您的浏览器,而且标准就是这么规定的:它写不出所要的格式时,会一声不吭地给出一个 PNG。Safari 没有一个版本写得出 WebP。所以工具会回读产出文件的类型并显示给您,而不是让您以为自己拿到了一个 WebP。
为什么旋转是在切割之后才应用的?
因为对着屏幕看的人期待的就是这样:您画的那块区域,取的是眼前显示出来的那张图。旋转排在后面,作用在您切下来的东西上,所以转四分之一圈会把结果的宽和高对调。结果那张表会把两个尺寸都给出来。