参考七牛图片高级处理(imageMogr2)的API逻辑实现自有的图片服务,初步摆脱大图加载灾难.
实施计划:
缩放操作 thumbnail
缩放操作参数表
参数名称 | 必填 | 说明 |
---|---|---|
/thumbnail/!<Scale>p |
基于原图的长宽,按指定百分比缩放。Scale取值范围1-999。 | |
/thumbnail/!<Scale>px |
以百分比形式指定目标图片宽度,高度不变。Scale取值范围1-999。 | |
/thumbnail/!x<Scale>p |
以百分比形式指定目标图片高度,宽度不变。Scale取值范围1-999。 | |
/thumbnail/<Width>x |
指定目标图片宽度,高度等比缩放,Width取值范围1-9999。 | |
/thumbnail/x<Height> |
指定目标图片高度,宽度等比缩放,Height取值范围1-9999。 | |
/thumbnail/<Width>x<Height> |
等比缩放,比例值为宽缩放比和高缩放比的较小值,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽 高缩放比:目标高/原图高 | |
/thumbnail/!<Width>x<Height>r |
等比缩放,比例值为宽缩放比和高缩放比的较大值,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽 高缩放比:目标高/原图高 | |
/thumbnail/<Width>x<Height>! |
按指定宽高值强行缩略,可能导致目标图片变形,width和height取值范围1-9999。 | |
/thumbnail/<Width>x<Height>> |
等比缩小,比例值为宽缩放比和高缩放比的较小值。如果目标宽和高都大于原图宽和高,则不变,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽 高缩放比:目标高/原图高; | |
/thumbnail/<Width>x<Height>< |
等比放大,比例值为宽缩放比和高缩放比的较小值。如果目标宽(高)小于原图宽(高),则不变,Width 和 Height 取值范围1-9999。注意: 宽缩放比:目标宽/原图宽 高缩放比:目标高/原图高; | |
/thumbnail/<Area>@ |
按原图高宽比例等比缩放,缩放后的像素数量不超过指定值,Area取值范围1-24999999。 |
注意:
- 处理后的图片 Width 和 Height 范围1-9999,总像素小于2500万像素。
- 处理前的图片 Width 和 Height 范围1-29999,总像素不超过 2 亿像素。
裁剪操作 crop
裁剪操作参数表 (cropsize)
参数名称 | 必填 | 说明 |
---|---|---|
/crop/<Width>x |
指定目标图片宽度,高度不变。取值范围为0-10000。 | |
/crop/x<Height> |
指定目标图片高度,宽度不变。取值范围为0-10000。 | |
/crop/<Width>x<Height> |
同时指定目标图片宽高。取值范围为0-10000。 |
裁剪偏移参数表 (cropoffset)
参数名称 | 必填 | 说明 |
---|---|---|
/crop/!{cropsize}a<dx>a<dy> |
相对于偏移锚点,向右偏移dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。 | |
/crop/!{cropsize}-<dx>a<dy> |
相对于偏移锚点,从指定宽度中减去dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。 | |
/crop/!{cropsize}a<dx>-<dy> |
相对于偏移锚点,向右偏移dx个像素,同时从指定高度中减去dy个像素。取值范围不限,小于原图宽高即可。 | |
/crop/!{cropsize}-<dx>-<dy> |
相对于偏移锚点,从指定宽度中减去dx个像素,同时从指定高度中减去dy个像素。取值范围不限,小于原图宽高即可。 |
路线为自编译Docker镜像, Nginx 选了Openresty(Lua+RTMP+GraphicsMagick) ,先实现缩放后实现裁剪.
实时示例
缩放
1. 生成 480x320 缩略图
等比缩小 75%:
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/!75p
按原宽度 75% 等比缩小:
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/!75px
按原高度 75% 等比缩小:
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/!x75p
2. 生成 700x467 放大图
指定新宽度为 700px:
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/700x
指定新高度为 467px:
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/x467
3. 限定长边,生成不超过 300x300 的缩略图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/300x300
4. 限定短边,生成不小于 200x200 的缩略图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/!200x200r
5. 强制生成 200x300 的缩略图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/200x300!
6. 原图大于指定长宽矩形,按长边自动缩小为 200x133 缩略图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/200x300>
7. 原图小于指定长宽矩形,按长边自动拉伸为 700x467 放大图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/700x600<
8. 生成图的像素总数小于指定值
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/thumbnail/350000@
9. 指定长宽矩形,居中裁剪
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/center/thumbnail/!200x200r/crop/200x200
裁剪
1. 生成 300x427 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/300x
2. 生成 640x200 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/x200
3. 生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/300x300
4. 生成 300x300 裁剪图,偏移距离 30x100
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/!300x300a30a100
5. 生成 300x200 裁剪图,偏移距离 30x0
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/!300x300a30-100
6. 生成 270x300 裁剪图,偏移距离 0x100
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/!300x300-30a100
7. 生成 270x200 裁剪图,偏移距离 0x0
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/crop/!300x300-30-100
8. 锚点在左上角 (NorthWest),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/NorthWest/crop/300x300
9. 锚点在正上方 (North),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/North/crop/300x300
10. 锚点在右上角 (NorthEast),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/NorthEast/crop/300x300
11. 锚点在正左方 (West),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/West/crop/300x300
12. 锚点在正中 (Center),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/Center/crop/300x300
13. 锚点在正右方 (East),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/East/crop/300x300
14. 锚点在左下角 (SouthWest),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/SouthWest/crop/300x300
15. 锚点在正下方 (South),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/South/crop/300x300
16. 锚点在右下角 (SouthEast),生成 300x300 裁剪图
http://my-space.cn:8090/files/gogopher.jpg?imageMogr2/gravity/SouthEast/crop/300x300