lua tengine Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放
lua tengine Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放
图片处理需求
解决方案 根据请求指定尺寸的图片自动生成响应的缩略图片
技术介绍
gine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。它的目的是打造一个高效、安全的Web平台。 是一个小巧的脚本语言。是巴西里约热内卢天主教大学( of Rio de )里的一个研究小组,由 、 Celes 和 Luiz de 所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。由标准C编写而成lua tengine Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放,几乎在所有操作系统和平台上都可以编译,运行。并没有提供强大的库,这是由它的定位决定的。所以不适合作为开发独立应用程序的语言。 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得在应用程序中可以被广泛应用。不仅仅作为扩展脚本lua tengine,也可以作为普通的配置文件,代替XML,ini等文件格式,并且更容易理解和维护。 由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译lua tengine Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放,运行。 一个完整的解释器不过200klua tengine,在目前所有脚本引擎中,的速度是最快的。这一切都决定了是作为嵌入式脚本的最佳选择。 号称图像处理领域的瑞士军刀。 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作lua tengine,支持超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。
安装配置
依赖包和类库,可以使用yum安装
安装
安装Lua(源码编译安装)安装 (源码编译安装)检测是否安装成功
--=/usr/local/ --dso-path=/usr/local// --with- --with-ule --with-ule --with- --with- --http-proxy-temp-path=/var/tmp// --http--temp-path=/var/tmp// --http-uwsgi-temp-path=/var/tmp// --http-scgi-temp-path=/var/tmp// --http--body-temp-path=/var/tmp// --http-log-path=/var/log//.log --error-log-path=/var/log//error.log 启动
成功页面
进入GM源码目录,使用配置安装路径以及需要安装的模块安装GM(源码编译安装)验证是否安装成功
配置
= "/usr/local//bin/gm " .. ngx.var. .. " - " .. ngx.var.width .. "x" .. ngx.var. .. " + \"*\" " .. ngx.var. .. "_" .. ngx.var.width .. "x" .. ngx.var. .. "." .. ngx.var.ext;
os.();
ngx.exec(ngx.var.); ;
user root; # 裁剪图片需要root权限
1;
# logs/error.log;
# logs/error.log ;
# logs/error.log info;
#pid logs/nginx.pid;
{
1024;
# load as (DSO)
#dso {
# load ule.so;
# load ule.so;
#}
http {
mime.types;
/octet-;
# main '$ - $
$
"$" '
# '$ $ "$" '
# '"$" "$"';
# logs/.log main;
on;
# on;
# 0;
65;
#gzip on;
{
80;
root /data/itrip/;
/ {
root /data/itrip/; # 站点根目录
1h; # 缓存时间
Cache- max-age=3600; # 缓存时间
/var/log//.log;
# 如果 url 格式如:xxxx.gif_数字x数字.gif
~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ {
# 这里必须设置,否则根目录,即 $ 会是 Nginx 默认的 Nginx Root/html,在Lua中会得不到期望的值
root /data/itrip/;
if (!-f $) { # 如果文件不存在时才需要裁剪
X--By 'Lua '; # 此HTTP 无实际意义,用于测试
file-path $; #此HTTP 无实际意义,用于测试
on; # 在编写外部 Lua脚本时,设置为off Nginx不会缓存 Lua,方便调试
set $ /data/itrip/$1; #设置原始图片路径,如://1.gif
set $width $3; # 设置裁剪/缩放的宽度
set $ $4; # 设置裁剪/缩放的高度
set $ext $5; # 图片文件格式后缀
/usr/local//lua/.lua; # 加载外部 Lua 文件
# koi8-r;
# logs/host..log main;
# / {
# root html;
# index index.html index.htm;
#}
# 404 /404.html;
# error pages to the page /50x.html
500 502 503 504 /50x.html;
= /50x.html {
root html;
# proxy the PHP to on 127.0.0.1:80
# ~ \.php$ {
# ;
#}
# pass the PHP to on 127.0.0.1:9000
# ~ \.php$ {
# root html;
# 127.0.0.1:9000;
# index.php;
# /$;
# ;
#}
# deny to . files, if 's root
# with nginx's one
# ~ /\.ht {
# deny all;
#}
# host using mix of IP-, name-, and port-based
# {
# 8000;
# :8080;
# alias .alias;
# / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS
# {
# 443 ssl;
# ;
# cert.pem;
# cert.key;
# :SSL:1m;
# 5m;
# HIGH:!aNULL:!MD5;
# phers on;
# / {
# root html;
# index index.html index.htm;
# }
#}
- 随机文章
- 热门文章
- 热评文章