内容识别缩放:改画面比例,人却不变形
把横图改成竖图、16:9 改成 4:3,而画面里的人不会被压扁。
要解决的是同一个麻烦:一张 16:9 的横图要放进 4:3 的位置。裁掉两边会丢内容,直接拉伸会让人变胖、圆形变椭圆 —— 而这两样别人一眼就看得出来。
它是怎么做到的。 算法先给每个像素算一个「能量」(梯度大小:边缘高、平坦区低),再找一条从上到下累积能量最低的像素链,把它整条删掉。重复这一步,被抽走的就是天空、墙面、草地这些没信息的地方,而人脸、文字、建筑边缘这些高能量区域基本原样保留。这叫接缝裁剪(seam carving)。
主要功能
主体不变形,背景替它让位
删的是能量最低的像素链,所以变窄时先牺牲的是空白背景。人脸和文字这类高梯度区域被算法主动绕开。
也能往外撑
往回插接缝就是加宽:在最平坦的地方补像素,而不是把整张图拉开。想把竖图铺成横幅时用得上。
按钮触发,不跟着滑块跑
这个算法是每删一条接缝就要扫一遍全图,实测 1920×1080 缩 10% 要 6 秒。所以它不像别的工具那样拖滑块即时出结果 —— 你先设好宽高,再按「开始处理」。
图片不上传
整个计算在你的浏览器里完成,没有任何一条带图片数据的请求。你可以打开开发者工具的网络面板自己看。
使用步骤
- 1 把图拖进来JPG、PNG、WebP 都收,也可以 Ctrl+V 粘贴。
- 2 设宽度和高度两个滑块都是百分比,50%–150%。只改一个也行,另一个留在 100%。
- 3 按「开始处理」处理中页面会说一声。图越大、改得越多,等得越久 —— 这是算法本身的代价。
- 4 对照左右,满意就下载左边原图、右边成品并排放。不满意就改个数再按一次。
常见问题
- 和直接拉伸、直接裁剪有什么区别?
- 拉伸动的是每一个像素:人变胖、正圆变椭圆,谁都看得出来。裁剪是把边上的内容整块丢掉,构图和信息都少了。内容识别缩放两样都不做 —— 它只抽掉画面里信息量最低的那些像素链,所以主体的比例是对的,边上的东西也还在。
- 为什么要按一下按钮,别的工具都是即时的?
- 因为它贵得多。别的算子是一两遍全图扫描(毫秒级),而接缝裁剪每删一条接缝都要重算一遍能量图并跑一次动态规划。实测 600×800 缩 20% 要 0.8 秒,1920×1080 缩 10% 要 6 秒。跟着滑块跑的话,你每松一次手页面就冻几秒 —— 而且看不出它在算。所以改成你说了算。
- 大图的结果为什么边缘有点软?
- 因为超过 900 像素的图会先缩到最长边 900 再计算接缝,算完再放回你要的尺寸。不这么做的话,一张手机照片要算几十秒。这是速度与锐度之间实打实的取舍,写在这里而不是让你自己发现。900 像素以内的图没有这一步,是原分辨率直接雕的。
- 什么样的图不适合用它?
- 画面塞得很满的图——比如一群人的合影、密集的文字排版、规则的建筑立面。接缝裁剪要靠「低能量区域」腾地方,而这类图里几乎没有低能量区域,算法只能去动本该保留的东西,结果会出现扭曲的线条。这类图用普通裁剪更稳。
现在就试试内容识别缩放:改画面比例,人却不变形
纯浏览器运行 · 免安装 · 免注册 · 图片不上传服务器