阿里云裁剪指的是从原始素材中截取需要的部分,再调整到指定尺寸。在阿里云上,这件事主要有两类场景:对象存储 OSS 的图片处理,以及媒体处理服务里的视频剪辑。本文以 OSS 图片裁剪为主,同时用两个案例说明用法,并整理几个容易踩的坑。

为什么不在本地先裁好再上传
不少团队的习惯是先用修图软件裁好图,再传到服务器。图片少的时候没问题,量一大就容易出状况。
- 规格不统一。每个人裁出的尺寸和比例都不一样,前端页面只能不断适配,样式越改越乱。
- 副本越来越多。同一张图要留几个尺寸,文件数量和存储容量都会跟着涨。
- 规范一改就要返工。比如主图从正方形改成 4:3,所有图片都得重新导出、重新上传。
阿里云的思路是只保留一张原图,访问时通过 URL 参数实时生成需要的尺寸。处理结果会被缓存,相同参数的请求不会重复计算。这样改规格时只动参数,不动文件。
三种常用的裁剪方式
固定尺寸裁剪
需要输出固定宽高时,使用 resize 配合 m_fill 模式。系统先按比例缩放,再从中心区域截出目标尺寸。下面的地址会把原图处理成 800×800 的正方形:
https://example-bucket.oss-cn-hangzhou.aliyuncs.com/shop/1.jpg?x-oss-process=image/resize,m_fill,w_800,h_800
这种方式适合商品主图、头像、封面这类对尺寸有硬性要求的场景。如果主体不在画面中心,裁掉的边缘可能正好是关键内容,所以上线前要用几张典型图看一下效果。
按坐标截取
如果只需要图中某一块区域,可以用 crop 指定宽、高和起始坐标。坐标以图片左上角为原点。下面的参数表示从 (100, 100) 开始,截取 300×300 的区域:
https://example-bucket.oss-cn-hangzhou.aliyuncs.com/shop/1.jpg?x-oss-process=image/crop,w_300,h_300,x_100,y_100
坐标要和原图的实际尺寸对得上。写参数前,最好先查一下图片信息。OSS 支持在地址后加上 image/info 获取宽高等基础信息,程序里可以先读取这些数值,再计算裁剪范围。
智能裁剪
手动指定坐标,就得靠人去判断主体在哪。阿里云的视觉智能类服务提供智能裁剪能力,可以先识别画面主体,再自动取景。不过具体支持的图片类型、输出规格和计费方式,要以控制台和产品文档为准。正式接入前,建议先用样图跑一遍,确认结果是否符合预期。
案例一:电商商品图统一规格
某服装店铺有约 2000 张商品图,原图尺寸从 600 像素到 4000 像素不等,比例也各不相同。运营的要求是主图统一为 800×800,详情页使用宽度 750 的版本。
团队没有重新批量导出,而是保留原图,在前端按场景拼接不同的裁剪参数。主图用 m_fill 生成正方形,详情页只限制宽度。改造之后,原图只存一份,规范调整时改参数就行,不需要重新上传。
这个方案的实际效果要用自己的数据来验证。上线前,建议对比改造前后页面的图片总体积和首屏加载时间,确认没有问题,再决定是否全量切换。
案例二:视频片段截取
某教育机构需要从两小时的录播课里截取知识点短视频。过去是人工在剪辑软件里逐个导出,每周都要花不少时间。
后来改用阿里云媒体处理服务,按起止时间提交剪辑任务,输出固定格式的片段文件。课程编号和时间点统一记在任务配置表里,由脚本批量提交。剪辑人员只需要维护时间表,不必再逐个操作视频。
这种做法的前提是时间点要准。表格里的时间如果有误,批量提交会把错误一起放大,所以建议在正式跑批之前,先用一两段视频抽查结果。
使用中常见的问题
- 坐标越界会报错。crop 的范围超出原图尺寸时,请求会失败。调用前先读取宽高,再计算坐标,能省掉很多排查时间。
- 操作顺序会影响结果。先缩放再裁剪,和先裁剪再缩放,得到的画面可能不一样。需要精确构图时,应在测试图上比较两种顺序,再选定其中一种。
- 改了参数页面还是旧图。处理结果可能被 CDN 和浏览器缓存。更新参数或原图后,需要刷新缓存,或者换一个新的文件名。
- 费用和调用量相关。图片处理和视频处理都会产生费用。缓存策略和重复请求的控制,对成本影响很大。具体单价请以官网价格页为准,不要凭印象估算。