搭建带lua模块的nginx调用ImageMagick工具实现实时剪切缩放图片功能
一、安装LuaJIT。
10年的民丰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整民丰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“民丰网站设计”,“民丰网站推广”以来,每个客户项目都认真落实执行。
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar xf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make
make install
设置环境变量,设置后不要切换控台,否则会失效。
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
做软链接,并加载模块
ln -s /usr/local/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2
ldconfig
二、安装ImageMagick工具。
用yum装就行了,挺方便的。
yum install -y ImageMagick
三、下载nginx以及ngx_devel_kit和nginx_lua_module模块,解压到指定路径。如果本机已装有nginx请忽略下载安装nginx。
wget http://nginx.org/download/nginx-1.12.0.tar.gz
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc5.tar.gz
tar xf nginx-1.12.0.tar.gz && tar xf v0.3.0.tar.gz && tar xf v0.10.9rc5.tar.gz
四、编译安装nginx,如果本机已装有nginx请忽略安装,但需要重新编译,然后将老nginx执行文件备份,并把新的弄过去。
./configure --prefix=/usr/local/nginx \
--add-module=(你的解压路径)/ngx_devel_kit-0.3.0 \
--add-module=(你的解压路径)/lua-nginx-module-0.10.9rc5
(本机如果已经装了nginx的,要把你nginx曾经编译的参数也加上)
make
没有装nginx的,直接make install装了的,参考/upload/otherpic53/42291.com$' {
root /opt/qikanjpg;
}
location ~ '/pdgpath/([0-9a-z_]+)\@([0-9]+)x([0-9]+)\.(gif|jpg|png|jpeg)$' {
root /opt/qikanjpg;
set $p_w_picpath_root '/opt/qikanjpg/pdgpath';
set $fileName $1;
set $width $2;
set $height $3;
set $origin $p_w_picpath_root/$fileName.jpg;
set $file_1 $p_w_picpath_root/${fileName}@${width}x${height}.jpg;
if (!-f $file_1) {
rewrite_by_lua '
local comd = "convert -sample "..ngx.var.width.."x"..ngx.var.height.." "..ngx.var.origin.." "..ngx.var.file_1;
os.execute(comd);
';
}
}
location ~ '/pdgpath/([0-9a-z_]+)\@([0-9]+)x([0-9]+)_f\.(gif|jpg|png|jpeg)$' {
root /opt/qikanjpg;
set $p_w_picpath_root '/opt/qikanjpg/pdgpath';
set $fileName $1;
set $width $2;
set $height $3;
set $origin $p_w_picpath_root/$fileName.jpg;
set $file $p_w_picpath_root/${fileName}@${width}x${height}_f.jpg;
if (!-f $file) {
rewrite_by_lua '
local command = "convert -strip -quality 80% -resize "..ngx.var.width.."x"..ngx.var.height.."^ -gravity center -crop "..ngx.var.width.."x"..ngx.var.height.."+0+0 "..ngx.var.origin.." "..ngx.var.file;
os.execute(command);
';
}
}
七、访问图片,进行测试。
以上面的配置文件,在/opt/qikanjpg/pdgpath/放一个1.jpg。
原图http://(your_server_ip):(your_server_port)/pdgpath/1.jpg
按宽和高较小值等比缩放原图http://(your_server_ip):(your_server_port)/pdgpath/1@宽x高.jpg
按宽和高较大值等比缩放原图再从中间切一次宽和高那么大一个区域http://(your_server_ip):(your_server_port)/pdgpath/1@宽x高_f.jpg
更多的切割功能,请convert --help查看自行琢磨,然后添加到local command =里面就行了。
网站题目:搭建带lua模块的nginx调用ImageMagick工具实现实时剪切缩放图片功能
本文链接:http://scyanting.com/article/gejggj.html