从0到1搭建自己的图片服务器--预告篇(Nginx+Lua+GraphicsMagick)

参考七牛图片高级处理(imageMogr2)的API逻辑实现自有的图片服务,初步摆脱大图加载灾难.
实施计划:

缩放操作 thumbnail

缩放操作参数表

参数名称 必填 说明
/thumbnail/!p 基于原图的长宽,按指定百分比缩放。Scale取值范围1-999。
/thumbnail/!px 以百分比形式指定目标图片宽度,高度不变。Scale取值范围1-999。
/thumbnail/!xp 以百分比形式指定目标图片高度,宽度不变。Scale取值范围1-999。
/thumbnail/x 指定目标图片宽度,高度等比缩放,Width取值范围1-9999。
/thumbnail/x 指定目标图片高度,宽度等比缩放,Height取值范围1-9999。
/thumbnail/x 等比缩放,比例值为宽缩放比和高缩放比的较小值,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高
/thumbnail/!xr 等比缩放,比例值为宽缩放比和高缩放比的较大值,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高
/thumbnail/x! 按指定宽高值强行缩略,可能导致目标图片变形,width和height取值范围1-9999。
/thumbnail/x> 等比缩小,比例值为宽缩放比和高缩放比的较小值。如果目标宽和高都大于原图宽和高,则不变,Width 和 Height 取值范围1-9999。注意:宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高;
/thumbnail/x< 等比放大,比例值为宽缩放比和高缩放比的较小值。如果目标宽(高)小于原图宽(高),则不变,Width 和 Height 取值范围1-9999。注意: 宽缩放比:目标宽/原图宽   高缩放比:目标高/原图高;
/thumbnail/@ 按原图高宽比例等比缩放,缩放后的像素数量不超过指定值,Area取值范围1-24999999。

注意:
- 处理后的图片 Width 和 Height 范围1-9999,总像素小于2500万像素。
- 处理前的图片 Width 和 Height 范围1-29999,总像素不超过 2 亿像素。

裁剪操作 crop

裁剪操作参数表 (cropsize)

参数名称 必填 说明
/crop/x 指定目标图片宽度,高度不变。取值范围为0-10000。
/crop/x 指定目标图片高度,宽度不变。取值范围为0-10000。
/crop/x 同时指定目标图片宽高。取值范围为0-10000。

裁剪偏移参数表 (cropoffset)

参数名称 必填 说明
/crop/!{cropsize}aa 相对于偏移锚点,向右偏移dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。
/crop/!{cropsize}-a 相对于偏移锚点,从指定宽度中减去dx个像素,同时向下偏移dy个像素。取值范围不限,小于原图宽高即可。
/crop/!{cropsize}a- 相对于偏移锚点,向右偏移dx个像素,同时从指定高度中减去dy个像素。取值范围不限,小于原图宽高即可。
/crop/!{cropsize}-- 相对于偏移锚点,从指定宽度中减去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

查看效果图

你可能感兴趣的:(从0到1搭建自己的图片服务器--预告篇(Nginx+Lua+GraphicsMagick))