搭建带lua模块的nginx调用ImageMagick工具实现实时剪切缩放图片功能
admin
2023-03-20 01:21:21
0

一、安装LuaJIT。

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装了的,参考https://cache.yisu.com/upload/information/20200309/32/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 =里面就行了。

相关内容

热门资讯

五一票房冠军是惊悚片,“下沉市... 【文/新潮观鱼】今年“五一”档,有一个有意思的现象:一部看起来没有“爆款相”,演员和导演都没有很大票...
“几轮博弈后,特朗普发现:中国... 【文/观察者网 王一】当地时间5月9日,英国《金融时报》发长文分析称,在美国与中国围绕贸易、科技、地...
拒不付款,还对监控嚣张“比耶” 近日,广东梅州丰顺县一名男子加油逃单后,同行人对监控嚣张“比耶”。今天(5月10日),南都N视频记者...
演员张静初,面临被起诉 近日,多位在演员张静初直播间购买过“优思益”产品的网友表示,目前仍未拿到退款,陷入退货无门的境地。5...
90分钟16条,特朗普的社媒账... 周六下午,特朗普将他的Truth Social账号变成了“AI垃圾工厂”,在短短90分钟内发布了16...
我,22岁,确诊为“妈” 又是一年母亲节。每年今天,大家都试图再次看见母亲,讨论她们的付出与局限,以“成为母亲”为界限,划分她...
重达11000克拉!缅甸发现“... 【环球网报道】美国哥伦比亚广播公司、英国天空新闻网等媒体援引缅甸官方媒体8日消息报道称,缅甸发现一块...
玻璃缝隙漏水怎么处理 1、检查窗户玻璃附近墙体的防水层,重新做防水层。2、查找原先的密封物,检查门窗与墙体的密封度,如果密...
热水器侧面的缝隙漏水可以修好吗 问题:热水器侧面的缝隙漏水可以修好吗回答:如果热水器侧面出现缝隙漏水的情况基本上都是可以修好的。首先...
洗面盆和台面缝隙漏水怎么办 洗菜盆漏水的修补方法1、如果是洗菜盆和台面衔接松动:如果是因为洗菜盆安装时没安装好,与台面缝隙过大,...