第一次在代码里看到resize什么意思,完全摸不着头脑,对着编辑器盯了半天,以为是个什么复杂的函数,后面改图片尺寸的时候才一点点捋明白。那会儿在调网页截图,导出的图老是拉伸变形,网上复制来的代码里就卡着这个resize,参数乱改一通,图片一会被压扁,一会只裁掉边缘,完全拿不准到底它在做什么。

resize本质就是重新调整大小,不是只局限图片,窗口、画布、程序里的控件都能用这个词。写前端的时候,浏览器窗口拖动放大缩小,触发的事件就叫resize事件,窗口一变,页面布局跟着重新渲染。很多人会把resize和crop搞混,crop是裁剪,直接切掉画面多余部分,resize是缩放,整张素材保留,只是像素尺寸被拉大或者缩小。

上次处理一批产品图,就踩了这个混淆带来的麻烦。直接调用resize函数,固定宽高,图片比例没锁住,出来的物体全部压扁,看着很怪异。反复试参数才发现,resize可以选择是否维持原图比例,勾选锁定比例之后,只会按等比缩放,不会强行拉伸画面。要是不锁比例,宽高数值随便填,图片就会扭曲,很多新手处理图片时都会犯这个错。

不同软件和编程语言里,resize的行为还不一样。

用PS的resize,改的是图像像素大小,文件总像素跟着变化;如果只是改画布大小,那又是另一个操作。Python里PIL库的resize,是直接修改图片像素矩阵,缩小图片的时候还能选采样算法,选不对,图片会糊成一团。浏览器的resize监听,不会改动图片本身,只检测视口尺寸变化,用来适配移动端页面排版。

拿图片举例子,原图是1920×1080,调用resize改成960×540,像素数量减半,文件体积会变小,画面信息压缩,细节会丢失。反过来放大图片,resize没法凭空增加细节,只是把原有像素拉伸,放大之后图片清晰度下降,看着发虚。这一点很关键,不要指望靠resize把模糊小图变清晰,做不到的。

有一次写脚本批量压缩图片,连续跑了几百张图,全部用resize缩小尺寸,跑完才发现没保留原图备份。原始大图直接被覆盖,想要恢复高清版本已经没机会,只能重新去素材文件夹找原图,折腾了半个下午。那时候才留意,批量执行resize操作前,优先复制一份原始文件,不要直接覆盖源文件。

很多工具会把resize做成可视化按钮,不用写代码。像图片查看器、在线图床,上传图片后调整尺寸的选项,底层调用的逻辑就是resize。在桌面程序里,拖动窗口边框,系统内部也是执行resize操作,修改窗口占据屏幕的像素范围。

不用死记硬背术语,简单区分就行。裁剪是切掉部分画面,resize是缩放整张素材,改变像素尺寸,画面内容完整保留。代码里遇到resize关键词,大多就是要修改某个对象的宽高尺寸,图片、画布、窗口都适用。

关掉编辑器的时候,屏幕还留着刚才那张被拉伸变形的预览图。