OpenResty+lua+GraphicsMagick生成缩略图

1、安装GraphicsMagick

下载地址:http://www.graphicsmagick.org/

tar zxvf GraphicsMagick-1.3.20.tar.gz
cd GraphicsMagick-1.3.20./configure
make
make install

安装依赖包Ghostscript,不安装的话加水印会找不到字体

yum install -y ghostscript

2、配置nginx.conf

location /down/PersonImg {
            set $image_root /usr/local/openresty/nginx/html;
            set $file "$image_root$uri";
            rewrite_by_lua ‘
                local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)");
                local originalUri = string.sub(ngx.var.uri, 0, index-2);
                local area = string.sub(ngx.var.uri, index);
                index = string.find(area, "([.])");
                area = string.sub(area, 0, index-1);
                local image_sizes = {"140x140", "800x800", "90x90"};

                function table.contains(table, element)
                    for _, value in pairs(table) do
                        if value == element then
                            return true
                        end
                    end
                    return false
                end
                if table.contains(image_sizes, area) then
                    local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.image_root ..  originalUri  .. " -thumbnail " .. area .. " -gravity center -extent " .. area .. " " .. ngx.var.file;
                    os.execute(command);
                else
                    ngx.exit(401)
                end
            ‘;
            alias /usr/local/openresty/nginx/html/down/PersonImg/;

        }

3、访问
http://10.10.3.221/down/PersonImg/3AFAE457-FDC8-27D3-E2B5-6C10A145A3A6.jpg.90x90.jpg

4、要加水印的话命令如下

/usr/local/GraphicsMagick/bin/gm convert /usr/local/openresty/nginx/html/down/PersonImg/3AFAE457-FDC8-27D3-E2B5-6C10A145A3A6.jpg -font ArialBold -pointsize 45 -fill red -draw "text 10,10 dsideal" /usr/local/openresty/nginx/html/down/PersonImg/3AFAE457-FDC8-27D3-E2B5-6C10A145A3A61111.jpg
时间: 2024-11-05 23:26:40

OpenResty+lua+GraphicsMagick生成缩略图的相关文章

nginx+lua+GraphicsMagick生成实时缩略图-CentOS7

背景 大多数的系统都会涉及缩略图的处理,比如新闻系统和电商系统,特别是电商系统,每个商品大图都会对应一系列尺寸的缩略图用于不同业务场景的使用.部分系统也会生成不同尺寸的缩略图以供PC.手机端.ipad端使用. 解决方案探索: 直接加载原图,使用css样式表来控制图片的宽高.显然不太合适,大家也尽量不要这样做. web程序在上传成功后,同时生成相应缩略图.这种做法效率较低,如果遇到批量导入的业务时严重影响性能.并且同步生成缩略图会占用一定量的存储空间,如果能按需生成岂不更好? 使用七牛.阿里云提供

OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能

http://www.hopesoft.org/blog/?p=1188 2.用法 原始图片是input.jpg,尺寸:160×120 1)只缩小不放大 1 gm convert input.jpg -resize "500x500>" output_1.jpg 加了>,表示只有当图片的宽与高,大于给定的宽与高时,才进行“缩小”操作.生成的图片大小是:160×120,未进行操作如果不加>,会导致图片被比等放大. 2)等比缩图 (缺点:产生白边) 1 gm conver

验证 Openresty+Lua+GraphicsMagick

1 环境准备 1.1 CentOS 安装 Openresty Openresty 的下载及安装请参考:http://openresty.org/cn/. 1.2 安装 GraphicsMagick 源码安装,源码下载地址:https://sourceforge.net/projects/graphicsmagick/. 源码下载后解压,切换到源码目录: ./configure make make install 2 测试代码 代码参考:(linsir/ngx-lua-images)[https:

nginx实时生成缩略图到硬盘上

原文:http://www.ttlsa.com/nginx/nginx-create-image-on-disk/ 现在随着各终端的出现(手机,ipad等平板),以及各种终端的手机分辨率和尺寸都不同,现在手机用户流量都是宝,网上出现了各种各样的生成缩略图功能的架构,有使用php实时生成缩略图的,也有用nginx + lua实现的,上节我也讲到了使用nginx生成缩略图,但是用户每次访问都需要生成一次,会给cpu和硬盘带来比较大的压力,今天带来了另外一种方式,这次使用nginx将原图生成缩略图到硬

openresty+lua在反向代理服务中的玩法

openresty+lua在反向代理服务中的玩法 phith0n · 2015/06/02 10:35 0x01 起因 几天前学弟给我介绍他用nginx搭建的反代,代理了谷歌和维基百科. 由此我想到了一些邪恶的东西:反代既然是所有流量走我的服务器,那我是不是能够在中途做些手脚,达到一些有趣的目的. openresty是一款结合了nginx和lua的全功能web服务器,我感觉其角色和tornado类似,既是一个中间件,也结合了一个后端解释器.所以,我们可以在nginx上用lua开发很多“有趣”的东

openresty && hashids&& redis 生成短链接

1. 原理 a. 从redis 获取需要表示的短链接的id( redis incr) b. hashids 编码 id c. openresty  conteent_by_lua_block 阶段显示数据 2. 安装以来的插件 a. lua hashdis  使用  luarocks 注意需要先安装lua 开发包 b. copy hashids lua 包 到 openresty 的lualib  方便调用 c. redis 安装 luarocks install hashids 3. 代码 n

nginx实时生成缩略图存储到硬盘上

现在随着各终端的出现(手机,ipad等平板),以及各种终端的手机分辨率和尺寸都不同,现在手机用户流量都是宝,网上出现了各种各样的生成缩略图功能的架构,有使用php实时生成缩略图的,也有用nginx + lua实现的,上节我也讲到了使用nginx生成缩略图,但是用户每次访问都需要生成一次,会给cpu和硬盘带来比较大的压力,今天带来了另外一种方式,这次使用nginx将原图生成缩略图到硬盘上.看我的配置 1.首先创建好cache目录 [[email protected] ~]# mkdir -p /d

使用nginx+lua+GraphicsMagick实现图片自动 裁剪

在做网站尤其是以内容为主的过程中,常常会遇到一张图片各种地方都要引用,且每个引用的地方要求的图片尺寸都不一样的.一般中大型的网站都会对这一类的图片做自动裁剪功能.本文介绍在centos6操作系统上,采用nginx.lua和GraphicsMagick工具简单实现图片的自动裁剪功能.其中nginx负责展示图片和调度lua脚本,GraphicsMagick负责对原图进行裁剪. 一.基础软件包安装groupadd wwwuseradd -g www www -s /bin/falseyum -y in

生成缩略图时报GDI+中发生一般性错误

最近由于业务需要要写一个生成缩略图并能设置图片质量的功能,本来这是一件so easy的事,以前也干过,可是却遇到了问题.话不多说先看代码 /// <summary> /// 等比生成缩略图 /// </summary> /// <param name="originalImagePath">源图路径(物理路径)</param> /// <param name="thumbnailPath">缩略图路径(物理