图片自动裁剪

Tengine + Lua + GraphicsMagick 实现图片自动裁剪/缩放

时光毁灭记忆、已成空白 提交于 2019-11-28 09:54:08
一、背景 随着互联网的快速发展、需求频繁变更、内容数量的俱增、时间的持续增长,图片数量也会越来越多。在实际需求中,会出现在若干个页面或同一个页面不同位置,展示同一条信息以及其缩略图。在这时,如果使用 CSS 控制图片显示的大小,对于那些与该位置不成比例的图片,缩小后就会出现图片变形。也不可能让编辑人员,对所有的图片进行 PS,这时候就产生了强烈的自动化裁剪、缩放图片的需求,来适应不同规格的缩略图。 Nginx 虽然有自带的 image filter module 也能实现此功能,但是有弊端: image filter module 使用的是 GD,GD 性能、效率、处理后的图片质量不如 GraphicsMagick image filter module 没法真正生成裁剪/缩放后的图片,而是通过 Nginx 直接输出的,这样每次请求或缓存过期后都需要重新裁剪/缩放,这样无疑会增加 Nginx 负担 二、系统环境 操作系统 CPU 内存 磁盘及分区 三、软件准备 Tengine: https://github.com/alibaba/tengine Lua: http://www.lua.org/ftp/ LuaJIT: http://luajit.org/download.html libjpeg、libjpeg-devel libpng、libpng-devel giflib